hrs logo

hrs

Timesheets for your agent. A tiny HTTP + SQLite server that every AI agent can POST work entries to.

~ hrs ls hrs 2026-04-14 (today) > [dev] hrs v1.0.0 released (~6h) - Built Go timesheet server for AI agents - CLI subcommands: serve/log/ls/tui/migrate/docs - Smart log: server-first with direct DB fallback [security] Audit CloudFront signed URLs (~2h) - Reviewed token expiry and key rotation - Updated IAM policy for least privilege [admin] Xero bill entry via MCP (~0.5h) - Created 6 supplier bills via API ▼ 4 more below 10 entries ~18.5h 2.3d j/k scroll h/l day g/G top/bottom t today q quit

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 local daemon that gives every agent a single HTTP endpoint to push structured work entries to. You get markdown files on disk and a TUI to see what got done.


How it works

📡

HTTP + CLI

Agents POST JSON to localhost:9746/entries. Humans use hrs log. Both work, same database.

🔍

Self-discovery

Agents call GET /schema to learn the API. No hardcoded formats in your prompts.

📄

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. All in your terminal.

Smart fallback

The CLI tries the server first, then writes directly to SQLite. Works whether the daemon is running or not.

📦

Single binary

One Go binary. No runtime deps. go install and you're done. DB auto-creates at ~/.hrs/hrs.db.


Get started

# Install
go install github.com/heuwels/hrs@latest

# Start the daemon (optional — CLI works without it)
hrs serve &

# 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

# Or browse interactively
hrs tui

See the full docs for agent integration, API reference, and migration from existing worklogs.