Most agent bugs are unreproducible — a different model sample, a changed API response, and the failure is gone. Chidori logs every side effect as your agent runs, so any run can be replayed exactly, anywhere, for free.
An agent misbehaves at 2am. Pull its session log, replay it on your laptop, and watch the exact same run unfold — same model outputs, same tool results, same bug. No more “can’t reproduce.”
Replays return cached model results, so re-running a failure costs nothing. Tweak the code, replay, repeat — your token bill stays at zero until the agent does something new.
Saved sessions double as regression tests. Before you change a prompt or swap a model, replay last week’s runs and diff the outputs — know what changed before your users do.
Every prompt, tool call, and human approval is recorded in the run’s trace. When someone asks why the agent did something, you pull up the run — not your best guess.
Under the hood: plain TypeScript agents, human-in-the-loop pauses, sub-agents, sandboxed code execution, and OpenTelemetry tracing — see how Chidori works →
An agent is a single TypeScript file — no scaffolding, no graph definitions, no DSL. If you can write an async function, you already know how to write an agent. This is the entire thing:
// agents/researcher.ts
import type { Chidori } from "chidori";
export async function agent(
input: { question: string },
chidori: Chidori,
) {
const queries = await chidori.prompt(
"3 search queries for: " + input.question,
{ type: "json" },
);
const answer = await chidori.parallel(
queries.map((q) => () =>
chidori.tool("web_search", { query: q })),
);
return { answer, queries };
}The same file runs once from the CLI or becomes an HTTP service with one flag. Webhooks, chat, scheduled jobs — there is no rewrite between “script on your laptop” and “service in production.”
$ chidori serve agents/researcher.ts --port 8080Every run saves a complete record of itself. Replay it tomorrow to debug, next month to audit, or after every prompt change as a regression check — identical output, zero token spend.
$ chidori run agents/researcher.ts --replay session.json
→ identical output · $0.00Tael watches your agents in production and tells you — in plain JSON — when something drifts: error spikes, latency regressions, runs that look wrong. Your agents can read it too, so the system that notices a problem can be the same one that fixes it.
Explore Tael →Agents extend your reach — but only if you can trust what they did. Chidori and Tael are open-source building blocks designed to be boring and inspectable, so the agents running on top of them can afford to be interesting.
One Rust binary, installed with cargo. Write a TypeScript file, run it, and you have a replayable agent.
$ cargo install chidori
$ chidori run agents/hello.ts
# every call recorded → replay anytime, $0.00