00:00rec · start
Observability, audit & security for coding agents — on the machine

Put your coding agents on the record.

Your agents ran thousands of sessions last month. What did they cost — and what did they produce? What did they touch? Do they work the way your company works? Gesta measures, governs, and guides every session — on the machines where it happens.

$ curl -fsSL https://artifacts.gesta.run/gesta/install-agent.sh | bash -s
Get started →
00:14efficiency
Scene 1 · The efficiency

You spent $3M on tokens. What shipped?

The board is asking, and the vendor bill can't answer — it stops at the API key. Gesta answers with a ledger no bill can produce: what your agents actually authored — code, docs, tests — priced at API list rates, every cache tier included.

gesta.run/token-efficiency
Token efficiency · last 30d
$438Ktoken cost
↓ 23% vs last month
148K
Code
96K
Docs
31K
Tests
MemberCostCodeDocsTestsWork type
alex$4123,120640520Coding 71%
sam$3882,2401,380310Coding 64%
jordan$2961,610420240Coding 58%
rowan$1884602,9000Research 62%
Humans only — automation (bots) spent $6.2K, counted in org totals, never listed or ranked.
How the counting works

Measured at the pen, not the paper.

The paper is what a session leaves behind — files, diffs, commits — and paper lies. A formatter rewrites a thousand lines for a one-character fix. A generator emits code nobody wrote. The session that saved your week left no commit at all.

So Gesta doesn't count the paper. It meters the ink: every word the agent itself sets down — code, tests, docs, even a page written straight into your wiki — counted at the moment of writing, before formatters, generators, or git can touch it.

Anyone can see the spend. Only Gesta sees the output — on the machine, at the moment it's written.

Only the counts ever leave the machine. The ink itself never does.

A ledger your model vendor — and your AI gateway — will never show you.

01:24security
Scene 2 · Security

Stop it before it runs.

Your rules push from one console to every agent on every machine, and the dangerous call is held before it executes. Held before it ran, blocked before it left — including the quiet one: a prompt about to carry a plaintext key off the machine.

38
Active rules
2,417
Decisions · 24h
11
Blocked
6
In review
214
Rule hits
gesta.run/policies
ActionAgentUserSessionDecision
Prompt attaches AWS_SECRET_ACCESS_KEYrule: credential pattern · outbound promptCodexsama190block
git push --force origin mainrule: force-push to protected branchClaude Codealex7f3chold
Edit .env.productionrule: write to secrets fileCodexsama190review
rm -rf build/scoped to workspaceClaude Codealex7f3callow
Row one: the key never left the machine — the prompt was held before it went out.

Rules are patterns you push from the control plane — every agent, every session, every machine. We run these rules on our own fleet, every day. Data shown is illustrative.

You can't stop everything an agent does. You can make sure none of it is invisible.

01:52guide
Scene 3 · The library

The agent deleted the pod. Nobody told it to ask.

Models know general engineering. They don't know your company — which cluster “pre” is, what needs confirmation, who to tell before you touch shared infra. That knowledge lives in your Organization Library — and Gesta injects it into every prompt of every managed agent.

(a) · The confirmation

Same request, two outcomes.

>Check the pre environment and delete the payments-api pod.

session-b2e1 · replayWithout the Org Library
  1. t+0sresolve “pre” — Codex guesses cluster pre-eu-1
  2. +4skubectl get pods -n payments
  3. +6skubectl delete pod payments-api-7d4f▲ no confirmation
Deleted on the first pass. The user found out afterwards.
session-b2e2 · replayWith the Org Library
  1. t+0scontext injected — “For any SRE operation involving deletion, always ask the user for confirmation.”
  2. +3sresolve “pre” — cluster pre-eu-1, per your glossary
  3. +5sClaude Code asks — “This deletes payments-api in pre. Confirm?”
  4. +41suser confirms — deletion proceeds, on the record
Asked first. Confirmed, then delivered.

Based on a real internal beta incident. Data shown is illustrative.

(b) · The new hire

Day three. David's agent already knows who to ask.

Some rules aren't in any config or README — they live in a few veterans' heads. “Give alex a heads-up before you touch staging.” A new hire's agent has no way to know. The library does.

>Restart the staging cluster to pick up my config change.

session-c7a9 · replayDavid, day 3
  1. t+0slibrary injected — “Staging is shared. Give alex a heads-up before touching it.”
  2. +2sClaude Code asks — “Your team pings alex before staging operations. Told him, or should I hold?”
  3. +30sDavid — “good catch, pinging him now. go ahead.”
  4. +2mstaging restarted — alex knew · his demo unharmed
Without the library: alex finds out when staging dies under his demo. The rule lived in three veterans' heads — on day three, David had it too.

One library holds how your company works — no scattered copies, no drift. A model can read your code. It can never read your company — and that is the one asset no vendor can ship you.

The Org Library guides in the flow — hard stops stay with Policies. Every delivery is on the record.

02:30position
The position

The work happens on a machine. So does Gesta.

Your gateway sees traffic. Your model vendor sees API calls. Your cloud logs see borrowed credentials. The agent's real work — the files it writes, the commands it runs, the instruction it was given — exists in exactly one place: the machine it runs on.

That's where Gesta stands — SaaS or self-hosted, the daemon sits on the machine. It's why Gesta can count what an agent authored, hold a dangerous call before it executes, and catch a key before it leaves. None of it can be done from anywhere else — not because others won't, but because physics won't let them.

stays on the machineprompts · code · diffs — the ink itself
leaves the machinecounts · events · decisions — the record, tamper-evident

On the record — because it's on the machine.

02:53self-host
Inside your walls

Your prompts and code never leave your network.

Prefer managed? Run Gesta as SaaS — the daemon still sits on your machines, and only the record leaves them. Need even the record to stay in-house? The same stack self-hosts on your own instance: control plane, data, record, all inside your boundary. No vendor backend, no egress by default.

03:14install
How it works

Install once. Every coding agent is covered.

01

Install the daemon

One command on the endpoint: curl -fsSL https://artifacts.gesta.run/gesta/install-agent.sh | bash -s -- --control-url https://api.gesta.run --apikey <secret key>. It hooks the coding agents already installed.

02

Set policy, or use ours

Rules apply to every agent, session, and machine in the org. Start from a maintained baseline and adjust.

03

Watch the record

Live activity, any session end to end, every action attributed — all from one place.

$ curl -fsSL https://artifacts.gesta.run/gesta/install-agent.sh | bash -s -- \
  --control-url https://api.gesta.run \
  --apikey <secret key>
→ downloading gesta-agent · darwin/arm64
checksum verified
Claude Code hook installed
Codex hook installed
daemon configured
agent installed — every session on the record
03:34end

■ session complete · 9 entries · every action attributed

Your agents' sessions deserve the same record.

Install in minutes. Watch your first agent session, attributed end to end.