Pilot is the runtime for agents you can actually ship.

Define an agent in a few lines, hand it tools, and Pilot runs the loop — retries, state, human review, and a trace of every decision it made.

Pilot Console

Running 4

  • Backfill customer embeddings running · 3m 40s
  • Reconcile Stripe payouts needs review · +212 −40
  • Draft the release notes done · 1m 02s
  • Triage overnight errors queued

Backfill customer embeddings

Backfill embeddings for every customer record created before March, then verify the index is complete.

Read schema/customers.sql

Planned 3 steps · 1 subagent

Thought for 6s

Batching 41,880 records at 500 per call. I will checkpoint after every batch so a failure resumes instead of restarting.

jobs/BackfillEmbeddings.php +84 −0

services/EmbeddingClient.php +36 −12

tests/BackfillTest.php +58 −0

Trace

  • Backfill customer embeddings running · 3m 40s
  • Reconcile Stripe payouts needs review · +212 −40
  • Draft the release notes done · 1m 02s
  • Triage overnight errors queued
pilot run

batch 84/84 · 41,880 embedded

verify: index complete, 0 gaps

done in 4m 12s · $1.94

Teams running agents on Pilot today

How it works

Fifteen lines, then it runs itself.

You already know what the agent should do. Pilot handles the parts that make it survive production — the retries, the checkpoints, the approvals, and the record of what happened.

Read the loop guide
  1. 01

    Describe the agent

    A name, a goal, and the tools it may call. Pilot infers the schema from your function signatures, so the model only ever sees arguments that type-check.

    About fifteen lines

  2. 02

    Let the loop run

    Pilot plans, calls tools, checkpoints after every step, and retries the ones that fail. Long runs park themselves waiting on a human instead of dying at the timeout.

    Minutes, hours, or days

  3. 03

    Read the trace, then ship

    Every decision, every argument, every token is recorded. Replay a run against a new prompt or a cheaper model and diff the two before you change anything.

    Before it reaches production

What’s in the box

Everything the demo skipped

The loop is the easy part. What makes an agent shippable is what happens when a tool times out, a human has to approve something, or you need to explain a decision three weeks later.

Run 8f21c step 3/5 0.4s 2.1s now checkpoint saved · resumable

A loop that survives contact with reality

Plan, call, observe, repeat — with retries, backoff, and a checkpoint after every step. A run that hits a dead tool at minute nine resumes from minute nine, not from zero.

Durable for hours or days

#[Tool] function refund( string $chargeId, int $amountCents, Reason $reason, ): Refund ✓ schema derived · 3 args validated

Tools the model cannot misuse

Write an ordinary function; Pilot derives the schema from its signature and validates every call against it. Arguments that would not compile never reach your code.

Typed, validated, versioned

State that outlives the process

Working memory, scratchpads, and results persist outside the run, so a restart, a deploy, or a week-long pause costs you nothing.

Human review, anywhere in the loop

Park a run on an approval gate, route it to the right person, and resume exactly where it stopped once they sign off.

A trace of every decision

Prompts, tool arguments, results, tokens, and cost — recorded per step and replayable against a different model or prompt.

Evals that run in CI

Turn any recorded run into a test case. Pilot re-runs your suite on every change and shows you exactly which step regressed.

Runs anywhere you already deploy

A library first — inside your app, a queue worker, a cron, or a container. No sidecar, no broker, no new platform to operate.

Cost

Know what a run costs before it runs

Agents are cheap until they are not. Pilot meters every call, attributes it to the step that made it, and stops a run that walks past its budget.

  • Per-run and per-step spend, live
  • Hard budget ceilings that halt instead of overrun
  • Cached tool results reused across retries
How Pilot meters a run

Spend by step

Last 24h
  • Planning $0.21
  • Tool calls Recommended $1.02
  • Review pass $0.44
  • Retries $0.27

Averaged over 3,410 runs on this workspace.

41ms
Median framework overhead per step
8.4×
Cheaper after caching and model routing
99.2%
Runs that resume cleanly after a failure
12k
Agents in production on Pilot today

Measured across 1.4M agent runs on Pilot in 2025

The loop

A run you can pause, inspect, and resume

Every step is checkpointed. When a tool times out or a human needs to approve something, the run parks itself instead of dying and losing an hour of work.

  • Checkpoints after every step, resumable for days
  • Human approval gates anywhere in the loop
  • Replay any run against a new prompt or model
Read the loop guide

Run 8f21c

4m 12s
0s 60s 120s 180s 252s
  • Plan and fan out 0–24s
  • Tools, 84 batches Recommended 24–186s
  • Awaiting approval 186–214s
  • Verify and commit 214–252s

Every phase replayable in isolation.

Evidence

Engineers who put agents in front of customers

We had six months of agent demos and nothing in production. The thing that changed was checkpointing — once a run could survive a bad tool call, we could actually put one in front of customers.
Mara Vane Staff engineer, Northbeam 8 agents in prod
The trace is the product. When an agent does something strange at 2am, I can replay the exact run instead of guessing from logs.
Theo Adeyemi Platform lead, Cadence
Typed tools caught more bugs in a week than our eval suite caught in a quarter. The model simply cannot pass an argument that does not compile.
Priya Raman Founder, Vector Field
We moved off a homegrown loop in an afternoon. That is the whole review.
Jonas Meyer Backend engineer, Substrate

Your first agent, running by lunch.

The runtime is open source and the docs are short. Install it, wire up one tool, and watch the first trace come back.

Apache 2.0 · No account needed to start · Bring your own models