Introducing Traza Cloud
An agent that loops on the same tool call does not crash. It keeps going,
politely, one identical search_orders call after another, and you find out
from the bill. Observability tools will show you the loop afterwards, in a
beautiful waterfall. We wanted the thing that records the loop to be the thing
that stops it.
That is Traza: a trace database for agent workloads that acts on what it records. It is open source under Apache-2.0, it is one binary with no external database, and as of today you can also have us run it. This post is about what Traza Cloud is, and just as much about what it is not.
Four verbs
Record. Point any OpenTelemetry SDK at Traza. Spans from OpenLLMetry, OpenInference or the OpenTelemetry GenAI conventions arrive with sessions, models and token counts recognized, prompts and completions stored with them, and large payloads offloaded and deduplicated by content. No attribute renaming, no mapping file.
Guard. Every run (a session, or a trace) is held to limits on cost, tokens,
steps, LLM and tool calls, duration, repeated calls and failure streaks. Before
its next step, an agent can ask POST /v1/fuses/check whether it may proceed,
and a step that would go past a stop limit is refused. Every ingest
acknowledgement also carries the verdict in a Traza-Fuse header, so a client
that only exports still learns it was stopped. There is a kill switch, and a
stop stays a stop until someone resets it, optionally granting a bigger budget.
Replay. Point the OpenAI or Anthropic SDK at a recorded run and run your
agent for real: your code, your prompts, with every model answer served from
the recording. Zero model calls. In strict mode, the first request that asks a
different question than the recording did is refused with a 409 naming the
step, which is exactly what you want when testing a fix. GET /v1/diff names
the first step where two runs parted, and why.
Prove. The engine keeps a hash chain over everything it commits: generations, erasures, external anchors. An evidence pack bundles the chain, its verification, your retention, activity and erasures under one digest that the Python standard library can recompute. Erasure comes with a receipt that re-checks every place the bytes could have lived.
Traza Cloud: the same binary
Every Traza Cloud project is a tenant on a cell: a traza-server 0.28.0 on a private network, the same Apache-2.0 release you can
download, unmodified, shared by many projects. Each project is its own engine
tenant, reached only with a credential bound to that tenant, so the engine
itself enforces isolation on every query.
What the cloud adds is what only makes sense when someone hosts it:
- A gateway at
api.trazadb.com: scoped API keys (ingest,read,full), per-project rate limits, and the operator routes closed. - Alerts that let you act. Stops, warnings and kill switches go to email, Slack or signed webhooks, and the Slack message links straight to Approve to continue.
- A console with organizations, roles, the engine’s own trace explorer per project, a Guard tab, one-click replays and share links for a single run.
- A notary. A ledger is only tamper-evident if someone else holds a signature over it. Ours anchors each cell’s ledger head every hour it moves, with an Ed25519 key, records the anchor back into the chain, and publishes it in a hash-chained transparency log. On Team, it also signs your evidence packs. You can verify all of it with OpenSSL and our published key, without asking us.
Pricing
Free includes 1M spans a month. Pro is $49 a month for 20M; Team is $349 for 200M, with SSO, the audit log and notarized evidence. Every plan has Guard, Replay, Diff, Recall and MCP.
A few things we decided once, so you never have to ask: never per seat; no export or egress fees; export stays on even when you are capped or unpaid; and the included spans are a hard cap until you choose otherwise. At the cap, ingest pauses, reads keep working, and nothing is deleted early.
The covenant
Open core usually means the open part is the demo. We wrote down the opposite, and phrased it so you can catch us: the engine is Apache-2.0 in full, the cloud runs the same binary (every evidence pack names the engine version that made it), nothing a self-hoster needs for a production obligation is cloud-only, and you can always leave with your data. The full text, with how to check each promise, is on the open-source page.
What it does not do
The engine’s documentation lists its limits beside its features, and so will we. Fuses act between steps: a single runaway model call is not interrupted, and a stop that arrives on an acknowledgement is at least one step late, which is why the pre-call check exists. Replays answer model calls; your tools still run for real unless your harness takes their results from the recording. The ledger proves what was committed, not what happened in the world. And the engine is single-node: one writer per data directory, no replication in this release.
Start
Sign in at app.trazadb.com, create a project, copy a key and set three environment variables; the quickstart takes about five minutes. Or skip us entirely: run it yourself. It is the same engine.