What is Axon?
You write what only you can write. Everything else is already built.
An agent that triages your Linear issues, opens PRs, replies to Discord messages, and summarises your codebase — built in an afternoon, deployed with one command, upgraded by changing an engine name. That is what Axon is for.
The infrastructure that makes it possible — the loop, context assembly, tool dispatch, session persistence, policy enforcement — is managed. You write what only you can write: what the agent knows, what it can do, how it behaves.
The boundary is a single call:
const { stream } = axon.stream({ prompt: [session, task] })
Everything past that call is Axon's concern.
An agent is a folder
my-agent/
├── axon.config.ts # identity, engine, policy
├── src/ # boot prompt, tools, prompts, scripts
├── server/ # HTTP routes and plugins
├── data/ # durable storage and knowledge
└── modules/ # installed capabilities
That folder is the agent. Commit it, deploy it, roll it back. It runs in the TUI on your laptop, headlessly in CI, and as a live cloud service — same source, no changes.
The module system
Capabilities you need but didn't write are installed, not implemented.
axon install @axon/github
axon install @axon/linear
axon install @axon/discord
Each module ships the wiring: webhook verification, event normalization, typed tools, boot-time client setup. You subscribe to hooks and call tools. The integration work — the part you'd write and maintain forever — is already done.
Modules compound. Every agent you build starts with the full registry of capabilities available. The more the registry grows, the faster you build.
Engines
One line in axon.config.ts selects the model:
import { Axon, Cerebras, Codex, Ollama, OpenRouter } from "@axon/engines"
export default defineAgent({
engine: Axon(),
// engine: Codex()
// engine: Cerebras({ model: "gpt-oss-120b" })
// engine: Ollama({ model: "qwen2.5:7b" })
// engine: OpenRouter({ model: "openai/gpt-4o" })
})
Swap it to change how the agent thinks. Your tools, prompts, scripts, and modules don't change. The folder doesn't care which engine runs it.
Deploy
axon deploy
Your agent gets a public URL, an API key, and durable cloud storage. No Dockerfile, no
infra config. Self-host instead with axon build — it produces a Docker image that runs
anywhere. The folder is the same either way.
Where to start
I want to use an agent → Installation
I want to build an agent → The Agent Is a Folder
I want to go deep → Agent
I want to ship a module → Modules