Skip to content
v1.0agent-native time + invoicing

A time tracker that meets you where you work.

Hourdini logs hours from Claude, your terminal, or the web. Three surfaces, one truth, multi-currency from day one.

  • One PAT, three surfaces
  • npm-distributed CLI
  • Snapshots, never retroactive
hourdini · cli14:02
$hourdini start "Acme dashboard"
started·acme/dashboard·14:02
# later, from another room…
youlog 20 minutes to Acme dashboard
claudedone. running on Acme · Dashboard. I'll keep watch.
source · CLI + MCPclimcpweb
Onboard

Three commands, three minutes.

Create your account, drop the CLI in your terminal, connect the MCP server to your agent. One personal access token unlocks all three surfaces.

Account
free during beta
CLI distribution
npm
MCP tools
~20 (and growing)
  1. 01
    Sign up

    Free during beta. Email + password, no SSO required.

  2. 02
    Install the CLI

    Two commands. The auth flow opens a browser, mints a PAT, writes to ~/.config/hourdini.

    $ npm i -g hourdini && hourdini auth
  3. 03
    Connect your agent

    Drop the MCP URL into Claude or Cursor. The same PAT authenticates the server.

    $ https://hourdini.app/api/mcp
Log time

From your terminal. From your agent. From the web.

Whatever surface you're already in, Hourdini meets you there. The dashboard never assumes you came from the browser; entries are tagged with their source on the row.

Same data layerOne PATSource-tagged
hourdini · cliterminal
$hourdini start "Acme · API design"
started·acme/api·14:02
claude.app · MCPagent
youstop the timer and add a note about the rate-limit fix
claudestopped at 42m. note attached. ready when you are.
hourdini.app · workspaceweb
webAcme · API designrunning00:42:18
Send invoice

Drafted in two clicks. Frozen forever.

Hourdini drafts the invoice from unbilled time in the client's currency. The moment you send, the line items freeze. Rate edits never quietly rewrite history; the numbers you billed are the numbers that left.

Send formats
PDF · email · link
Status set
draft · sent · paid · overdue · void
Edit on send
frozen
INV-2026-014sent
frozen
DateDescriptionEUR
MAY 03API design review312.50
MAY 04Stripe webhook hardening531.25
MAY 06Migration draft + rollback plan375.00
MAY 07Pairing · auth refactor218.75
4 entries · 11.50 hours€1,437.50
Why Hourdini

Built for one. Honest by design.

The supporting cast. Each one is a position, not a checkbox: opinionated, narrow, and refuses to lie about money or history.

youdraft an invoice for Initech
claudedrafted INV-2026-014.

Agent native

MCP server with ~20 tools. One PAT, full power, no glue code.

EUR
4,500
USD
$3,200
ZAR
R12,000

Multi-currency, no fiction

Reported per native currency, side by side. Never blended into a single converted total.

webweb
clicli
mcpmcp

Three surfaces

Web, CLI, MCP. Same data layer behind every entry. Source-tagged on the row.

  • Acme
  • Initech
  • Soylent
  • Cyberdyne

Multi-client, multi-project

Three to ten clients, one sidebar. Keyboard-switchable, color-coded.

entry · may 03
€125.00/h
invoice · sent
€125.00/h

Snapshots, never retroactive

Rate edits don't rewrite history. A sent invoice freezes its line items.

Sstart
Xstop
⌘Kjump

Keyboard-first

S to start. X to stop. ⌘K for everything else. Mouse optional, by design.

Walkthrough

Ninety seconds, end to end.

From `npm i -g hourdini` to a sent invoice. Real session, no edits.

WATCH · ~90s walkthroughv1.0
Ship the timer

Stop logging hours like it's 2014.

Free during beta. The CLI and MCP server are open source. The web app is a thin layer of comfort over the same primitives.