Get started

[ AxiomCore · Documentation ]

Install the Axiom CLI

Install Axiom CLI 0.149.1, check your environment with axiom doctor and axiom onboard, and add the host, extractor or editor support your path needs.

Install the Axiom CLI (axiom), check your environment, then add only the tools your path needs. Local authoring, building and testing do not need a Cloud account.

Supported platforms

PlatformCLI 0.149.1 statusInstall with
macOS arm64 (Apple silicon)AlphaInstaller script, Homebrew or manual download
Linux amd64 and arm64, glibc 2.36 or newerExperimentalInstaller script
macOS on Intel, Windows, musl Linux (Alpine)No buildNot available

Debian 12 and Ubuntu 24.04 or newer meet the glibc requirement. The walkthroughs in these docs are checked on macOS arm64. See the support matrix for the other tools' platforms.

1. Install the CLI

Terminal
curl -fsSL https://axiomcore.dev/install | bash

The script needs curl, uname and python3. It:

  1. Detects your OS and CPU, and stops on an unsupported platform.
  2. Selects the newest CLI release that has an archive for your platform.
  3. Checks the archive's SHA-256 digest against the published release.
  4. Installs axiom into /usr/local/bin, asking for sudo if that directory is not writable.
  5. On Linux, also installs the bundled PostgreSQL 17 validator into ~/.axiom/engines/postgres/17.

Set these variables for the bash process to change the defaults:

VariableDefaultEffect
INSTALL_DIR/usr/local/binInstall directory. It must already exist.
VERSIONNewest releaseExact version: 0.149.1, v0.149.1 or cli-v0.149.1
Terminal: pinned version, no sudo
mkdir -p "$HOME/.local/bin"
curl -fsSL https://axiomcore.dev/install | VERSION=0.149.1 INSTALL_DIR="$HOME/.local/bin" bash

If the install directory is not on your PATH, the script prints the export PATH=... line to add to your shell profile.

The Homebrew formula supports macOS arm64 only and installs 0.149.1.

Terminal
brew install AxiomCore/tap/axiom

Download and verify the macOS arm64 archive:

Terminal
mkdir axiom-install
cd axiom-install
curl -fL https://github.com/AxiomCore/AxiomCore/releases/download/cli-v0.149.1/axiom-macos-arm64.tar.gz -o axiom.tar.gz
echo '6747941bb3ff5917baac691b8d26391e34ad31d8c1fbffd688b358eb3463e50d  axiom.tar.gz' | shasum -a 256 -c -
tar -xzf axiom.tar.gz
mkdir -p "$HOME/.local/bin"
install -m 755 axiom "$HOME/.local/bin/axiom"
export PATH="$HOME/.local/bin:$PATH"

Add the export PATH line to your shell profile, then delete the axiom-install directory. On Linux, use the installer script: it also places the bundled PostgreSQL validator.

ArchiveSHA-256
axiom-macos-arm64.tar.gz6747941bb3ff5917baac691b8d26391e34ad31d8c1fbffd688b358eb3463e50d
axiom-linux-amd64.tar.gz3577ebc92722269ce7ddbc9770b9dfa4d62b99d63409d5af3ce02ef496ac193f
axiom-linux-arm64.tar.gz09928a0c3169d94faeaa9c1dc79d60bb22399358de33c71b64861ea32064ad20

Confirm the installed version:

Terminal
axiom --version
Expected output
axiom 0.149.1

2. Check your environment

Run both commands from your application's root directory.

axiom doctor

axiom doctor reports prerequisites without writing files, logging in, pulling contracts or showing credentials.

Your application directory
axiom doctor
axiom doctor --json --strict > axiom-doctor.json

Each check reports PASS, WARN or FAIL, a detail line and, when available, a fix.

CheckWhat it looks at
cliThe running CLI version
control_planeThe active Cloud endpoint, https://api.axiomcore.dev by default
authenticationWhether a Cloud session exists, without revealing it
contract_sourceaxiom.acore in this directory
artifactWhether backend.axiom or axiom.axiom is readable
dependenciesWhether AxiomDeps.toml is valid
project_linkWhether this directory is linked to a Cloud project
python, go, node, npm, flutterThe toolchain, only when the project needs it: Python for main.py, app.py, requirements.txt or pyproject.toml; Go for go.mod or main.go; Node.js and npm for package.json or an ATMX web or React client; Flutter for pubspec.yaml or a Flutter client

--json prints a stable report with schema_version, control_plane, project_root and checks (each with id, status, summary, detail and fix). --strict exits non-zero when any check fails; warnings do not fail. The report never contains tokens, keys or contract contents, but project_root is a local path, so review it before you post the report publicly.

axiom onboard

axiom onboard detects whether the directory holds a backend, a frontend or both, and prints the shortest supported next step. It writes nothing unless you pass --apply, and it pulls a contract only when you pass --contract.

GoalCommand
Print a plan for this directoryaxiom onboard
Create axiom.acore for a detected FastAPI or Go backendaxiom onboard --role backend --apply
Name the FastAPI entrypoint explicitlyaxiom onboard --role backend --entrypoint main.py:app --module axiom-fastapi --apply
Plan a client integrationaxiom onboard --role frontend --framework atmx-web
Pull a contract and generate a client in one stepaxiom onboard --role frontend --contract organization/project --framework atmx-web

