modules/

modules/ contains installed capability packages. Each module contributes tools, prompts, scripts, and routes to the agent. Axon loads everything in modules/ automatically at boot — no imports, no registration.

modules/
└── @axon/
    ├── github/
   ├── module.config.ts
   ├── package.json
   ├── src/
   ├── tools/
   └── prompts/
   └── server/
       └── api/
    └── linear/
        ├── module.config.ts
        └── src/
            └── tools/

Installing modules

axon install @axon/github
axon install @axon/linear

Modules land in modules/ as source on disk. You can read every file, edit them, and commit them to git.

What modules contribute

Each module can add any combination of:

ContributionWhereHow it's accessed
Toolssrc/tools/axon.tools.<module>.*
Promptssrc/prompts/axon.prompt("<module>:name")
Scriptssrc/scripts/axon run <module>:name
Routesserver/api/Mounted under /api/

A module's tools land in a namespace derived from the module name. @axon/github contributes github.*. @axon/linear contributes linear.*. They compose cleanly with your own tools.

// your tool and a module tool — same API surface
const pr = await axon.tools.github.getPr(42)
const task = await axon.tools.kanban.nextTask()

Namespacing

Module contributions are prefixed to prevent collisions:

modules/@axon/github/src/tools/pulls.ts github.*
modules/@axon/github/src/prompts/triage.md "github:triage"
modules/@axon/github/src/scripts/pr-review.ts "github:pr-review"

Your own tools in src/tools/ are never prefixed — they're addressed directly. Workspace tools from .agents/ use the workspace.* prefix. Module tools use the module name.

Modules run under your policy

Module tool calls go through the same capsule policy as your own tools. If your base policy doesn't allow network calls to a host that a module tool needs, the call is blocked — exactly as if your own tool tried it. Modules contribute capabilities; they don't gain authority.

Modules are source

The contents of modules/ are ordinary source files. You can read them, modify them, and understand exactly what an installed module does. If a module ships a webhook route, you can read that route. If it emits hooks, you can see what events it fires.

For authoring and publishing your own modules, see Modules.