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 waitlistSitting 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_doHow's today looking?
today_summaryFind the Lumen entries from last week
search_entriesHow long has KES-431 taken?
list_tasks · task_timeIs a timer running? What's planned?
timer_status · list_planned
Changeeach with Undo
Log an hour to Lumen for the review
log_time · update_entry · delete_entryStart a timer on KES-431
start_timer · stop_timerAdd a task to fix the login bug
create_task · update_task · complete_taskPut this morning's entries on that task
link_entries_to_taskPlan three hours for Kestrel on Thursday
plan_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-mcpTitles 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.