the purser for your coding agents

No agent writes to your code without your yes.

One local console for the coding agents you already pay for. Gated, recorded, and metered.

For anyone running more than one coding agent.

v0.1.0 ships September 2026. Working today from a clone.

Clone and run

git clone https://github.com/purser-sh/purser cd purser && bun install && bun run dev

A one-line installer ships with v0.1.0. What happens when you run it

Tell me when v0.1.0 ships. One email when it is ready. Nothing else, ever.

Your address is used only to tell you when v0.1.0 ships. Unsubscribe any time. See the privacy policy.

9 agent adapters · 296 tests · Apache-2.0 · runs on your machine

  • runs on your machine
  • loopback only
  • not an editor

Three questions you can't answer right now

  • What is this agent allowed to do, and what stops it?

    Nothing stops it. Agents now run in the background, in parallel, and inside CI. Letting one run and checking the result afterwards is not a control.

  • Which agent changed this file, and who approved it?

    The commit carries a human name. The model, the prompt, the tool call and the review disappear the moment the terminal closes. Nobody can prove what happened.

  • What did all of it cost, in money or in quota?

    Every vendor reports only its own usage. On a subscription there is no dollar figure at all, only the quota you burned and the rest of the week to get through.

01the demo

Someone edited a line out of the audit log. This is the CLI catching it, naming the entry and showing the hash that no longer matches.

purser audit
$ purser audit verify
reading ~/.purser/audit.jsonl
entries 2,418 · 2026-08-01 to 2026-08-24
chain sha256, genesis 0000…
✗ chain broken at audit.jsonl:1104
expected sha256:9b1c4f…
found sha256:2ea770…
run #4471 · claude_code
written 2026-08-24T09:41:22Z
✗ 2,417 of 2,418 entries verified
exit 1
purser audit verifychain broken

02the problem

Nobody can see what their coding agents actually cost. The prompt is the cheap part.

the agent loop

The prompt is a rounding error. Spend happens in the loop: file reads, tool results, context resent every turn, retries.

billed on every turn
  • your promptonce
  • file readsevery turn
  • tool resultsevery turn
  • context resentevery turn
  • retriesbilled again

No vendor shows you the total across the agents you actually use.

~5,000

apps found leaking corporate or personal data. Without a record of what agents did, you cannot even ask which run caused it.

why you need a record
scanned
~380,000
leaking
~5,000

source

RedAccess scan of ~380,000 apps, May 2026

03what it does

How Purser worksidle
your agents
Claude Code
your login
Codex
your login
Cursor CLI
your login
Ollama
local
purser · on your machine
Purserloopback only
01 · approve
—
you decide
→
02 · gate
—
budget + shell
→
03 · record
—
hash-chained
→
04 · meter
—
real tokenizer
what lands
your repo
—
ledger + audit
—
Approvenothing lands without youGatecaps and shell before the stepRecordtamper-evident, verifiableMeterevery token, every agent, one ledger
01

Approve

Every edit is staged as a diff before it is written. You approve it or you reject it, and there is no third path. The approval is enforced by the type system: the only function that can write to your workspace requires a token that only the approval step can create.

02

Gate

Budget caps are checked before every step, not after. Shell access is off by default, and when it is on, each command is classified against an allowlist, with anything unrecognised treated as dangerous and a git restore point taken before it runs.

03

Record

Which agent, which model, which prompt, which file, approved by whom. An append-only ledger and a hash-chained audit log, so edits or truncation are detectable. Verifiable from the command line, in a file you own.

04

Meter

Every token across every agent in one ledger, with a real tokenizer per model. Metered API providers show dollars. Subscription agents show tokens, because your plan price is not knowable from the outside, and we would rather label that than invent a number.

We show dollars only where dollars are real. Metered API providers report in dollars. Subscription agents report tokens, because your plan price is not knowable from the outside. Every figure on your screen is labelled exact or approximate. We would rather tell you what we cannot know than show you a number we made up.

what Purser is not

  • Not an editor.

    Keep the one you have. Purser sits above it.

  • Not a model.

    We sell none of them, which is exactly why we can meter all of them.

  • Not a cloud service.

    It runs on your machine. No account, no telemetry, nothing uploaded.

04why not just use what you already have

Your provider's dashboard was built to show you its own spend, not everyone's.

  • Shows a diff before anything is written

    Purser
    Yes
    Provider dashboard
    Varies by tool
    Nothing
    No
  • Records which agent changed what, and who approved it

    Purser
    Hash-chained log
    Provider dashboard
    No
    Nothing
    No
  • Stops a run before the bill or the quota is gone

    Purser
    Token and USD caps
    Provider dashboard
    No
    Nothing
    No
  • Every agent in one number

    Purser
    Yes
    Provider dashboard
    Only its own
    Nothing
    No
  • Runs entirely on your machine

    Purser
    Yes
    Provider dashboard
    No
    Nothing
    —
  • Price

    Purser
    Free, Apache-2.0
    Provider dashboard
    In your subscription
    Nothing
    Free

