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.
# Homebrew cask (recommended)
brew install --cask sf1tzp/tap/primetime
# …or grab the .dmg from the releases page and drag to /ApplicationsPrimeTime 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.
repo: sfi/sfi-website
feat: kb-knowledge-graph
type: review
client: acmeBecause 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.
# export a date range to JSON
primetime export --from 2026-07-01 --to 2026-07-31 --format json > july.jsonSelf-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.
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: bridgemkdir -p ~/primetime/data
# copy the compose file to ~/primetime-server-compose.yaml, then:
nerdctl compose -f ~/primetime-server-compose.yaml up -dThe server listens on :3030. Put Caddy in front for automatic TLS:
primetime.example.com {
encode gzip zstd
reverse_proxy primetime-server:3030
}Connect your devices
- 1 In PrimeTime, open Settings → Sync and enter your server URL (https://primetime.example.com).
- 2 Sign in. Your local history is uploaded and kept in sync from then on.
- 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.)
# 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 -dNeed help? Head to the Help & how-to guides, or see how we use PrimeTime in the case study.