Product · Observe
A read-only proxy that tells you what your agent keeps deciding.
Before you govern anything, measure it. Point your agent's base URL at Razoo Observe. It relays every request byte for byte, records the decision, and produces a crystallization report: which calls repeat, which are certifiable, and what they cost you. It changes nothing about your agent.
Setup
Same agent. Same model. Every decision recorded.
Observe routes by path: chat completions and the Responses API go to the OpenAI upstream, messages go to the Anthropic upstream, and anything else is passed through as-is. Your provider key travels on the request and is forwarded unchanged. It is never stored, logged, or read for any other purpose, and a test pins that no header value reaches the trace store.
Byte-faithful
Request and response bodies relayed untouched. Hop-by-hop headers dropped, everything else forwarded.
Streaming
Server-sent events pass through chunk by chunk as they arrive. The trace is assembled from a copy.
Compressed
gzip, brotli, and deflate are decoded for the trace copy only. The client receives the raw bytes.
# OpenAI-compatible clients OPENAI_BASE_URL=https://observe.razoo.dev/a/<your-account>/v1 # Anthropic clients ANTHROPIC_BASE_URL=https://observe.razoo.dev/a/<your-account> # your account token, from the portal # send the header x-razoo-observe: <token> # optional: name the workload so the report can split by it # send the header x-razoo-workload: ap-invoices # then, whenever you like, open the report in the portal observe/report · refreshes as traffic flows
What is recorded
Three endpoints are traced. Everything is relayed.
Only POST bodies on the three decision endpoints are written to the trace store. Every other path is proxied without a record, including batches and token-counting, which have no stable answer to compare. If a trace cannot be parsed or decoded, the recording failure is counted and the client still gets its response.
Recorded
- POST /v1/chat/completions, POST /v1/responses, and POST /v1/messages
- Model, messages, tools, and tool choice from the request
- Content, tool calls, and finish reason from the response
- Input and output tokens, latency, streamed flag, HTTP status
- The workload id from x-razoo-workload, or default
Passed through
- Every other path, method, and body, unrecorded
- Your Authorization and x-api-key headers, untouched and unread
- Upstream status codes and error bodies, exactly as returned
- Client aborts and upstream failures, marked on the trace
Where it lives
- In your account's own store, isolated from every other account, in the region the portal states
- Exportable as JSONL from the portal at any time
- Never shared with Razoo beyond counts, and only if you switch that on
- Delete the account and the traces are gone
The crystallization report
Structurally repeatable, and certifiable.
The report groups your agent's calls into repeats, and marks the repeats whose answer never varied as certifiable. Every group lists its trace ids so you can check it against the raw rows.
Repeat
A call your agent keeps making. The share of all decisions that are repeats is the repeat rate.
Certifiable
A repeat whose answer never varied and never errored. This is the share the kernel could plausibly convert to a rule.
Evidence rows
Every pattern lists trace ids so you can open the raw rows and disagree with the report.
Disagreement gallery
Repeats where the model gave different answers, with counts and evidence for each. These are the calls a person still needs to settle.
Savings, measured
Tokens and latency actually recorded on certifiable traces. Not a projection, not a baseline, and the report says so in its own text.
Razoo crystallize
sample report · 14 days · 2,140 decisions · workload: all
Total decisions
2,140
In repeat clusters
38.2%
818 of 2,140
Certifiable
22.4%
480 of 2,140
Per workload
| workload | decisions | repeat | certifiable |
|---|---|---|---|
| ap-invoices | 1,204 | 42.5% | 28.3% |
| inbox-triage | 936 | 32.6% | 14.8% |
Top certifiable pattern · 1
96 occurrences · one answer every time · evidence rows 118, 131, 140
WHEN workload ap-invoices · tools approve, route
"invoice from a known supplier, PO matched, within limit"
THEN tool approve · reason "within limit, PO matched"Disagreement clusters
7
a person still decides these
Savings, measured
1.9M tokens
sample figures · recorded, not projected
Certified answers
Some repeats do not need a model at all.
When a repeat has produced the exact same answer every time, the report offers Answer this without the model. Press it, and the proxy answers that call itself, in the shape your client library already expects, until you say stop. Nothing is ever certified for you.
- One click, one repeat at a time. A person looks at the calls and the answer and decides.
- An answered call carries x-razoo-answered: certified and is recorded in your traces with zero tokens.
- Any change to the model, the tools, the system prompt, the temperature, or the response format sends the call to your provider as before. If there is any doubt, it goes upstream.
- Stop answering this retires a certification in one click. Report a bad answer does the same and keeps why. A certification expires unless it is reconfirmed.
HTTP/1.1 200 OK x-razoo-answered: certified # usage, because none was spent { input_tokens: 0, output_tokens: 0 }
What it does not do
It watches. It rarely touches, and only on your say-so.
Observe is a falsification instrument for one claim: that a meaningful share of your agent's model calls are repeats a rule could make. It is built to be safe to run beside real traffic and useless for anything else.
Does not change behaviour, unless you certified it
Does not share your store
Does not send counts unless you say so
Does not touch the kernel
The hosted sign-up on this page is on the launch plan. Here is what stands today.
- Today, Observe and certified answers run from the CLI or inside the appliance image; the portal sign-up and hosted endpoint above are on the launch plan. Design partners and evaluations under contract get it now.
- Your provider key is forwarded and never stored. Binding to any address but loopback needs an access token, checked on every request.
- Upstream connect, header, and idle timeouts, and a record-size cap with metadata-only recording above it, are already built in.
- The report gives two numbers: structurally repeatable, and literally replayable — the stricter one, with no placeholder standing in for a value that actually varied.
How this becomes the conversion number.
The pitch makes one measurable claim: a governed agent needs the model less every week. Observe gives the before. Its certifiable share is the ceiling on what the kernel could convert without anyone writing a rule. The kernel gives the after: the conversion dashboard and engine report recompute, per ISO week, the share of once-model decisions now resolved at a learned or structured rung, with tokens avoided, interrupts, demotions, and unsafe fires beside it.
If Observe shows your repeat rate is small, Razoo is not for that agent, and we will say so. That is the point of measuring first.
Two weeks of traffic. One report. No change to your agent.
Point your agent at your Observe endpoint, or apply as a design partner and we will walk you through what would convert, what would not, and why.