No model vendor will ever show you Claude spend next to Codex spend next to Cursor spend. That is not a missing feature. It is a conflict of interest.

05who it is for

Developers

Free, forever.

One person, one machine. See what every agent costs you, cap them before they run away, approve every change before it lands, and keep a record you own.

Everything on this page is in the free version. Apache-2.0, no account, no telemetry.

git clone https://github.com/purser-sh/purser cd purser && bun install && bun run dev

Teams

After v0.1.0.

One budget shared across a team. One audit trail for everyone. Policy set per repository, so a junior developer and a staff engineer do not have the same shell permissions.

Pricing is not decided yet. If your team has this problem, tell me and I will build it with you.

what it costs

Free and open source. Apache-2.0. Runs on your machine.

Purser doesn't resell tokens. You keep your own agent logins and your own bills. It just shows you what they add up to.

No model vendor will ever show you Claude spend next to Codex spend next to Cursor spend in one ledger. That comparison is against their interest.
A team running three agents cannot get one view from any vendor. Purser is that view, and it runs on your machine, not theirs.
one ledgerlocal
  • Claude Code
  • Codex
  • Cursor CLI
  • Gemini CLI

purser ledger

append-only, hash-chained

06agents

Works with the agents you already have logins for. Purser meters them; it does not resell them.

  • Claude Code

    kind
    SDK / CLI
    auth
    your login
    meter
    tokens
  • Codex

    kind
    CLI
    auth
    your login
    meter
    tokens
  • Cursor CLI

    kind
    CLI
    auth
    your login
    meter
    tokens
  • Gemini CLI

    kind
    CLI
    auth
    your login
    meter
    tokens
  • Grok, Perplexity, OpenAI-compatible

    kind
    HTTP
    auth
    your API key
    meter
    metered, real cost
  • Ollama

    kind
    HTTP, local
    auth
    none
    meter
    free
  • Echo

    kind
    fake, for testing
    auth
    none
    meter
    not metered

Subscription agents report tokens, not dollars. Your plan price is not knowable from the outside.

09questions

Does my code leave my machine?
Purser adds no egress of its own. The runner binds to loopback only. Your agents still talk to their own providers, and you choose which ones.
Do I have to change how I work?
No. Same agents, same logins, same repo. Purser sits in front of them.
Does it slow anything down?
No. Metering reads what the provider already reports.
Is this another subscription?
No. Free and open source. You keep paying your existing agent bills, and now you can see them.

08status

Only what has shipped is listed as shipped. In a market full of demos that die on the second prompt, this section is the point.

tracked

17 shipped·6 in build·23 total

74% shipped
shippedin build

shipped

17
  • Local runner: workspaces, sessions, runs, streaming events01
  • Diffs with approve / reject; permission modes ask / auto-edit / bypass with TTL02
  • Nine agent adapters behind one registry03
  • Git worktree per session at HEAD04
  • Append-only token ledger with real per-model tokenizers05
  • Budget governor: token and USD caps, warn / ask / hard stop, pre-run gate06
  • Hash-chained audit log with purser audit verify07
  • Single enforcement points for tool input, workspace writes, display labels, config, and adapter responses08
  • Approval enforced by the type system: workspace writes require a token only the approval step can create09
  • run_bash gated: disabled by default, allowlist classification, git restore point and undo for mutating commands10
  • read_document: PDF, Word, and Excel in the workspace; PowerPoint and images with optional MarkItDown11
  • Voice: push-to-talk with local approve / reject / stop commands; phone pairing through a relay that stores nothing12
  • Drop-folder sync into the workspace inbox13
  • Web console: spend meter, diff cards, budget prompts, settings screen, command palette14
  • Provider readiness and vendor-error translation (protocol v4); provider/model coherence in the ledger15
  • Public-claims test file: each test is named after a claim made on this website16
  • Apache-2.0 license committed; repository public on GitHub17

in build

6
  • Token waste detection: which files a run read more than once, and what that cost01
  • Commit provenance trailers: model, prompt hash, cost and reviewer on every AI-authored commit02
  • Security decision cards for policy rules03
  • Signed binaries, one-line installer, and a tagged v0.1.0 release04
  • Governed database and web-ingest adapters05
  • Hosted team cells06

View full changelog →

Tell me when v0.1.0 ships. One email when it is ready. Nothing else, ever.

Your address is used only to tell you when v0.1.0 ships. Unsubscribe any time. See the privacy policy.