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://runback.dev/get-started#connect
  1. 01Sign upManaged cloud, no card.
  2. 02ConnectTwo environment variables, or three lines. Pick your path ↓
  3. 03First run

What lands: the public demo's last 24 hours. Newest: Research agent, done.

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.py

2 variables. Environment variables you set. No code change.

What each path can and can't do
CapabilityOpenTelemetryTypeScriptPython
Code changesNone. Your framework's own instrumentation sends the spans; no Runback package.Not listedNot listed
ContextWhat'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.
RedactionOn 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 runsNo. 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.
ReplayRe-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.
ArrivesAbout a minute. A run is written once its trace goes quiet, about a minute after the root span.Not listedNot listed
Signed recordYes. 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 stepsNot listedNot listedInferred. 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.

Month 1

A failure becomes a test.

Turn a failure into a test, and gate on it →

Ongoing

Proof on demand.

agent.ts · Vercel AI SDK · Runback's three lines marked +
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" });
What each workspace role can do
CapabilityOwnerAdminMemberViewer
Read runsOwner: yesAdmin: yesMember: yesViewer: yes
Replays and evalsOwner: yesAdmin: yesMember: yesViewer: no
API keysOwner: yesAdmin: yesMember: noViewer: no
BillingOwner: yesAdmin: yesMember: noViewer: no
Set up SSOOwner: yesAdmin: yesMember: noViewer: no
Enforce SSOOwner: yesAdmin: noMember: noViewer: no
Who can call what →
issue_refund({ customer_id: 8842, amount: 250 })an A$250 refund
  1. Disputed refunds over A$100 must be escalated to a personStopped
  2. Kept as a testEvery build
Technical details

rule escalate-large-disputed

test issue_refund blocked — escalate-large-disputed

Scripted sample run · Support refund agent6 steps
  1. 0.00sRun starts
  2. 0.04sModel thinks
  3. 0.71sLooks up customer
  4. 0.90sModel decides to refund
  5. 1.71sRefund blockedDisputed refunds over A$100 must be escalated to a person
  6. 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.

Work email required. We use it to send your setup link — no spam.