Turn your app into an agentic product — from one YAML file.
Give any application a smart, domain-aware agent layer, without
building the engine yourself.
Documentation · Quick Start · How it works · Learn more · Contributing
Extra is a lightweight engine that adds an agentic layer to any application. You describe your agents in a simple YAML file — what each one is responsible for and what it can access — and Extra turns that into a running system that routes each request to the right agent and answers it accurately.
Every agent has a single, clear responsibility and is scoped to its own domain, with its own prompt, tools, and data. That scoping is what keeps answers grounded: a request about billing never reaches the returns agent, so there's no context bleeding between domains and no hallucinated hand-off. You get tools, MCP servers, authentication, provider connectors, and observability out of the box — so your app can be agentic in a day, not a quarter.
You define a small graph in YAML: one orchestrator that routes, and focused agents that do the work. Extra runs it — picking the right agent per request and keeping each one inside its own domain.
flowchart TD
U([User request]) --> R{{Orchestrator<br/>routes by domain}}
R -->|billing| A1[Billing agent]
R -->|orders| A2[Orders agent]
R -->|docs| A3[Docs agent]
A1 --- P1[/prompt · tools · MCP · auth/]
A2 --- P2[/prompt · tools · MCP · auth/]
A3 --- P3[/prompt · tools · MCP · auth/]
A1 --> RESP([Grounded response])
A2 --> RESP
A3 --> RESP
Each agent only sees its own tools and data, so the model stays focused and answers correctly for that part of your business. Add a new capability by adding an agent to the file — no routing code to write.
Here's the same idea in YAML: