Skip to content

Your agents work. You get the hours.

Hourbrook notices when Claude Code, Codex or a build is busy and counts the wait as your work. It shows agent time per repository, picks issue keys out of your branches, and answers Claude when you ask what you did.

No download yet: join the waitlist and get one email when it's ready.

Join the waitlist

Sitting still while it runs is work

You hand a task to Claude Code and watch it go. Most trackers see a still keyboard and call it idle. Hourbrook looks at whether the agent, or whatever it started (tests, a build, a deploy), is using the CPU, and keeps counting for up to three hours.

An agent sitting at its prompt doesn't count; one thinking, streaming or running tools does. Besides CPU use, Hourbrook reads when their session logs were last written and which folder they work in (for Codex, from the first line of its session log). Never the conversation.

Claude Code time tracking

Token counters say what a session cost. Hourbrook says how long you worked and on which repository. Say yes to Coding agent sessions (off until you do; the Day offers it once, and it's one switch in Settings › Privacy) and Claude Code and Codex each get a lane on the Day, named by repository and branch, with a line under each Week day and Agent time by repo in Reports.

From their logs it reads when each session worked, its folder, branch, prompt count and kinds of tools. Never what you or the agent wrote, and not a chat's name. Agent time stays on your screen; it's never in a PDF or CSV you send.

The full guide to Claude Code time tracking, and how to bill clients for it.

Ask Claude what you did

Hourbrook comes with a small MCP server that runs on your Mac. Connect Claude Code, Claude Desktop or Cursor from Settings › AI, then ask in plain words: what did I do yesterday, how long has KES-431 taken, log an hour to Lumen, start a timer.

Every change Claude makes shows at the bottom of the Hourbrook window with Undo.

What Claude can do

Say it in your own words; Claude picks the tool. Reads answer only from what you logged, and every change can be undone in the app.

Askreads only

  • What did I do yesterday?what_did_i_do
  • How's today looking?today_summary
  • Find the Lumen entries from last weeksearch_entries
  • How long has KES-431 taken?list_tasks · task_time
  • Is a timer running? What's planned?timer_status · list_planned

Changeeach with Undo

  • Log an hour to Lumen for the reviewlog_time · update_entry · delete_entry
  • Start a timer on KES-431start_timer · stop_timer
  • Add a task to fix the login bugcreate_task · update_task · complete_task
  • Put this morning's entries on that tasklink_entries_to_task
  • Plan three hours for Kestrel on Thursdayplan_time · delete_planned

Don't take our word for it

No port, no network

Claude starts hourbrook-mcp, a small helper inside the app. It talks to Hourbrook through a socket file in its own folder, which only your user can open.

ls -l ~/Library/Application Support/Hourbrook/hourbrook.sock
lsof -a -c hourbrook-mcp -i   # empty: no network

List the tools yourself

The helper answers the standard MCP tools/list request on its own, even with the app closed. What you see is all Claude gets.

echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' \
  | /Applications/Hourbrook.app/Contents/MacOS/hourbrook-mcp

Titles are fenced off

Titles come from people and from Linear, GitHub or Jira, so every answer wraps them in <hourbrook-data> markers and tells Claude they are text, never instructions.

You see every change

Anything Claude logs, edits or deletes shows at the bottom of the Hourbrook window with Undo. Window titles and addresses are never in an answer.

Issue keys, picked up on their own

Hourbrook notices keys like KES-512 or #34 in branch names, window titles and the issue pages you open, and offers them in Tasks with the time they were on screen.

Connect Linear or GitHub and you get the issue's real title and the issues assigned to you; a task is checked off when its issue closes. Connect Jira and the entries you log become worklogs on the projects you pick.

Hooks, if you want them

Two optional Claude Code hooks tell the app when a session starts and when you send a prompt. They pass the repository, the branch and the first line of the prompt to Hourbrook on your Mac, so agent time lands on the right task. The prompt isn't kept.

Shortcuts work too: Start timer, Stop timer, Log time, How much today and Task time are all there for your own automations, and the timer has a global shortcut, ⌃⌥⌘T.

An API for what you keep

Entries, projects, plans, reports, invoices and webhooks, with a personal API token. It only has what you chose to sync; activity stays on your Mac.

Read the API reference or take the OpenAPI file.

Questions

Which agents does it notice?

Claude Code and Codex by name, and anything running in a terminal: tests, builds, scripts, deploys.

Does it read my code or prompts?

No. It reads which process is busy, when agent session logs were last written, which folder an agent works in, and in the Claude app the name of the open chat. Never the conversation. The optional hooks pass the first line of a prompt to the app to match a task, and it isn't kept.

Is the MCP server reachable from outside?

The one in the Mac app isn't: it talks to the app over a private connection on your Mac, only while Hourbrook is open. A separate remote connection for claude.ai, which you sign in to, reads your synced entries through Hourbrook's server, never activity.

Can Claude see my window titles?

No. Answers carry logged entries, totals and agent time per repository, plus minutes per app only if you turn that on.

Does it know Claude Desktop chats apart?

Time in the Claude app is named after the chat that's open, on your Mac, so you can log it to the right project.

What about Cursor or VS Code?

They're apps like any other: their window titles carry the file and the project, which is usually all a draft needs.

No download yet. Join the waitlist and we'll send one email when it's ready to install.Join