Agent went wrong? See what the model saw, replay it, fork it.
Local, one binary, no account. Your own model keys. MIT.
Get started · What you get · Docs · Examples
Download agents-server from Releases, then:
./agents-serverOpen http://127.0.0.1:9527, paste the token it printed, and add a provider key and an agent in Settings. Nothing here
needs Docker.
- Say something. The reply streams in. Context shows what the model was sent; Traces shows every call with tokens and latency.
- Replay it. Expand a generation in Traces, change the prompt or model, diff the result.
- Or fork it. Branch the session at any turn. The original stays, either way.
Running the workbench has the full path, from building from source to sandboxes, PostgreSQL and teams.
- Transcript: an append-only session tree: a cancelled run keeps what finished, a paused one survives a restart.
- Context: what the model was sent, and what each part cost. The model is told how full its window is, can search what compaction folded away, and keeps memory of its own: a session's notes, and an agent's facts with your approval. An agent can run in reset mode, where a full window starts over from that memory instead of a summary.
- Traces: model, tool, handoff and guardrail spans with tokens, latency and errors. No backend to run.
- Replay: re-run a generation with another prompt, model, settings or tools, diffed against the original. No session is touched.
- Fork: regenerate or branch at any turn: the parent kept, the other branch a click away.
- Approvals: every tool call visible. Approve a command once, trust that command, or trust the session.
- Sandboxes: a Docker container here or on a remote daemon, or any E2B-compatible service. Optional.
Also: MCP servers with OAuth, Agent Skills, background tasks, workflows, image input, and a team mode with Google or GitHub sign-in.
The workbench is a Go program on top of the agents package; anything it does, your own program can do. Nothing above
needs this.
go get github.com/zzir/agents-goagent := &agents.Agent{
Name: "assistant",
Instructions: agents.StaticInstructions("You are a helpful assistant."),
Model: "gpt-4o",
}
res, err := agents.RunSync(ctx, agent, "Hello!", agents.RunOptions{
Model: agents.ModelOptions{Provider: openai.NewProvider()}, // reads OPENAI_API_KEY
})
if err != nil {
log.Fatal(err)
}
fmt.Println(res.FinalOutputString())The Quickstart continues from here, and every capability has a runnable program under examples/. The API is pre-1.0: pin a version, and read the release notes before moving.
- Running the workbench — from a binary to a first session, then sandboxes and teams
- Quickstart — the SDK, in Go
- Design spec and decisions — what is always true, and why
- The map — everything, sorted by what you came for
