agents/

All agents live at ~/.axon/agents/. Each subfolder is a self-contained agent — a standard Bun TypeScript project with the structure Axon knows how to read.

~/.axon/agents/
├── default/
   ├── axon.config.ts
   ├── .env
   ├── package.json
   ├── tsconfig.json
   ├── src/
   ├── boot.vue
   ├── tools/
   ├── prompts/
   └── scripts/
   ├── server/
   ├── data/
   └── modules/
└── my-agent/
    └── ...

The default agent

Axon ships with an agent pre-populated at agents/default/. Running axon opens it. It has @axon/fs and @axon/fetch pre-installed and sensible env passthrough for development use.

It is a regular agent. The name default is just the folder name — nothing in the runtime treats it specially. Edit it, install modules into it, or ignore it entirely and create your own.

Creating an agent

axon init my-agent

Scaffolds ~/.axon/agents/my-agent/ with axon.config.ts, .env, package.json, tsconfig.json, and empty src/, server/, and data/ directories. No tools pre-installed.

Open it with:

axon --agent my-agent

Installing modules into an agent

axon install @axon/github              # install into the active agent
axon install @axon/github --agent my-agent  # install into a specific agent

Installing copies module source into modules/, merges npm dependencies into package.json, and runs bun install. Nested module dependencies are resolved automatically.

Publishing an agent to the registry

axon agent publish

Packages axon.config.ts, src/, package.json, and axon.manifest.json and uploads to the registry. Excludes .env, node_modules/, and generated files.

Someone who installs a published agent gets a complete folder. They open it with axon --agent <name> and add the env keys declared in env.needs to their .env.

See Publishing agents for what is included and excluded.