Declarative AI agents, like Docker
Write 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 stay available when you need to extend the runtime.
- MIT
- License
- OCI
- Distribution
- Multi-provider
- LLMs
The container model, for agents
Familiar primitives, swapped from processes to autonomous workers.
Declarative
Describe agents in an Agentfile — model, tools, memory, prompts. No SDK, no glue code.
OCI-native
Build into OCI images. Push to any registry. Pull and run anywhere with otters run.
Tools as binaries
BIN entries are container images that the agent invokes as tools — same security model as containers.
Provider agnostic
Anthropic, OpenAI, Ollama, and more. Switch providers without touching agent code.
Locked-down spawn env
Agents start with no host secret leakage. Workspaces are scoped, sandboxed, observable.
Two surfaces, one agent
Talk to the same agent from a TUI in your terminal or a web UI in your browser.
An Agentfile is all you need
Pick a model, give it a soul, and bind tools as containers. The runtime handles streaming, memory, sessions, and persistence.
FROM scratch
RUNTIME ghcr.io/openotters/runtime:latest
MODEL anthropic/claude-haiku-4-5-20251001
NAME pinger
CONTEXT SOUL <<EOF
You are a connectivity probe. Given a host, call the
ping tool and reply "<host>: reachable" or
"<host>: unreachable (<reason>)".
EOF
BIN ping ghcr.io/openotters/tools/ping:latest "TCP-port-80 reachability"Pull and run, no clone needed
Demo agents live on GHCR. One command and they're running in your daemon.
Run your first agent in 60 seconds
Install the daemon, pull a demo image, start chatting. No accounts, no SaaS round-trip.