Agentic AI control plane built on open source

Other AI cost tools keep notes. We keep accounts.

Try it now Join the waitlist App coming soon
utusertools Fleet Live
Fleet burn
$8,420.75 per day
1,284Agents
3Held
7Waiting
deploy-agent ·6h
$1,847.20
per day — up 14× since 02:10
0.4dRunway
2 jobsBlocks
ExhaustedBudget
HeldState
1,280 more agents · $5,892.55 per day combined
Control room

God-mode enabled.

  • Green — posted
  • Amber — held
  • Blue — resumed
  • Red — refused

guided demo

Take control

  1. Top up deploy-agent — the hold lifts
  2. Select research-crawl
  3. Pause it — watch it coast
  4. Resume — it spins back up
  5. Open contract-review’s ruling
  6. Refuse the call — red, nothing breaks

raw authoritystorm active

The storm is one authority

Every flash is usertools acting on a live agent  — a post, a hold, a resume, a refusal — across 1,284 loops at once.

None of it asks the agent . The authority sits at the ledger, and anything that spends, it governs.

  • 1,284 loops under one authority
  • 0 messages sent to agents 
  • 1 ledger every agent  spends from
  • 100% of spend, governed

target acquisitionacquiring

Four agents , acquired

The glass tightens from 1,284 loops to the four your app names — found the way they are governed: by spend, never say-so.

The reticle is riding deploy-agent’s cluster: the four loops the next beat hands to your thumbs.

  • TRK 0006:0012 — deploy-agent
  • TRK 0006:0013 — research-crawl
  • TRK 0007:0012 — contract-review
  • TRK 0007:0013 — outbound-seq

power × precisionarmed

Control is both at once

Power reaches every agent ; precision picks out the one. Together they hand you the exact agent , the exact action.

The app that follows is live — its rows are wired to the four loops in the glass. Press things.

  • HOLD — amber; the loop stops
  • RESUME — blue; it spins back up
  • TOP UP — green; runway extends
  • REFUSE — red; the call dies
App coming soon
utusertools Fleet Live
Fleet burn
$8,420.75 per day
1,284Agents
3Held
7Waiting
deploy-agent ·6h
$1,847.20
per day — up 14× since 02:10
0.4dRunway
2 jobsBlocks
ExhaustedBudget
HeldState
1,280 more agents · $5,892.55 per day combined
Engine

Lightning Fast, Built for Scale, Totally Immutable. Period.

usertrust under the hood, with TigerBeetle at its core.

01Lightning fast

Your agents  run at model speed. The check finishes before the call even leaves.

Two orders of magnitude apart, on any hardware. 500K a second is TigerBeetle’s ceiling.

03Totally immutable

Every entry seals the one before it. No edit leaves the chain intact.

Hash-linked, Merkle-proved, anchored past the operator’s reach.

02Built for scale

A thousand agents , one budget. Two that race cannot both overspend.

1,000 concurrent agents , 2,000 calls, zero unaudited.

Blueprint
Wall Street grade infrastructure. Because it’s money. ABCD12345678 assembly — one governed call agent account dr cr operator budget dr cr reserve 1 pending transfer flags PENDING 2 A invariant debits_must_not _exceed_credits 3 tigerbeetle replicated strictly serializable insufficient funds refused · nothing sent 4 provider · the only egress post void settled posted at real cost released hold returned 5 6 08c2…a41f 08c2…8622 next appended on settle merkle inclusion proof 7 the pending window · stopping is free only here 0 4 zones 3 detail  A scale 2:1 tigerbeetle transfer · fields debit_account_id agent credit_account_id operator amount estimate flags PENDING notes 01 spend is a transfer between accounts. it is not a log line, and it is not a metric. 02 the hold is committed to nothing until posted. 03 the invariant is the database’s, not a policy layer’s. 04 a refused call never reaches a provider. 05 two-phase transfer — the primitive a card network uses to authorize a hold. drawing two-phase transfer engine tigerbeetle licence Apache-2.0 rev usertrust 3.4.0
Wall Street grade infrastructure.Because it’s money. ABCDEFGH1234 assembly — one governed call 0 4 zones 3 the pending window · stopping is free only here agent account dr cr operator budget dr cr reserve 1 pending transfer flags PENDING 2 A invariant debits_must_not _exceed_credits 3 tigerbeetle replicated · strictly serializable provider · the only egress insufficient funds refused · nothing sent 4 post void settled posted at real cost 5 released hold returned 6 08c2…a41f 08c2…8622 next appended on settle merkle inclusion proof 7 detail  A scale 2:1 tigerbeetle transfer · fields debit_account_id agent credit_account_id operator amount estimate flags PENDING notes 01 spend is a transfer between accounts. it is not a log line, and it is not a metric. 02 the hold is committed to nothing until posted. 03 the invariant is the database’s, not a policy layer’s. 04 a refused call never reaches a provider. 05 two-phase transfer — the primitive a card network uses to authorize a hold. drawing two-phase transfer engine tigerbeetle licence Apache-2.0 rev usertrust 3.4.0
Quickstart

Agents deserve expense reports too

Give them one in under 30 seconds

What you write
01

Install it

One dependency. No account, no key, no service in the path.

02

Create the vault

Writes .usertrust/ — config, policy rules, an empty chain.

03

Wrap the client you already have

Prompts and control flow untouched. The signature gains what it cost.

agent.tstypescript
import Anthropic from "@anthropic-ai/sdk";
import { trust } from "usertrust";
const client = await trust(new Anthropic(), {
  budget: 50_000, dryRun: true,     // $5.00 · ledger deferred
});

const { response, receipt } = await client.messages.create({
  model: "claude-fable-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Analyze this contract" }],
});
await client.destroy();   // required
What comes back
receipt
{
  transferId:      "tx_msm19z93_e603a1a2",
  cost: 104,   budgetRemaining: 49896,   settled: true,
  auditHash: "08c22f6127aa76d3…ccabf030f8622",
  chainPath: ".usertrust/audit",
  model: "claude-fable-5",   provider: "anthropic",
  usage: {
    inputTokens: 317,   outputTokens: 131,
    cacheReadTokens: 87, cacheWriteTokens: 43
  },
  pricing: { appliedRates: {
    inputPer1k: 100,     outputPer1k: 500,
    cacheReadPer1k: 10,  cacheWritePer1k: 125
  }, tableVersion: "2026-08-09" }
}
input317×100÷1k31.700
output131×500÷1k65.500
cache read87×10÷1k0.870
cache write43×125÷1k5.375
 sum103.445
cost 104

104 usertokens, 1 = $0.0001 — just over a cent. Counts and rates are both the receipt’s own, so the number is checkable from the record alone. That is the difference between a log and an account.

Open source

Open where the money moves

What is open: the part that does the governing. Policy, holds, settlement, the server that stands on the wire and the verifier that audits it — Apache-2.0, one npm i usertrust away. Not a client shim around a hosted black box: the package talks to the ledger directly.

Why it matters: we are asking to sit in the path of your money, which is a lot to take on faith. So the part that does the governing is the part you can read.

What that buys you: audits nobody takes our word for — the verifier replays the chain and proves the books. No lock-in — use it alone, or don’t use us at all. And a LIMITATIONS.md that names what usertrust does not govern — a trust layer that overstates itself is worse than none.

Read the source
LicenseApache-2.0
Install
Ledger clienttigerbeetle-node
Get started

Take control

The usertools app is coming soon. Join the waitlist — one email when it matters.