Without --role, axiom.acore, main.py, app.py, pyproject.toml, go.mod or main.go means backend, and package.json, pubspec.yaml or AxiomDeps.toml means frontend; both means fullstack. main.py, app.py (FastAPI) and main.go (Go) are detected as entrypoints. pubspec.yaml selects flutter, a React dependency selects atmx-react, and other package.json projects use atmx-web. --framework also accepts dart.

--apply only creates axiom.acore and never overwrites an existing one. Releasing is always a separate, explicit step:

Backend directory
axiom build
axiom login
axiom build --release --out backend.axiom

3. Add the tools your path needs

PathAdd
Acore backend or SQLite databaseNothing else
Acore UI in a browserWeb UI host 0.6.12
Existing FastAPI backendThe FastAPI extractor, plus your Python dependencies to run the service
Existing Go backendA Go toolchain and the Go extractor
Web or React clientatmx-cli 0.146.7 as a project dev dependency; see Web
Flutter or Dart clientSee Flutter and Dart

Web UI host

Terminal
axiom ui host install --target web --version 0.6.12 --non-interactive
Expected output
Verified and installed Axiom UI Host 0.6.12 (browser) for web.

Always pass --target web: axiom ui host commands default to ios. Check the installed host with axiom ui host status --target web. The signed host must match the CLI's capabilities, and an older host can fail even when both are installed. See Versioning and deprecation for compiler, host, SDK and editor compatibility.

Backend extractors

An extractor reads a FastAPI or Go service and produces its contract. FastAPI extraction imports your application module, so keep import-time code free of migrations, worker startup and production connections. Read How extraction works before you use it in CI.

The CLI looks for extractors at ~/.acore/bin/axiom-fastapi-extractor and ~/.acore/bin/axiom-go-extractor, or at the paths in AXIOM_FASTAPI_EXTRACTOR and AXIOM_GO_EXTRACTOR. Published builds are macOS arm64 only. In CLI 0.149.1, axiom install <extractor> --module does not find these builds, so install them directly:

Terminal
mkdir -p "$HOME/.acore/bin"
curl -fL https://github.com/AxiomCore/AxiomCore/releases/download/extractor-fastapi-v0.1.4/axiom-fastapi-macos-arm64 -o "$HOME/.acore/bin/axiom-fastapi-extractor"
echo "8f0d08c831821c7a9f89ee6b11694fe64f0d68abc7c4169c3f8157929cd3e0f1  $HOME/.acore/bin/axiom-fastapi-extractor" | shasum -a 256 -c -
chmod 755 "$HOME/.acore/bin/axiom-fastapi-extractor"
Terminal
mkdir -p "$HOME/.acore/bin"
curl -fL https://github.com/AxiomCore/AxiomCore/releases/download/extractor-go-2026.10.14.2/axiom-go-extractor-macos-arm64 -o "$HOME/.acore/bin/axiom-go-extractor"
echo "a38b7c708cba319eefc07256fc8aefef95f4446a0d18b368c932b0f9f16158df  $HOME/.acore/bin/axiom-go-extractor" | shasum -a 256 -c -
chmod 755 "$HOME/.acore/bin/axiom-go-extractor"

A build that needs a missing extractor fails with MISSING_EXTRACTOR: fastapi-extractor or MISSING_EXTRACTOR: go-extractor.

4. Set up your editor

The CLI includes the Acore language server, acore-lsp. It runs offline over stdin and stdout.

Terminal
axiom lsp --version
axiom install lsp-server
Expected output
acore-lsp 0.1.4 (axiom-editor/v1)
Installed Acore LSP: <home>/.axiom/bin/acore-lsp
Use this absolute path in your editor's language-server binary setting.
Version metadata: <home>/.axiom/bin/acore-lsp --version-json
Run `axiom install lsp-server` again after updating the CLI to update this server.

axiom install lsp-server copies a self-contained server to ~/.axiom/bin/acore-lsp. It does not change editor settings or PATH. Point an editor that can launch a stdio language server at the printed path, or have it run axiom lsp. Run axiom install lsp-server again after you update the CLI. A standalone acore-lsp 0.1.4 build for macOS arm64 is also published. No Acore editor extension is published in the VS Code Marketplace, Open VSX or the Zed extension registry yet.

5. Connect to Axiom Cloud (optional)

Local commands such as check, build, run, test, inspect, database and ui work without an account. Axiom Cloud is in private alpha. The first command that uses Cloud, such as axiom login, axiom build --release or axiom pull organization/project, asks once for a referral code to register this machine. In CI, set AXIOM_REFERRAL_CODE; without it the command fails instead of prompting.

If you do not have a code, join the waitlist:

Terminal
axiom join you@yourcompany.com

Troubleshooting

SymptomFix
No verified axiom-<platform>.tar.gz existsNo build exists for your platform, for example an Intel Mac.
Unsupported OSNative Windows has no build.
Linux CLI packages require glibc 2.36 or newerUse Debian 12, Ubuntu 24.04 or another glibc 2.36+ distribution.
python3 is required but not installedInstall Python 3; the installer uses it to verify the archive.
axiom: command not foundAdd the install directory to PATH.
MISSING_EXTRACTOR: ...Install the extractor as shown above, or set its path variable.
UI host is missing or incompatibleRun the host install command with --target web --version 0.6.12.
Unexpected referral code promptThe command uses Cloud. Use a local command, or get a code with axiom join.

Next steps