An open-source time-tracking tool for monitoring your productivity with privacy-first approach. Own your hustle, optimize those "grind sessions," and uncover inefficiencies. Built with Ratatui.
237
stars
82
commits
Rust
primary language
Mar 16, 2026
updated
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:
.env file)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+):
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 runningComputer: Windows 10+, macOS 10.15+, or Linux with a desktop
Space: About 500MB for Docker and dependencies
Permissions:
Note: 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):
hyprctl (no extra setup needed).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:
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
Rust
93.5%
PowerShell
3.3%
Just
2.2%
An open-source time-tracking tool for monitoring your productivity with privacy-first approach. Own your hustle, optimize those "grind sessions," and uncover inefficiencies. Built with Ratatui.
237
stars
82
commits
Rust
primary language
Mar 16, 2026
updated
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:
.env file)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+):
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 runningComputer: Windows 10+, macOS 10.15+, or Linux with a desktop
Space: About 500MB for Docker and dependencies
Permissions:
Note: 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):
hyprctl (no extra setup needed).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:
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
Rust
93.5%
PowerShell
3.3%
Just
2.2%