Welcome
Declarative AI agents โ like Docker, but for autonomous agents.
OpenOtters lets you describe an agent in an Agentfile, build it into an OCI image,
and run it. Runtime, tools, memory, sessions, and persistence are handled for you.
No code or SDK required โ both remain available when you need to extend the
runtime, plug in a custom executor, or embed agents in another Go program.
โ ๏ธ Early alpha โ APIs and on-disk state can change without notice.
Where to start
- Quickstart โ install the daemon, run a demo agent, chat with it.
Concepts
- Workspaces โ the per-agent FHS root and the context files the runtime injects into the model's system prompt.
- Sessions โ chat history, tool-call replay, label-scoped async jobs, sharing across surfaces.
- Tools (BINs) โ how tools are packaged, mounted, and surfaced to the model.
- Async jobs โ long-running background work the agent fires and checks on later.
- Surfaces โ TUI, dashboard, programmatic API.
- Authentication โ the JWT model on every listener (operator vs agent tokens).
Reference
- Agentfile spec โ every directive, with examples.
- CLI reference โ the
otterscommand surface.
Architecture
- Runtime โ what
ottersddoes, where state lives, how it's configured. - Executors โ system vs docker, and how to pick.
Why declarative?
Today, building an agent means picking an SDK, writing glue code, wiring up tools one by one, and re-deploying when anything changes. OpenOtters trades that for a single declarative file: pick a model, give it a soul, bind tools as containers.
The same artifact runs locally, in CI, or on a hosted daemon โ the way Docker
images do. You can push agents to any OCI registry, pull them on another machine,
and otters run them with no further setup.