| Crates.io | tempo-cli |
| lib.rs | tempo-cli |
| version | 0.4.0 |
| created_at | 2025-11-19 07:45:33.823783+00 |
| updated_at | 2025-12-06 20:31:15.549064+00 |
| description | Automatic project time tracking CLI tool with beautiful terminal interface |
| homepage | https://github.com/own-path/tempo |
| repository | https://github.com/own-path/tempo |
| max_upload_size | |
| id | 1939587 |
| size | 928,134 |
Simple, Fast, and Privacy-Focused Time Tracking for Developers
Tempo is a lightweight, terminal-based time tracking tool designed specifically for developers. It automatically detects your project context, tracks time with precision, and stores everything locally. No cloud services, no subscriptions, just a fast binary that gets out of your way.
Tempo automatically recognizes project roots by looking for common markers:
.git/package.jsonCargo.tomlpyproject.toml / requirements.txtgo.modpom.xmlGenerate detailed reports to analyze your productivity or for billing purposes:
A full-featured Terminal User Interface (TUI) offering:
Tempo follows a Client-Daemon architecture to ensure reliability and speed.
graph LR
CLI[Tempo CLI] -- Unix Socket --> Daemon[Tempo Daemon]
Daemon -- Reads/Writes --> DB[(SQLite DB)]
Daemon -- Monitors --> System[System Activity]
~/.tempo/data.db.The easiest way to install Tempo is via pip or uv. The Python package automatically installs the Rust binary for your platform.
# Fast installation with uv
uv add tempo-tracker-cli
# Or using standard pip
pip install tempo-tracker-cli
If you have a Rust toolchain installed, you can install directly from crates.io or build from source.
# Install from crates.io
cargo install tempo-cli
# Or build from source
git clone https://github.com/own-path/tempo.git
cd tempo
cargo build --release
cargo install --path .
Tempo is distributed as two packages:
tempo-tracker-cli - Provides easy installation and automatically manages the Rust binarytempo-cli - The core application binaryBoth packages install the same tempo command-line tool. Choose Python for convenience or Rust for building from source.
Start the Daemon
tempo start
Initialize a Project Navigate to your project folder and tell Tempo to track it.
cd ~/my-cool-project
tempo init "My Cool Project"
Start Tracking
tempo session start
Tempo will confirm that tracking has started for "My Cool Project".
Check Status
tempo status
View the Dashboard
tempo dashboard
| Command | Description |
|---|---|
tempo session start |
Start tracking time for the current project. |
tempo session stop |
Stop the current session. |
tempo session pause |
Pause the current session (useful for breaks). |
tempo session resume |
Resume a paused session. |
tempo session current |
Display details of the active session. |
tempo session list |
Show a history of recent sessions. |
tempo session edit <id> |
Modify a past session (e.g., fix start/end times). |
tempo session delete <id> |
Permanently remove a session. |
| Command | Description |
|---|---|
tempo init "<Name>" |
Initialize tracking for the current directory. |
tempo list |
List all tracked projects. |
tempo project archive <id> |
Archive a project (hides it from default lists). |
tempo project update-path |
Update the path if you moved the project folder. |
Generate reports to visualize your time usage.
# Standard ASCII report
tempo report
# Export to CSV for Excel/Numbers
tempo report --format csv > timesheet.csv
# Filter by date
tempo report --from 2024-01-01 --to 2024-01-31
# Filter by project
tempo report --project "My Cool Project"
tempo dashboard: The main command center. View active sessions, switch projects, and see daily stats.tempo timer: A focused, full-screen timer view. Great for keeping on a secondary monitor.tempo history: An interactive browser for your session history.Tempo is highly configurable. Settings are stored in ~/.tempo/config.toml.
You can view and modify settings via the CLI:
# View current config
tempo config show
# Set a value
tempo config set idle_timeout_minutes 10
| Key | Type | Default | Description |
|---|---|---|---|
idle_timeout_minutes |
Number | 30 |
Minutes of inactivity before auto-pausing. |
auto_pause_enabled |
Boolean | true |
Whether to enable auto-pause functionality. |
default_context |
String | "terminal" |
Default tag for sessions (terminal, ide, manual). |
max_session_hours |
Number | 48 |
Safety limit to auto-stop extremely long sessions. |
backup_enabled |
Boolean | true |
Enable automatic database backups. |
log_level |
String | "info" |
Log verbosity (error, warn, info, debug). |
If tempo start fails, check if a stale PID file exists:
rm ~/.tempo/daemon.pid
tempo start
This usually means the daemon isn't running. Start it with:
tempo start
If you see boxes [] or ? instead of icons, ensure you are using a Nerd Font in your terminal emulator.
We welcome contributions! Whether it's bug reports, feature requests, or code, your help is appreciated.
git checkout -b feature/amazing-feature).See CONTRIBUTING.md for detailed guidelines.
Releases are fully automated via release-plz:
main triggers simultaneous publication to both crates.io and PyPIThis project is licensed under the MIT License. See the LICENSE file for details.