[{"data":1,"prerenderedAt":416},["ShallowReactive",2],{"docs-home":3},{"id":4,"title":5,"body":6,"description":17,"extension":410,"meta":411,"navigation":275,"path":412,"seo":413,"stem":414,"__hash__":415},"docs\u002Fdocs\u002Fv2\u002Findex.md","Axon",{"type":7,"value":8,"toc":403},"minimark",[9,14,18,21,24,27,88,91,96,167,170,174,177,210,213,216,220,227,330,333,337,349,356,360,372,381,390,399],[10,11,13],"h1",{"id":12},"what-is-axon","What is Axon?",[15,16,17],"p",{},"You write what only you can write. Everything else is already built.",[15,19,20],{},"An agent that triages your Linear issues, opens PRs, replies to Discord messages, and\nsummarises your codebase — built in an afternoon, deployed with one command, upgraded by\nchanging an engine name. That is what Axon is for.",[15,22,23],{},"The infrastructure that makes it possible — the loop, context assembly, tool dispatch,\nsession persistence, policy enforcement — is managed. You write what only you can write:\nwhat the agent knows, what it can do, how it behaves.",[15,25,26],{},"The boundary is a single call:",[28,29,34],"pre",{"className":30,"code":31,"language":32,"meta":33,"style":33},"language-ts shiki shiki-themes dark-plus","const { stream } = axon.stream({ prompt: [session, task] })\n","ts","",[35,36,37],"code",{"__ignoreMap":33},[38,39,42,46,50,54,57,61,64,67,70,73,76,79,82,85],"span",{"class":40,"line":41},"line",1,[38,43,45],{"class":44},"scz_3","const",[38,47,49],{"class":48},"sTNBD"," { ",[38,51,53],{"class":52},"s9McN","stream",[38,55,56],{"class":48}," } = ",[38,58,60],{"class":59},"s3F5K","axon",[38,62,63],{"class":48},".",[38,65,53],{"class":66},"sCudf",[38,68,69],{"class":48},"({ ",[38,71,72],{"class":59},"prompt:",[38,74,75],{"class":48}," [",[38,77,78],{"class":59},"session",[38,80,81],{"class":48},", ",[38,83,84],{"class":59},"task",[38,86,87],{"class":48},"] })\n",[15,89,90],{},"Everything past that call is Axon's concern.",[92,93,95],"h2",{"id":94},"an-agent-is-a-folder","An agent is a folder",[28,97,101],{"className":98,"code":99,"language":100,"meta":33,"style":33},"language-bash shiki shiki-themes dark-plus","my-agent\u002F\n├── axon.config.ts   # identity, engine, policy\n├── src\u002F             # boot prompt, tools, prompts, scripts\n├── server\u002F          # HTTP routes and plugins\n├── data\u002F            # durable storage and knowledge\n└── modules\u002F         # installed capabilities\n","bash",[35,102,103,108,122,133,144,155],{"__ignoreMap":33},[38,104,105],{"class":40,"line":41},[38,106,107],{"class":66},"my-agent\u002F\n",[38,109,111,114,118],{"class":40,"line":110},2,[38,112,113],{"class":66},"├──",[38,115,117],{"class":116},"sKc5r"," axon.config.ts",[38,119,121],{"class":120},"sOLPB","   # identity, engine, policy\n",[38,123,125,127,130],{"class":40,"line":124},3,[38,126,113],{"class":66},[38,128,129],{"class":116}," src\u002F",[38,131,132],{"class":120},"             # boot prompt, tools, prompts, scripts\n",[38,134,136,138,141],{"class":40,"line":135},4,[38,137,113],{"class":66},[38,139,140],{"class":116}," server\u002F",[38,142,143],{"class":120},"          # HTTP routes and plugins\n",[38,145,147,149,152],{"class":40,"line":146},5,[38,148,113],{"class":66},[38,150,151],{"class":116}," data\u002F",[38,153,154],{"class":120},"            # durable storage and knowledge\n",[38,156,158,161,164],{"class":40,"line":157},6,[38,159,160],{"class":66},"└──",[38,162,163],{"class":116}," modules\u002F",[38,165,166],{"class":120},"         # installed capabilities\n",[15,168,169],{},"That folder is the agent. Commit it, deploy it, roll it back. It runs in the TUI on your\nlaptop, headlessly in CI, and as a live cloud service — same source, no changes.",[92,171,173],{"id":172},"the-module-system","The module system",[15,175,176],{},"Capabilities you need but didn't write are installed, not implemented.",[28,178,180],{"className":98,"code":179,"language":100,"meta":33,"style":33},"axon install @axon\u002Fgithub\naxon install @axon\u002Flinear\naxon install @axon\u002Fdiscord\n",[35,181,182,192,201],{"__ignoreMap":33},[38,183,184,186,189],{"class":40,"line":41},[38,185,60],{"class":66},[38,187,188],{"class":116}," install",[38,190,191],{"class":116}," @axon\u002Fgithub\n",[38,193,194,196,198],{"class":40,"line":110},[38,195,60],{"class":66},[38,197,188],{"class":116},[38,199,200],{"class":116}," @axon\u002Flinear\n",[38,202,203,205,207],{"class":40,"line":124},[38,204,60],{"class":66},[38,206,188],{"class":116},[38,208,209],{"class":116}," @axon\u002Fdiscord\n",[15,211,212],{},"Each module ships the wiring: webhook verification, event normalization, typed tools,\nboot-time client setup. You subscribe to hooks and call tools. The integration work —\nthe part you'd write and maintain forever — is already done.",[15,214,215],{},"Modules compound. Every agent you build starts with the full registry of capabilities\navailable. The more the registry grows, the faster you build.",[92,217,219],{"id":218},"engines","Engines",[15,221,222,223,226],{},"One line in ",[35,224,225],{},"axon.config.ts"," selects the model:",[28,228,230],{"className":30,"code":229,"language":32,"meta":33,"style":33},"import { Axon, Cerebras, Codex, Ollama, OpenRouter } from \"@axon\u002Fengines\"\n\nexport default defineAgent({\n    engine: Axon(),\n    \u002F\u002F engine: Codex()\n    \u002F\u002F engine: Cerebras({ model: \"gpt-oss-120b\" })\n    \u002F\u002F engine: Ollama({ model: \"qwen2.5:7b\" })\n    \u002F\u002F engine: OpenRouter({ model: \"openai\u002Fgpt-4o\" })\n})\n",[35,231,232,271,277,291,302,307,312,318,324],{"__ignoreMap":33},[38,233,234,238,240,242,244,247,249,252,254,257,259,262,265,268],{"class":40,"line":41},[38,235,237],{"class":236},"sYbnZ","import",[38,239,49],{"class":48},[38,241,5],{"class":59},[38,243,81],{"class":48},[38,245,246],{"class":59},"Cerebras",[38,248,81],{"class":48},[38,250,251],{"class":59},"Codex",[38,253,81],{"class":48},[38,255,256],{"class":59},"Ollama",[38,258,81],{"class":48},[38,260,261],{"class":59},"OpenRouter",[38,263,264],{"class":48}," } ",[38,266,267],{"class":236},"from",[38,269,270],{"class":116}," \"@axon\u002Fengines\"\n",[38,272,273],{"class":40,"line":110},[38,274,276],{"emptyLinePlaceholder":275},true,"\n",[38,278,279,282,285,288],{"class":40,"line":124},[38,280,281],{"class":236},"export",[38,283,284],{"class":236}," default",[38,286,287],{"class":66}," defineAgent",[38,289,290],{"class":48},"({\n",[38,292,293,296,299],{"class":40,"line":135},[38,294,295],{"class":59},"    engine:",[38,297,298],{"class":66}," Axon",[38,300,301],{"class":48},"(),\n",[38,303,304],{"class":40,"line":146},[38,305,306],{"class":120},"    \u002F\u002F engine: Codex()\n",[38,308,309],{"class":40,"line":157},[38,310,311],{"class":120},"    \u002F\u002F engine: Cerebras({ model: \"gpt-oss-120b\" })\n",[38,313,315],{"class":40,"line":314},7,[38,316,317],{"class":120},"    \u002F\u002F engine: Ollama({ model: \"qwen2.5:7b\" })\n",[38,319,321],{"class":40,"line":320},8,[38,322,323],{"class":120},"    \u002F\u002F engine: OpenRouter({ model: \"openai\u002Fgpt-4o\" })\n",[38,325,327],{"class":40,"line":326},9,[38,328,329],{"class":48},"})\n",[15,331,332],{},"Swap it to change how the agent thinks. Your tools, prompts, scripts, and modules don't\nchange. The folder doesn't care which engine runs it.",[92,334,336],{"id":335},"deploy","Deploy",[28,338,340],{"className":98,"code":339,"language":100,"meta":33,"style":33},"axon deploy\n",[35,341,342],{"__ignoreMap":33},[38,343,344,346],{"class":40,"line":41},[38,345,60],{"class":66},[38,347,348],{"class":116}," deploy\n",[15,350,351,352,355],{},"Your agent gets a public URL, an API key, and durable cloud storage. No Dockerfile, no\ninfra config. Self-host instead with ",[35,353,354],{},"axon build"," — it produces a Docker image that runs\nanywhere. The folder is the same either way.",[92,357,359],{"id":358},"where-to-start","Where to start",[15,361,362,366,367],{},[363,364,365],"strong",{},"I want to use an agent"," → ",[368,369,371],"a",{"href":370},"\u002Fdocs\u002Fv2\u002Fgetting-started\u002Finstallation","Installation",[15,373,374,366,377],{},[363,375,376],{},"I want to build an agent",[368,378,380],{"href":379},"\u002Fdocs\u002Fv2\u002Fintroduction\u002Fagent-is-a-folder","The Agent Is a Folder",[15,382,383,366,386],{},[363,384,385],{},"I want to go deep",[368,387,389],{"href":388},"\u002Fdocs\u002Fv2\u002Fagent","Agent",[15,391,392,366,395],{},[363,393,394],{},"I want to ship a module",[368,396,398],{"href":397},"\u002Fdocs\u002Fv2\u002Fmodules\u002Foverview","Modules",[400,401,402],"style",{},"html pre.shiki code .scz_3, html code.shiki .scz_3{--shiki-default:#569CD6}html pre.shiki code .sTNBD, html code.shiki .sTNBD{--shiki-default:#D4D4D4}html pre.shiki code .s9McN, html code.shiki .s9McN{--shiki-default:#4FC1FF}html pre.shiki code .s3F5K, html code.shiki .s3F5K{--shiki-default:#9CDCFE}html pre.shiki code .sCudf, html code.shiki .sCudf{--shiki-default:#DCDCAA}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sKc5r, html code.shiki .sKc5r{--shiki-default:#CE9178}html pre.shiki code .sOLPB, html code.shiki .sOLPB{--shiki-default:#6A9955}html pre.shiki code .sYbnZ, html code.shiki .sYbnZ{--shiki-default:#C586C0}",{"title":33,"searchDepth":110,"depth":110,"links":404},[405,406,407,408,409],{"id":94,"depth":110,"text":95},{"id":172,"depth":110,"text":173},{"id":218,"depth":110,"text":219},{"id":335,"depth":110,"text":336},{"id":358,"depth":110,"text":359},"md",{},"\u002Fdocs\u002Fv2",{"title":5,"description":17},"docs\u002Fv2\u002Findex","qgxRmv6vACUEed9xOJU2qOMKfzHNRw4wa29iYaGKhVg",1782134370751]