Your First Agent

You already have an agent — Zeno, cloned on first boot, with filesystem and shell access. Ask it to read a file and watch it call a tool, reason over the result, and answer. That loop is the runtime, and you have not written a line yet.

This page is the step after: making one that is yours.

Scaffold

:init from inside the terminal — type a name and press Enter:

The command palette descended into init with the name 'henry' typed, described as 'Scaffold a new agent'

Or from the shell, if you would rather:

axon init my-agent
cd my-agent

Either way you get a real agent, not a stub. It boots, accepts sessions, and runs scripts immediately — dependencies installed and types generated, with no separate prepare step.

The folder is the agent

my-agent/
├── src/
   └── boot.vue     # who the agent is
├── tests/           # a boot test, to prove it runs
├── axon.config.ts   # identity, engine, modules, policy
└── package.json

That is the whole agent. The rest of the shape is opt-in — add src/tools/ when it needs to do something, src/scripts/ when work needs orchestrating, src/prompts/ for context it can load, server/ for HTTP routes, data/ for durable storage. Axon discovers whatever is there at boot; folders you do not use do not exist.

Capabilities are the exception: modules are declared in axon.config.ts rather than dropped in a folder, so what an agent depends on is readable in one file.

Your IDE understands the project, you version control it, you bun add into it.

Change who it is

src/boot.vue is the standing system prompt: rendered once at boot, present for every session and every invocation.

<!-- src/boot.vue -->
<template>
    <h1>My Agent</h1>
    <p>You are a coding assistant working in this repository.</p>
</template>

Save it while the agent is running and it hot-reloads in about 40ms, session intact. Ask the agent who it is before and after — that round trip, edit to visible change with nothing restarted, is what the rest of the authoring surface feels like.

Where to go next

You have the folder and you have the loop. Everything below is one step deeper, in the order you will meet it:

Identity — what boot.vue can do beyond a paragraph.

Tools — export a typed function from src/tools/ and the agent can call it. No registration, no schemas.

Scripts — the primary authoring unit. Load context, call the agent, process the result; runs the same from the shell, the terminal, or an HTTP route.

Policy — what the agent is allowed to touch.

Deployaxon deploy puts this same folder in the cloud with a public URL, an API key and durable storage. Nothing about it changes.

The full authoring surface is the Agent track. To go the other way — deeper into the terminal you are running all of this from — start at Terminal.