● OPEN SOURCEChidori — a TypeScript agent runtime · Apache 2.0

Build AI agents
you can actually debug.

Chidori records every LLM call, tool call, and side effect your agent makes. When a run misbehaves, replay it on your laptop — step by step, with zero token spend — and fix it like ordinary code.

$0.00
to replay any run
1 binary
the entire install
100%
plain TypeScript
$ chidori run agents/researcher.ts
OTLP → tael
● live span graphnodes: 0edges: 0
0.0s
12.6s
session: 7f3a…9c2espans: 0 · OTLP :4317replay cost: $0.00
§ why chidori

Spend your time shipping, not reproducing.

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.

01

Debug production failures in minutes

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

replay = identical output, every time
02

Iterate without burning tokens

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.

50 replays · $0.00
03

Turn history into a test suite

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.

past runs become regression checks
04

Show exactly what the agent did

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.

every step traced & auditable

Under the hood: plain TypeScript agents, human-in-the-loop pauses, sub-agents, sandboxed code execution, and OpenTelemetry tracing — see how Chidori works →

§ how it works

Write one function. Run it. Replay it.

01

Write one function

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 };
}
02

Run it anywhere

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 8080
03

Replay it forever

Every 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.00
§ tael — the companion

Watch it run in production.

Tael 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 →
an incident, as your telemetry tells it
14:02latency p95 jumps to 4.2s on researcher-agent — baseline is 1.2s
14:02tael flags the regression and attaches two example traces
14:03the on-call agent pulls the traces, finds the slow tool call, annotates the root cause
14:04fix ships · the failing session is saved for replay
§ blog

From the engineering log.

view all →
§ thesis

Tools for human + AI work.

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.

§ get started

Up and running in two minutes.

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
Read the quickstartGitHub ↗