Time tracking daemon for Docker-based projects.
It watches Docker container start/stop events, maps containers to git repos, and records time per project + git branch.
- Rust toolchain (for building/installing)
- Docker (local socket)
- Linux desktop notifications are optional (via
notify-rust/libnotify)
./install.shThis builds and installs the binary with Cargo, creates ~/.timetrackd/config.toml (if missing), and installs the user-level systemd unit.
Enable autostart:
systemctl --user enable timetrackd
systemctl --user start timetrackdcargo install --path .
timetrackd config initStart/stop:
timetrackd start
timetrackd stop
timetrackd statusList active projects:
timetrackd listPause/resume tracking:
timetrackd pause <id>
timetrackd resume <id>
# or omit <id> when run from within the project directory
timetrackd pause
timetrackd resumeReports:
timetrackd today
timetrackd week
timetrackd report --from 2026-01-01 --to 2026-01-31
timetrackd report --branch main
timetrackd report --project my-serviceExport:
timetrackd export --format csv --output out.csv
timetrackd export --format json --output out.json --from 2026-01-01 --to 2026-01-31timetrackd config show
timetrackd config init
timetrackd config pathThe config file lives at ~/.timetrackd/config.toml.
All state is stored under ~/.timetrackd/:
data.json: completed sessions + active projectsconfig.toml: user configurationdaemon.sock: daemon control socketdaemon.pid: PID file used for status checks
See timetrackd.service. The unit runs timetrackd start --foreground as a user service.
cargo fmt
cargo test
cargo run -- start --foreground