Track what apps you use and how long you spend on them.
This app runs in your terminal and shows you exactly where your time goes during work sessions. Built with Ratatui.
![]()
No Rust installation needed! Download ready-to-use binaries for your platform from GitHub Releases:
Prerequisites: Docker must be installed and running.
Download, make executable on Linux/macOS (chmod +x hustle_tracker-*), and run. The binary will automatically:
1. Generate database credentials (.env file)
2. Start PostgreSQL via Docker Compose
3. Run database migrations
4. Launch the app
Note: On macOS/Windows, you'll also need the daemon binary (hustle_daemon) running in the background.
Copy and paste this into your terminal:
sudo apt update && sudo apt install -y docker.io curl git openssl && curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y && source ~/.cargo/env && cargo install just && git clone https://github.com/adolfousier/hustle-tracker.git && cd hustle-tracker && just run
That's it! The app will start tracking automatically.
brew install git rustup-init && rustup-init -y && source ~/.cargo/env && cargo install just && git clone https://github.com/adolfousier/hustle-tracker.git && cd hustle-tracker && just daemon-start
just viewpowershell -Command "iwr -useb https://raw.githubusercontent.com/adolfousier/hustle-tracker/main/src/scripts/windows_build/windows-install.ps1 | iex"
just viewIf you already have the prerequisites installed:
git clone https://github.com/adolfousier/hustle-tracker
cd hustle-tracker
cargo install just
just run
Done! The app handles everything else automatically.
Once the app is running:
Timeline Feature (v0.4.16+): - Daily view shows a 24-hour colored activity timeline at the bottom - Each hour is colored by your dominant activity category - Weekly and monthly views show daily activity patterns with matching data - See your category colors at a glance (Development=Yellow, Browsing=Blue, Communication=Green, Media=Magenta, Files=Cyan)
The app tracks automatically. Just switch between your programs normally and it records everything.
Run just run and you're done. Everything works in one window.
Available commands for Linux:
just run - Start DB + build + run app (all in one!)just dev - Start DB + run in dev mode (faster builds)just db-up - Start PostgreSQL in Dockerjust db-down - Stop PostgreSQLjust build - Build TUI binary onlyjust build-daemon - Build daemon binary onlyjust clean - Clean all build artifacts and stop DBjust help - Show all available commandsYou need two steps because of how these systems work:
just daemon-startjust viewWhy? On macOS/Windows, if the tracking runs in the dashboard window, it can't see when you switch to other apps. Running it in the background fixes this.
Commands for daemon mode:
just daemon-start - Start trackingjust view - Open dashboardjust daemon-stop - Stop trackingjust daemon-status - Check if runningNote: On macOS/Windows, the daemon runs in the background without needing permissions. The Terminal application itself needs the permissions listed above to monitor your system properly.
Wayland users (Linux):
- Hyprland: Window tracking works out of the box via hyprctl (no extra setup needed).
- GNOME: Install the Window Calls extension for window tracking.
First time running: The app creates secure database credentials automatically. You don't need to configure anything.
Want the app to start automatically when you log in? The daemon binary runs in the background without needing a terminal.
Linux (Desktop Autostart):
mkdir -p ~/.local/bin ~/.config/autostart
cp target/release/hustle_daemon ~/.local/bin/
cp src/scripts/startup/neura-tracker.desktop ~/.config/autostart/
If your ~/.local/bin is not in $PATH, edit the .desktop file and set the full path in the Exec= line.
Linux (systemd user service - alternative):
mkdir -p ~/.local/bin ~/.config/systemd/user
cp target/release/hustle_daemon ~/.local/bin/
cp src/scripts/startup/neura-tracker.service ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now neura-tracker
macOS:
cp target/release/hustle_daemon /usr/local/bin/
mkdir -p ~/Library/LaunchAgents/
cp src/scripts/startup/neura-tracker.plist ~/Library/LaunchAgents/
launchctl load ~/Library/LaunchAgents/neura-tracker.plist
Windows:
copy src\scripts\startup\neura-tracker.bat "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\"
Want to remove Hustle Tracker completely? It will delete the app, all tracked data, and the database volume.
Linux/macOS:
just uninstall
Or use the dedicated script:
./src/scripts/uninstall.sh
Windows:
From PowerShell in the app directory:
just uninstall
Or download and run the uninstall script:
powershell -ExecutionPolicy Bypass -File src/scripts/windows_build/windows-uninstall.ps1
You'll be asked twice to confirm:
yes to confirm deletion (this prevents accidental removal)The uninstall will:
| Feature | Hustle Tracker | ActivityWatch | RescueTime |
|---|---|---|---|
| Your data stays with you | ✅ | ✅ | ❌ |
| Open source | ✅ | ✅ | ❌ |
| Works offline | ✅ | ✅ | ❌ |
| Terminal interface | ✅ | ❌ | ❌ |
| Fast & lightweight | ✅ | ❌ | ❌ |
If you see Failed to connect to database or No such file or directory (os error 2):
docker ps should work without errorsdocker ps | grep postgres - if nothing shows up, the database container isn't runningdocker compose up -d (from the project directory) or just re-run the binary - it will auto-start PostgreSQLDATABASE_URL, POSTGRES_USERNAME, and POSTGRES_PASSWORD. If it's missing or corrupted, delete it and re-run the app to regenerate.env file and compose.yml in ~/.local/share/hustle-tracker/ (Linux), ~/Library/Application Support/hustle-tracker/ (macOS), or %APPDATA%\hustle-tracker\ (Windows)just run, the binary will use the existing .env in your project directoryThe app uses port 52851 for PostgreSQL. If another service is using that port:
lsof -i :52851 (Linux/macOS) or netstat -ano | findstr 52851 (Windows).env (DATABASE_URL) and compose.ymlhyprctl automatically. Make sure hyprctl is in your PATH (it is by default on Hyprland).WAYLAND_DISPLAY, XDG_SESSION_TYPE), which can cause window detection to fail. Workarounds:The Terminal application (not the daemon) needs these permissions in System Settings > Privacy & Security: - Accessibility - Screen & System Audio Recording - Input Monitoring
just clean then just run (from source), or delete ~/.local/share/hustle-tracker/ and re-run the binaryjust uninstall to safely delete everythingFound a bug or want to add something? Check CONTRIBUTING.md.
See LICENSE file for details.
⭐ Star this repository to keep up with exciting updates and new releases, including powerful new features and productivity tracking capabilities! ⭐
Built with ❤️ by Adolfo Usier | Issues
$ claude mcp add hustle-tracker \
-- python -m otcore.mcp_server <graph>