Start free.
Managed cloud, no card, or self-host free.
Not writing the code? Send your engineer this →
Can you add Runback to our riskiest agent? If it already emits OpenTelemetry it's two environment variables, no code change: https://- 01Sign upManaged cloud, no card.
- 02ConnectTwo environment variables, or three lines. Pick your path ↓
- 03First run
Two environment variables. Any framework.
Each path, and what it can't do.
Any framework that emits OpenTelemetry: LangChain, CrewAI, LlamaIndex, Pydantic AI, Google ADK. Python, Go, Java, Node.
# Any framework that emits OpenTelemetry GenAI spans: Python, Go, Java, Node
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="https://runback.dev/api/otel/v1/traces"
export OTEL_EXPORTER_OTLP_TRACES_HEADERS="authorization=Bearer <RUNBACK_API_KEY>"
opentelemetry-instrument python your_agent.py2 variables. Environment variables you set. No code change.
| Capability | OpenTelemetry | TypeScript | Python |
|---|---|---|---|
| Code changes | None. Your framework's own instrumentation sends the spans; no Runback package. | Not listed | Not listed |
| Context | What's exported. Messages, system prompt and tool definitions when the instrumentor exports them (GenAI, OpenLLMetry, OpenInference). | Full. System prompt, messages, tools and parameters, streamed or not. | Full. chat.completions, responses and messages calls, streamed or not, with tools and tokens. |
| Redaction | On arrival. Redacted by Runback when the spans arrive, not inside your process. | In your process. On by default, before anything is buffered or sent. | In your process. On by default. |
| Block before it runs | No. Spans arrive after the call ran, so nothing can stop it. | Yes. A policy rule is checked before a wrapped tool executes. | No. The client never runs your tools, so there is no hook to block in. |
| Replay | Re-issue only. A model step can be re-sent to a live model. The whole run can't be re-run with the same tool results: they aren't kept. | Whole run. Every tool result is kept. Re-running the run with those results held fixed is on the Enterprise plan. | Re-issue only. A model step can be re-sent to a live model. The whole run can't be re-run with the same tool results: they aren't kept. |
| Arrives | About a minute. A run is written once its trace goes quiet, about a minute after the root span. | Not listed | Not listed |
| Signed record | Yes. Each run is hash-chained and can be exported as a signed record. | Yes. Each run is hash-chained and can be exported as a signed record. | Yes. Each run is hash-chained and can be exported as a signed record. |
| Tool steps | Not listed | Not listed | Inferred. Read from the tool result in the next request, so a tool's latency isn't known. |
From one agent to every agent.
Day 1
Every step visible.
Week 1
The team gets in.
Ongoing
Proof on demand.
import { withDebugger } from "@runback/sdk";
import { generateText } from "ai";
const dbg = withDebugger(model, { runName: "research-email-agent" });
const res = await generateText({
model: dbg.model,
tools: dbg.tools(myTools),
prompt: task,
});
await dbg.finish({ output: res.text, status: "success" });| Capability | Owner | Admin | Member | Viewer |
|---|---|---|---|---|
| Read runs | Owner: yes | Admin: yes | Member: yes | Viewer: yes |
| Replays and evals | Owner: yes | Admin: yes | Member: yes | Viewer: no |
| API keys | Owner: yes | Admin: yes | Member: no | Viewer: no |
| Billing | Owner: yes | Admin: yes | Member: no | Viewer: no |
| Set up SSO | Owner: yes | Admin: yes | Member: no | Viewer: no |
| Enforce SSO | Owner: yes | Admin: no | Member: no | Viewer: no |
issue_refund({ customer_id: 8842, amount: 250 })an A$250 refund
- Disputed refunds over A$100 must be escalated to a personStopped
- Kept as a testEvery build
Technical details
rule escalate-large-disputed
test issue_refund blocked — escalate-large-disputed
- 0.00sRun starts
- 0.04sModel thinks
- 0.71sLooks up customer
- 0.90sModel decides to refund
- 1.71sRefund blockedDisputed refunds over A$100 must be escalated to a person
- 2.20sRun ends
Signed
Technical details
Each step's hash covers the one before it. The record's fingerprint: 90b762f284e4
The agent's id: support-refund-agent
The rule's id: escalate-large-disputed
The recorded run · 6 steps · checked when this page was built
Signed.
Every step still matches what was recorded.
Shown on the sample refund. Your agents will differ.
Or self-host the Community edition.
Your cloud, your data.