hrs logo

hrs

Timesheets for your agent. A CLI backed by SQLite that any AI agent can call to log work.

hrs demo — CLI and TUI walkthrough

The problem

You run a dozen AI agents across different repos. At 5pm you have no idea what happened today. Each agent is sandboxed to its own working directory and can't write to a shared worklog.

The fix

hrs is a CLI that any agent can call to log structured work entries. You get a SQLite database, markdown files on disk, and a TUI to see what got done.


How it works

📦

Single binary

Pure Go, no CGo. Download a prebuilt binary or go install. DB auto-creates at ~/.hrs/hrs.db.

CLI-first

hrs log works from any directory. Tell your agent to call it and you're done. No daemon, no config.

📄

Markdown on disk

Every entry lands in SQLite and renders to daily markdown files. Human-readable, git-friendly, grep-able.

🖥

Terminal UI

Vim-style TUI to browse entries by day. Scroll with j/k, switch days with h/l, delete with d. All in your terminal.

🔍

Query and export

Filter by date range and category. Export as JSON or CSV. Pipe hrs ls --format json into anything.

📡

Optional HTTP server

Run hrs serve for agents that can't shell out, browser extensions, or webhook integrations. The CLI auto-detects it.


Get started

1. Install

# Download a binary (easiest)
# → darwin_arm64, darwin_amd64, linux_amd64, linux_arm64

# or via Go (needs $(go env GOPATH)/bin on your PATH)
go install github.com/heuwels/hrs@latest

Download the latest release →

2. Use it

# Log from any agent or terminal
hrs log -c dev -t "built auth flow" -b "oauth2 pkce;token refresh;tests" -e 3

# See what happened today
hrs ls

# Browse interactively
hrs tui

3. Tell your agent

Add to your CLAUDE.md, .cursorrules, or equivalent:

After completing significant work, log it with `hrs log`.
Run `hrs log -h` to discover the flags.

Log proactively. Don't wait to be asked.

Zero config. Data goes to ~/.hrs/hrs.db automatically. See the full docs for agent integration, API reference, and all CLI commands.