selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

Axe logo

Self-host Axe

v1.11.0

Run single-purpose AI agents from the command line

ReleaseOpen SourceApache-2.0
docker run --rm -v ./my-config:/home/axe/.config/axe -e ANTHROPIC_API_KEY axe run my-agent
Updated6 days ago
LanguageGo
Setup difficultyEasy
Stars
907

What is Axe?

Axe is a Go command-line tool for defining and running small, single-purpose LLM agents, in the Unix spirit: each agent does one job, is described in a version-controllable TOML file, and is invoked from the terminal, a pipe, a git hook, or cron. Agents carry their own system prompt, model choice, skill files, working directory, persistent timestamped memory, and can delegate work to sub-agents with depth limits and parallel execution. Built-in tools let an agent read, write, and edit files sandboxed to its working directory, run shell commands, fetch URLs, and search the web, with an hostname allowlist and SSRF protections plus optional per-run token budgets; external tools can be added via MCP servers. It talks to Anthropic, OpenAI, Ollama, OpenCode, AWS Bedrock, and Atlas Cloud, using only four direct Go dependencies. You install it as a pre-built binary for Linux, macOS, and Windows, via go install, or in a hardened non-root Docker container with an optional Ollama sidecar through the included compose file. It is an executor, not a scheduler: there is no daemon, GUI, or built-in workflow orchestration.

Should you self-host Axe?

Axe scores 51/100 on selfhost.directory (how scoring works) and ranks #94 of 209 in AI Agents. It has 907 GitHub stars.

It shipped 10 stable releases in the past year. The latest, v1.11.0, came out on 22 October 2026. New versions land roughly every 5 days.

Setup is easy: most people get it running in one sitting. It is Apache-2.0-licensed and written mostly in Go.

Its closest alternative on selfhost.directory is Orca (91/100, 108 446 stars). It scores higher overall, so compare the two before you pick. See Axe vs Orca side by side.

Features

  • Built-in agent tools
  • Configurable retry
  • Dry Run Mode
  • JSON Output
  • Local agent directory discovery
  • MCP tool support
  • Memory garbage collection
  • Multi-Provider LLM Support
  • Output hostname allowlist
  • Persistent memory
  • Reusable skill system
  • Stdin piping
  • Sub-agent delegation
  • Token budget per run
  • TOML agent configuration

Axe README

How to install Axe

Install Axe with Docker

docker build -t axe .
docker run --rm \
  -v ./my-config:/home/axe/.config/axe \
  -e ANTHROPIC_API_KEY \
  axe run my-agent

Container runs as non-root (UID 10001) with a read-only root filesystem and all capabilities dropped; mount your config directory and pass API keys as environment variables.

How to configure Axe

  • --agents-dir(auto-discover)Override agent search directory

    Override agent search directory

  • ANTHROPIC_API_KEYAPI authentication

    API authentication

  • AXE_ANTHROPIC_BASE_URLOverride Anthropic API endpoint

    Override Anthropic API endpoint

  • AXE_OLLAMA_BASE_URLOllama endpoint (default in compose: `http://ollama:11434`)

    Ollama endpoint (default in compose: `http://ollama:11434`)

  • AXE_OPENAI_BASE_URLOverride OpenAI API endpoint

    Override OpenAI API endpoint

  • AXE_OPENCODE_BASE_URLOverride OpenCode API endpoint

    Override OpenCode API endpoint

  • AXE_WEB_SEARCH_BASE_URLOverride web search endpoint

    Override web search endpoint

  • backoff"exponential"Strategy: `"exponential"` (with jitter), `"linear"`, or `"fixed"`

    Strategy: `"exponential"` (with jitter), `"linear"`, or `"fixed"`

  • --dry-runfalseShow resolved context without calling the LLM

    Show resolved context without calling the LLM

  • headersHTTP headers; values support `${ENV_VAR}` interpolation

    HTTP headers; values support `${ENV_VAR}` interpolation

  • initial_delay_ms500Base delay in milliseconds before the first retry

    Base delay in milliseconds before the first retry

  • --jsonfalseWrap output in a JSON envelope with metadata

    Wrap output in a JSON envelope with metadata

  • max_delay_ms30000Maximum delay cap in milliseconds

    Maximum delay cap in milliseconds

  • max_retries0Number of retry attempts after the initial request. 0 disables retry.

    Number of retry attempts after the initial request. 0 disables retry.

  • --max-tokens0 (unlimited)Cap cumulative token usage for the run (exit code 4 if exceeded)

    Cap cumulative token usage for the run (exit code 4 if exceeded)

  • --modelfrom TOMLOverride the model (e.g. `anthropic/claude-sonnet-4-20250514`)

    Override the model (e.g. `anthropic/claude-sonnet-4-20250514`)

  • nameHuman-readable identifier for the server

    Human-readable identifier for the server

  • OPENAI_API_KEYAPI authentication

    API authentication

  • -p(none)Inline prompt used as the user message; takes precedence over stdin

    Inline prompt used as the user message; takes precedence over stdin

  • --skillfrom TOMLOverride the skill file path

    Override the skill file path

  • TAVILY_API_KEYTavily web search API key

    Tavily web search API key

  • --timeout120Request timeout

    Request timeout

  • transport`"sse"` or `"streamable-http"`

    `"sse"` or `"streamable-http"`

  • urlMCP server endpoint URL

    MCP server endpoint URL

  • --verbosefalsePrint debug info (model, timing, tokens, retries) to stderr

    Print debug info (model, timing, tokens, retries) to stderr

  • --workdirfrom TOML or cwdOverride the working directory

    Override the working directory

Axe releases & version history

More in CLI Tools

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…