/ docs
Get axion running.
Axion is a Swift CLI plus a helper process that talks to the macOS Accessibility tree. You'll need macOS, Swift 5.9+, and to grant accessibility permission.
Install
Build from source — a homebrew tap is on the roadmap.
git clone https://github.com/terryso/axion cd axion swift build -c release cp .build/release/axion /usr/local/bin/
Configure
Interactive setup walks you through provider, API key, and model. doctor validates the environment.
axion setup axion doctor
Run tasks
The default run command executes live. Reach for --dryrun first when you're poking at a new app.
axion run "Open Calculator and compute 123 + 456" axion run --dryrun "Open Calculator and compute 123 + 456" axion run --fast "Open Calculator" axion run --max-steps 10 "Create a new note in Notes"
Cross-run memory
Memory is on by default. Inspect what Axion has learned, scope it down, or disable it for a single run.
axion memory list axion memory clear --app com.apple.calculator axion run --no-memory "Open Calculator"
Skills — record and replay
Record a workflow, compile it, replay it without LLM calls. Skills live in ~/.axion/skills/.
axion record "open_calculator" # ...perform desktop operations, Ctrl-C to stop axion skill compile open_calculator axion skill run open_calculator axion skill list axion skill delete open_calculator
HTTP API server
Run Axion as a service. SSE delivers live events per run.
axion server --port 4242 --auth-key mysecret --max-concurrent 3
GET /v1/health
POST /v1/runs {"task": "..."}
GET /v1/runs/{id}
GET /v1/runs/{id}/events # SSE streamMCP server mode
Expose Axion to any MCP client.
axion mcp
# Claude Code config:
{
"mcpServers": {
"axion": {
"command": "/path/to/axion",
"args": ["mcp"]
}
}
}config.json
Located at ~/.config/axion/config.json. Priority: defaults → file → env vars → CLI flags.
{
"provider": "anthropic",
"apiKey": "sk-...",
"model": "claude-sonnet-4-20250514",
"maxSteps": 20,
"maxBatches": 6,
"maxReplanRetries": 3,
"traceEnabled": true
}