.agent/

Generated output folder. Created by axon prepare and axon build. Never edit anything inside it — the whole folder is regenerated on every prepare run.

.agent/
├── axon.manifest.json   # full agent manifest — tools, prompts, scripts, routes
├── axon.d.ts            # global type declarations for scripts and routes
├── tools.d.ts           # typed tool namespace declarations
├── tool-globals.d.ts    # tool function globals
├── prompts.d.ts         # prompt name declarations
├── scripts.d.ts         # script name declarations
├── components.d.ts      # auto-imported component declarations
├── tsconfig.json        # TypeScript config extending the agent's own
├── Dockerfile           # container image for deployment
├── .dockerignore
├── image.json           # Docker image metadata
└── source.tar.gz        # source archive for deployment

What axon prepare generates

Running axon prepare (or opening Axon, which runs it automatically) scans the agent folder and generates:

Type declarations.d.ts files that give your IDE full autocomplete on axon.tools.*, axon.prompt("name"), and axon.scripts.request("name"). After adding a new tool function or prompt file, run axon prepare to refresh types without reopening the agent.

Manifestaxon.manifest.json is the machine-readable description of the entire agent: every tool function with its declaration and JSDoc, every prompt with its props, every script with its args, every route with its method and path. The runtime uses this to register tools with the model and to power the TUI palette. The registry uses it for discovery and display.

What axon build adds

axon build runs prepare first, then adds deployment artifacts:

Dockerfile — a production container image for the agent. Self-contained — includes the agent source, dependencies, and the Axon runtime. Build it, push it, deploy it to any container platform.

source.tar.gz — source archive used by Axon Cloud deployment. Contains everything needed to run the agent on managed infrastructure.

image.json — metadata about the built image: digest, tags, build timestamp.

.gitignore

Add .agent/ to your .gitignore. It's generated output — committing it adds noise and creates merge conflicts. The manifest and declarations are always regenerated fresh.

# .gitignore
.agent/

The manifest in detail

axon.manifest.json is what the runtime and the registry actually read. It's worth understanding what's in it:

{
  "name": "my-agent",
  "version": "0.1.0",
  "kind": "agent",
  "tools": [
    {
      "name": "kanban",
      "origin": "src",
      "fns": [
        {
          "name": "list",
          "declaration": "function list(): Promise<Task[]>",
          "jsdoc": "List all tasks across the three kanban stages."
        }
      ]
    }
  ],
  "prompts": [
    {
      "name": "session",
      "kind": "dynamic",
      "filePath": "src/prompts/session.vue"
    }
  ],
  "scripts": [
    {
      "name": "scout",
      "args": []
    }
  ],
  "routes": [
    {
      "method": "POST",
      "path": "/api/scout",
      "file": "server/api/scout.post.ts"
    }
  ],
  "context": {
    "boot": {
      "path": "src/boot.vue",
      "kind": "dynamic"
    }
  }
}

The tool declarations and JSDoc in the manifest are exactly what the model sees when deciding whether and how to call a tool. Write JSDoc as if explaining the function to someone who has never seen your code — because that's what it's for.