Documentation

Start offline. Scale when you're ready.

PrimeTime 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 PrimeTime Server yourself with the same single-container pattern we use across StreetFortress.

Overview

PrimeTime 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 PrimeTime at a PrimeTime Server you host. The server is built from Traggo Server internals and extended for the PrimeTime workflow; the app is the same either way.

APP

PrimeTime

macOS menu bar · offline-first

SERVER · OPTIONAL

PrimeTime Server

Multi-user · multi-device sync

EDGE

Caddy

TLS + reverse proxy

Install PrimeTime

Download the latest signed build and drag it to /Applications. On first launch PrimeTime lives in the menu bar and is ready to track — no configuration needed.

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

# …or grab the .dmg from the releases page and drag to /Applications

PrimeTime has no dock icon — look for the flaming clock in the menu bar.

Label your time

PrimeTime'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.

Export your data

Your history is yours. PrimeTime 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
primetime 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 PrimeTime Server

Want your labels and history on every device, or shared across a team? Run PrimeTime Server. It ships as a single container — SQLite is perfect for a personal server; point the PRIMETIME_DATABASE_* variables at Postgres for multi-user teams.

primetime-server-compose.yaml
services:
    primetime-server:
        image: primetime/server:latest
        restart: unless-stopped
        container_name: primetime-server
        environment:
            - PRIMETIME_DEFAULT_USER_NAME=admin
            - PRIMETIME_DEFAULT_USER_PASS=change-me
            # sqlite for a personal server; Postgres for teams
            - PRIMETIME_DATABASE_DIALECT=sqlite3
            - PRIMETIME_DATABASE_CONNECTION=/data/primetime.db
        volumes:
            - ./data:/data
        networks:
            - caddy_network
networks:
    caddy_network:
        driver: bridge
bash
mkdir -p ~/primetime/data
# copy the compose file to ~/primetime-server-compose.yaml, then:
nerdctl compose -f ~/primetime-server-compose.yaml up -d

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

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

Connect your devices

  1. 1 In PrimeTime, open Settings → Sync and enter your server URL (https://primetime.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 PrimeTime Server volume
tar czf ~/backups/primetime-$(date +%F).tar.gz -C ~/primetime data

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

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