Start offline. Scale when you're ready.

Moment Tally is an offline-first macOS menu-bar app — install it and start tracking immediately, no account and no server required. When you want multi-device or multi-user, run Moment Tally Server yourself with the same single-container pattern we use across StreetFortress.

Overview

Moment Tally runs entirely on your Mac. Timers, labels, and notes are stored locally and work with no network — there's nothing to sign up for. When you're ready for multi-device or multi-user use, point Moment Tally at a Moment Tally Server you host. The server is built from Traggo Server internals and extended for the Moment Tally workflow; the app is the same either way.

APP

Moment Tally

macOS menu bar · offline-first

SERVER · OPTIONAL

Moment Tally Server

Multi-user · multi-device sync

EDGE

Caddy

TLS + reverse proxy

Install Moment Tally

Install with Homebrew — or download the latest notarized build from GitHub releases and drag MomentTally.app to /Applications. On first launch Moment Tally lives in the menu bar and is ready to track — no configuration needed.

bash
# Homebrew cask (recommended)
brew install --cask sf1tzp/tap/moment-tally

# …or unzip the release .zip and drag MomentTally.app to /Applications

Moment Tally has no dock icon — look for the timer icon in the menu bar; it turns into a running count while a timer is live. Updates arrive in-app via Sparkle.

Label your time

Moment Tally's label system is inspired by Prometheus metrics: instead of one rigid hierarchy, you attach key: value dimensions to a span. Keys are lower-cased with spaces turned into dashes; missing keys are created automatically. Group them into label sets with their own colors and launcher icons.

labels
repo:    sfi/sfi-website
feat:    kb-knowledge-graph
type:    review
client:  acme

Because time is dimensioned rather than filed, you can later query it across any axis — by repo, by client, by kind of work — without having decided the hierarchy up front.

Naming things is the hard part. Which keys, which values, and the failure modes to avoid are covered in What makes a good labeling schema.

Export your data

Your history is yours. Moment Tally exports to JSON first — a format that's trivial to inspect, diff, and write custom connectors against — so you can feed bookkeeping tools or join spans to source control.

bash
# export a date range to JSON
moment-tally export --from 2026-07-01 --to 2026-07-31 --format json > july.json
JSON first, more to follow. We target JSON to maximize interoperability; additional formats build on the same exported structure.

Self-host Moment Tally Server

Want your labels and history on every device, or shared across a team? Run Moment Tally Server. It ships as a single container backed by SQLite.

moment-tally-server-compose.yaml
services:
    moment-tally-server:
        image: momenttally/server:latest
        restart: unless-stopped
        container_name: moment-tally-server
        environment:
            - MOMENTTALLY_DEFAULT_USER_NAME=admin
            - MOMENTTALLY_DEFAULT_USER_PASS=change-me
            - MOMENTTALLY_DATABASE_DIALECT=sqlite3
            - MOMENTTALLY_DATABASE_CONNECTION=/data/momenttally.db
        volumes:
            - ./data:/data
        networks:
            - caddy_network
networks:
    caddy_network:
        driver: bridge
bash
mkdir -p ~/momenttally/data
# copy the compose file to ~/moment-tally-server-compose.yaml, then:
nerdctl compose -f ~/moment-tally-server-compose.yaml up -d

The server listens on :3030. Put Caddy in front for automatic TLS:

Caddyfile
momenttally.example.com {
    encode gzip zstd
    reverse_proxy moment-tally-server:3030
}
Change the defaults. Set a real MOMENTTALLY_DEFAULT_USER_PASS before exposing the server, and rotate it after your first login.

Connect your devices

  1. 1 In Moment Tally, open Settings → Sync and enter your server URL (https://momenttally.example.com).
  2. 2 Sign in. Your local history is uploaded and kept in sync from then on.
  3. 3 Repeat on any other Mac — every device shares the same labels, spans, and label sets.

Backups & upkeep

On a self-hosted server, all of your data is the database plus its volume. Back up the ./data directory on a schedule and you can restore the entire history anywhere. (Running app-only? Your JSON export is your backup.)

bash
# nightly snapshot of the Moment Tally Server volume
tar czf ~/backups/momenttally-$(date +%F).tar.gz -C ~/momenttally data

# update to the latest server image
nerdctl compose -f ~/moment-tally-server-compose.yaml pull
nerdctl compose -f ~/moment-tally-server-compose.yaml up -d

Need help? Head to the Help & how-to guides, or see how we use Moment Tally in the case study.