Welcome to AGNT5
One runtime for durable agent execution, queryable traces, and replay-based evals.
AGNT5 runs your agent and workflow code with three guarantees: every step is checkpointed so it survives crashes, every model and tool call is recorded into a queryable trace, and any historical run can be replayed against a new prompt or model to score the diff before you ship.
One runtime — agent loop, journal, trace store, eval engine — not three systems stitched together.
The three guarantees
- Durable run. A workflow is a sequence of
ctx.step(...)calls. Each step’s input and output is journaled. After a crash or restart, the run resumes from the last completed step — model calls, tool calls, and human-review pauses included. See Workflows. - Queryable trace. Every run produces a structured trace: model inputs and outputs, tool calls with arguments and returns, intermediate state, token usage, latencies. Filter, diff two runs, or feed any trace into an eval. See Event sourcing and replay.
- Replay-based eval. Turn a historical run into an eval dataset. Re-run with a different prompt or model against the frozen inputs, score with custom or built-in scorers, and ship the change only when the score moves the right way. See The improvement loop.
from agnt5 import Agent, workflow, WorkflowContext
triage = Agent(
name="triage",
model="openai/gpt-4o-mini",
instructions="Classify the support ticket and recommend an action.",
)
@workflow
async def support_triage(ctx: WorkflowContext, ticket_id: str) -> str:
ticket = await ctx.step("fetch", lambda: load_ticket(ticket_id))
result = await ctx.step("classify", lambda: triage.run(ticket["body"]))
return result.output # RunResult.output: strimport { Agent, workflow } from 'agnt5';
const triage = new Agent({
name: 'triage',
model: 'openai/gpt-4o-mini',
instructions: 'Classify the support ticket and recommend an action.',
});
export const supportTriage = workflow(
'support-triage',
async (ctx, ticketId: string) => {
const ticket = await ctx.step('fetch', () => loadTicket(ticketId));
const result = await ctx.step('classify', () => triage.run(ticket.body));
return result.output;
}
);Two checkpointed steps wrap an agent call. load_ticket / loadTicket is your function — anything reachable from your code (Postgres, S3, an HTTP API) goes inside a step. The agent loop itself is checkpointed by AGNT5.
Who this is for
Backend engineers shipping production AI features who need agents to survive failures, runs to be inspectable, and prompt or model changes to be measured against real history before they deploy.
Where to start
- Install — CLI and auth, ~3 minutes.
- Quickstart — first agentic workflow with MCP and human review, ~10 minutes.
- Build locally — hot reload, traces, and a durability test that kills the worker mid-run.