Terminal coding agent · Windows · macOS · Linux

Axiom CLI

A terminal coding agent that can use Axiom's Architect / Builder / Critic council or an OpenCode-powered agent runtime — with OpenRouter and your own self-hosted Kestrel 1. Your files, shell, tests and Git stay on the computer where you run it.

MIT license .NET 10 · self-contained Win / macOS / Linux Axiom Code (OpenCode)
PowerShell
PS> irm https://raw.githubusercontent.com/YoMosa2009/Axiom-CLI/main/install.ps1 | iex
PS> axiom opencode install
PS> axiom connect
PS> axiom --engine opencode
Latest release
—
Released
—
Last commit
—
License
MIT
GitHub stars
—

The command-line sibling of Axiom.

Axiom CLI extracts and adapts the desktop app's coding-agent core into a standalone, cross-platform tool. The two are separate codebases with separate licenses — MIT here.

01

Two runtimes

Axiom's Architect / Builder / Critic council, or Axiom Code — Axiom's branded, pinned build of OpenCode, keeping its tools, commands and TUI behavior.

02

Runs where you run it

The TUI, tools, file edits, shell commands, tests and Git all execute locally. Only model requests travel to Kestrel 1, over HTTPS.

03

Bring any model path

Self-hosted Kestrel 1, OpenCode's account-free models, or OpenRouter — switch per task with a flag.

04

Keeps itself current

axiom update installs the latest release, and the next Axiom Code launch refreshes its managed runtime automatically.

Install

One command, any OS.

Both scripts detect your OS and architecture, download the matching release, and put axiom on your PATH. Releases are self-contained — no .NET install required.

For Axiom Code: install Node.js LTS first — Axiom uses its bundled npm client to install the pinned OpenCode runtime.

PowerShell
irm https://raw.githubusercontent.com/YoMosa2009/Axiom-CLI/main/install.ps1 | iex

Then pick how it thinks.

Terminal
axiom opencode install
axiom connect
axiom --engine opencode

A one-off task in the current repository:

Terminal
axiom code --engine opencode --yes "explain the failing test and fix it"

