Agents fail in the dark.
When a shopping agent buys the wrong item or a research agent hallucinates a citation, logs of the final answer are not enough. You need the trajectory: what it saw, why it chose a tool, and where versions diverge.
How it works
Instrument
Drop in the SDK, hosted MCP, or POST /api/ingest with an AI request. Tracebox pulls inference and records every observation, decision, and tool call.
Record
Runs land in Neon PostgreSQL as a hash-chained trajectory — tamper-evident and queryable.
Replay & compare
Step through decisions, fork from any event, and find the first divergence between agent versions.
Replay every decision
Step through events like a debugger. Jump to tool calls, inspect payloads, and verify the hash chain.
Compare agent versions
Diff two runs side-by-side and highlight the first divergence — the moment trajectories split.
Insert the AI request. We pull inference.
POST a prompt or an OpenAI/Anthropic request to /api/ingest. Tracebox calls the model (or parses a response you already have), then records the full trajectory — tokens, latency, and the decision — into your workspace.
curl -X POST https://tracebox-ochre.vercel.app/api/ingest \
-H "Authorization: Bearer tbx_..." \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4.1-mini",
"prompt": "Why did this agent fail?"
}'Signed in? Try it on the right. Or open the dashboard ingest page.
Built for agent developers
import { BlackBox } from "@tracebox/sdk";
const recorder = new BlackBox({
apiKey: process.env.TRACEBOX_API_KEY!,
projectId: "proj_...",
});
const run = await recorder.startRun({
agent: "shopping-agent",
version: "1.2.0",
});
await run.observe({ text: "Cart has 3 items" });
await run.decision({ action: "checkout", rationale: "Budget ok" });
await run.finish();from tracebox import BlackBox
recorder = BlackBox(
api_key="tbx_...",
project_id="proj_...",
)
run = recorder.start_run(agent="research-agent", version="1.0")
run.observe(text="Found 12 papers")
run.tool_call(name="fetch_pdf", arguments={"id": "arxiv:2401"})
run.tool_result(name="fetch_pdf", result={"pages": 18})
run.finish()Also ships an MCP server so Cursor and Claude can inspect runs without leaving the editor.
Privacy by default
- Automatic redaction of API keys, tokens, passwords, and card numbers
- API keys stored as SHA-256 hashes only
- Tamper-evident event hash chains
- Artifacts stored outside Postgres via a pluggable object store
Pricing
Simple plans for teams shipping agents. Upgrade in a checkout modal.
1 project · 10k events/mo
- 1 project
- 10,000 events / month
- 60 API requests / minute
- Replay and timeline
- Hosted MCP on Vercel
Unlimited projects · 1M events
- Unlimited projects
- 1,000,000 events / month
- 300 API requests / minute
- Compare and fork runs
- API keys + hosted MCP
- Email support
SSO-ready · custom retention
- Everything in Team
- 10,000,000 events / month
- 600 API requests / minute
- Custom retention
- Priority support
- SSO-ready workspace
FAQ
Is Tracebox another LLM logging tool?
No. Tracebox records the full agent trajectory — observations, decisions, tools, artifacts — not just prompt/completion pairs.
Can I self-host?
Yes. Tracebox runs against Neon (or any Postgres) with a local storage adapter. Docker Compose is included for local development.
How do you handle secrets?
API keys are hashed at rest. The SDK redacts passwords, tokens, auth headers, and common secret patterns before events leave the agent process.
Does it work with Cursor / Claude via MCP?
Yes. The Tracebox MCP server exposes tools to create runs, inspect events, compare trajectories, and fork from any sequence number.