axiom connect asks for the Kestrel URL (press Enter to use https://ai.axiominference.work/v1) and a dedicated, revocable device key. Use a different key for each computer, and never reuse a browser key — it's saved in Axiom's encrypted local secret store.

Axiom Code runs locally, so it can use the files, tools, shell, tests and Git of the machine you launch it on.

Legacy engine

How the council works.

Three roles, one model. The whole task runs on a single model rather than silently switching mid-task, so each role can pick up exactly where the last one left off.

01

Architect

Reads your request — plus repo context in axiom code — and writes a short implementation plan.

02

Builder

Implements the plan — for coding tasks, as a structured patch proposal.

03

Critic

Reviews the result against your original request.

No issuesDone.
1–2 issuesA targeted repair pass.
3+ issuesA full revision.

Bounded to two repair passes, then the best available output is kept. Council extras: severity policy, parallel explore, a user-in-the-loop Critic, post-merge checks and .axiom/acceptance.md.

Axiom Code × Kestrel 1

Your PC's GPU, from any machine.

--engine opencode keeps Kestrel 1 as the inference server while Axiom Code provides the agent runtime. Kestrel 1 runs on whatever machine you point it at — handy for using your own desktop as inference compute from a laptop.

Its /models picker offers both Kestrel 1 · OmniCoder-2-9B Q5_K_M and Kestrel 1 Pro · Gemma 4 12B IT, each with a 262,144-token context window. Selecting one securely switches the self-hosted server; only one model is loaded into VRAM at a time.

Choose the project folder
axiom --engine opencode G:\AxiomWork
axiom G:\AxiomWork code --engine opencode "explain the failing test and fix it"

Long sessions stay usable.

Compaction is enabled for Kestrel sessions, so long agent runs don't run out of room:

Service window
262,144 tokens
Reserved for reply
16,384 tokens
Compaction starts at
245,760-token input budget
What it keeps
Six newest user turns (up to 15,000 recent tokens); older bulky tool output is pruned
Stall safeguard
15-minute no-output limit; no other fixed deadline

Commands.

axiom chat remains a supported alias for the default TUI. Bare axiom code uses Axiom Code; use --engine legacy to select the council explicitly.

CommandWhat it does
axiom [--model <id>]Full-window TUI chat (default). / tools · @ lock folder · /help
axiom configStore your OpenRouter key, a self-hosted endpoint, and/or a Tavily key (encrypted at rest)
axiom connectSave Kestrel 1's HTTPS endpoint and this computer's revocable access key
axiom code "<task>"Axiom Code on the current directory, using the active Kestrel model
axiom [path] --engine opencodeAxiom Code agent TUI in path, backed by Kestrel 1
axiom [path] code --engine opencode [--yes] [--json] "<task>"One-off Axiom Code task in path
axiom [path] --model opencode/big-pickleAccount-free OpenCode TUI
axiom code --engine legacy [--model <id>] "<task>"Architect → Builder → Critic council
axiom connect openrouterReplace an unreadable council credential through hidden local input
axiom opencode installInstall or refresh Axiom Code (the pinned OpenCode runtime) for the current user
axiom review [--plan] "<prompt>"Read-only excerpt review of the tracked repository (see below)
axiom updateDownload and install the latest release

Model aliases: eidos (Eidos 1, general-purpose reasoning) and hepha (Hepha 1, code-specialized) match the desktop app; kestral is your own self-hosted OpenAI-compatible endpoint, configured through axiom config (base URL, model id and API key).

A full-window TUI that behaves the same everywhere.

axiom paints its own interface on Windows, macOS and Linux, so the host terminal's scrollbar isn't part of the experience. Shell tools use PowerShell/pwsh on Windows and bash/sh elsewhere.

INTERFACE

Fixed header, pinned prompt

Scrollable transcript (PgUp/PgDn, arrows, wheel), a Ctrl+K command palette, and Ctrl+Shift+M to cycle approval modes: auto, ask, plan.

SANDBOX

Locked to your workspace

/workspace <path> or @ confines the agent to a folder — the sandbox cannot leave it. Secrets are redacted from output.

SESSIONS

Nothing gets lost

Sessions auto-save. Use /sessions, /pick, /del and /resume to move between them.

WORKFLOW

Review before you accept

/checkpoint · /plan · /changes · /accept · /reject · /replay · /jobs · /watch · /sticky · /pr

TOOLS

Real engineering tools

str_replace / apply_patch / write_files, fetch_url, run_tests, find_symbol, plus /network and /policy controls.

INTELLIGENCE

Repo-aware

Repo map and retrieval, history compaction, Critic evidence rules, automatic diagnostics, /spec and /map.

Scoped source review — with honest coverage.

Two ways to have a model read a codebase, both built to report exactly what was and wasn't covered instead of pretending to full comprehension.

Automatic coverage in Axiom Code

Broad requests such as axiom code "Analyze this repository" schedule source reads inside the ordinary runtime: up to four 200-line ranges per model turn, continuing from the actual returned line boundary. Narrow requests containing only, just or limited to keep on-demand tool use.

The final coverage receipt reports supplied files, omissions and unread ranges. Limits are 10,000 inventory entries and 512 read ranges; failures, truncation and exhausted limits are reported as incomplete, never as full coverage.

Explicit excerpt review

From a Git repository
axiom review --plan
axiom review "Find correctness bugs"

A separate, read-only command: it previews a deterministic inventory of tracked source, then reviews 12,000-character excerpts against the current Kestrel model — each with a fresh request, no tools, a 2,048-token response cap and a three-minute limit. A JSON report is checkpointed after every pass; it records answers, hashes and omissions but never source excerpts or keys.

Coverage means source supplied, not verified comprehension. Independent excerpts can't establish cross-file correctness, and there is deliberately no generated final summary that could hide missed work. This mode doesn't edit files or run tests.

System requirements

OS
Windows (x64), macOS (x64 + arm64), Linux (x64 + arm64)
Account
None for OpenCode's listed free models; an OpenRouter key stays optional for the council
Python tool
System Python 3 on PATH
Java tool
A JDK (javac / java) on PATH
.NET
Not required — releases are self-contained

Build from source

Requires the .NET 10 SDK
git clone https://github.com/YoMosa2009/Axiom-CLI.git
cd Axiom-CLI
dotnet build
dotnet run --project Axiom.Cli -- chat
dotnet test

What's not in v1

  • In-process local model inference. The CLI doesn't run a GGUF/llama.cpp model itself; pointing it at a self-hosted OpenAI-compatible endpoint is supported today (still a network call — just to a server you control).
  • Visual/artifact rendering, KaTeX math, document ingestion. GUI-specific desktop features with no terminal equivalent yet.
  • MCP connectors (GitHub / Google / Todoist integrations from the desktop app).

Looking for the graphical app? See Axiom for Windows.

Releases & recent activity.

Pulled live from GitHub, so this always reflects what has actually shipped.

Latest release

Release details are loading — or see them on GitHub.

Recent commits

Commit history is loading.

Version history

Version history is loading — or browse every release on GitHub.