CLI

[ AxiomCore · Documentation ]

Setup and project commands

Reference for the Axiom CLI commands that set up a project, diagnose prerequisites, sign in, link Cloud projects, install tools, and support editors and the REPL.

These commands prepare a machine and a repository for AxiomCore: create a backend contract source, diagnose prerequisites, sign in to Axiom Cloud, link a directory to a Cloud project, install tools, and run the editor services, REPL and evaluator. This page covers Axiom CLI 0.149.1.

CommandNetwork or Cloud
init, onboard (without --contract), doctor, editor, lsp, repl, eval, install lsp-server, install FILE.axiomappNone. They work offline.
login, project list, project create, project link, project rotate-keyNetwork and Axiom Cloud. All but login need a prior axiom login.
joinNetwork. No sign-in or referral code.
onboard --contract, install NAME --module, project resolveNetwork.
cache, project packageNone.

Every command outside the first row, except join, passes the one-time Cloud access check described in the CLI overview.

Cloud accounts and projects are Alpha and require their configured services.

Start a project

axiom init

Create an axiom.acore backend contract source for an existing FastAPI or Go service. With both an entrypoint and --module, it writes the file directly; otherwise it opens a short terminal wizard.

Usage
axiom init [OPTIONS] [ENTRYPOINT]
OptionValueDefaultMeaning
[ENTRYPOINT]entrypointwizard: ./main.py:app or ./main.goService entrypoint, for example main.py:app.
--modulemodulewizard: axiom-fastapi or axiom-goCompiler module that extracts the service.

init also writes type = "backend" into AxiomDeps.toml, keeping its other settings. It refuses to overwrite an existing axiom.acore. The wizard detects Python (requirements.txt, pyproject.toml, main.py) or Go (go.mod, main.go) and uses the directory name as the project name. Use the arrow keys and Enter; Esc or Ctrl+C leaves, and q closes the success screen. Building the contract needs the extractor described in Install the Axiom CLI.

Terminal
axiom init main.py:app --module axiom-fastapi

axiom onboard

Detect the repository's role and print the shortest supported first path. Run it from the application root before you create files.

Usage
axiom onboard [OPTIONS]
OptionValueDefaultMeaning
--rolebackend, frontend, fullstackdetectedPath to plan.
--entrypointentrypointdetected (main.py:app, app.py:app, main.go)Backend entrypoint, for example main.py:app.
--modulemoduledetectedExtractor module, for example axiom-fastapi.
--frameworkflutter, dart, atmx-web, atmx-reactdetectedClient target.
--contractreferencenoneContract to pull for a frontend path. This is the only option that pulls, and it needs network.
--applyflagoffCreate the detected backend axiom.acore. No release is uploaded.

A backend is detected from axiom.acore, main.py, app.py, pyproject.toml, go.mod or main.go; a frontend from package.json, pubspec.yaml or AxiomDeps.toml; both give fullstack. onboard does not log in, release or pull unless you supply the option that needs it. --apply only creates axiom.acore and refuses to overwrite one.

GoalCommand
Create a detected FastAPI or Go contract sourceaxiom onboard --role backend --apply
Specify a FastAPI entrypointaxiom onboard --role backend --entrypoint main.py:app --module axiom-fastapi --apply
Plan client integrationaxiom onboard --role frontend --framework atmx-web
Pull and generate a client in one stepaxiom onboard --role frontend --contract org/project --framework atmx-web

Releasing is always a separate, explicit step:

Terminal
axiom build
axiom login
axiom build --release --out backend.axiom

axiom doctor

Inspect local prerequisites without changing files, logging in or pulling a contract. It is safe in a new checkout and in CI.

Usage
axiom doctor [OPTIONS]
OptionValueDefaultMeaning
--jsonflagoffPrint a stable machine-readable report for CI or support tickets.
--strictflagoffExit non-zero when a required check fails. Warnings do not fail.
Check IDWhat it reports
cliThe running CLI version.
control_planeThe active control plane, https://api.axiomcore.dev by default.
authenticationWhether a Cloud session is saved. Credentials are never shown.
contract_sourceWhether axiom.acore exists in the current directory.
artifactWhether backend.axiom (or legacy axiom.axiom) is present and readable.
dependenciesWhether AxiomDeps.toml is valid.
project_linkWhether the directory is linked to a Cloud project.
python, go, node, npm, flutterTool checks, added only when the project needs that tool.

Each check has an id, a status (pass, warn or fail), a summary, a detail and, when available, a fix with the next command. Failures are missing prerequisites such as an invalid AxiomDeps.toml, an unreadable artifact or a missing tool.

Terminal
axiom doctor --json --strict > axiom-doctor.json
Expected output (excerpt)
{
  "schema_version": 1,
  "control_plane": "https://api.axiomcore.dev",
  "project_root": "/path/to/app",
  "checks": [{ "id": "cli", "status": "pass", "summary": "Axiom CLI 0.149.1 is available", "detail": "The current executable is running normally.", "fix": null }]
}

The report never includes tokens, keys or contract contents, but project_root is a local path: review it before you share a report publicly.

Sign in to Axiom Cloud

axiom login

Sign in to Axiom Cloud with the device authorization flow. The terminal shows a code and a URL, then waits until you approve the code in the browser.

Usage
axiom login

No options other than --help.

The session is saved in the CLI profile directory (see the CLI overview). Browser sign-in and CLI device login are separate sessions. In automation, authenticate through the supported environment and pass explicit project and version options instead of relying on terminal selection.

axiom join

Join the Axiom Cloud waitlist when you do not have a referral code.

Usage
axiom join <EMAIL>
OptionValueDefaultMeaning
<EMAIL>email addressrequiredAddress to add to the waitlist.

join only adds the address to the waitlist. The referral code itself is asked for once, by the first command that uses Axiom Cloud, or read from AXIOM_REFERRAL_CODE. Local commands work without joining.

axiom project

Manage Axiom Cloud projects and local Acore project packages.

Usage
axiom project <COMMAND>
SubcommandPurpose
listList the Cloud projects you can access.
createCreate a Cloud project and link this directory to it.
linkLink this directory to a Cloud project.
rotate-keyReplace the project's active signing key.
resolveResolve the dependencies of a local Acore project.
packagePackage a local Acore project.

Project operations need authentication, project membership and a reachable control plane. A directory link is stored in your CLI profile, not in the repository.

axiom project list

List the Cloud projects you can access, by name and slug.

Usage
axiom project list

No options other than --help.

axiom project create

Create a Cloud project and link the current directory to it.

Usage
axiom project create [OPTIONS]
OptionValueDefaultMeaning
--nametextpromptedDisplay name.
--slugslugprompted, from the nameLowercase project identifier used in release URLs, for example payments-api. Letters, numbers and single hyphens.
--descriptiontextprompted, may be emptyProject description.
--pathpathnoneA .axiom artifact whose project ID suggests the slug. Otherwise the directory name is used.

In 0.149.1 the command always needs an interactive terminal, even when you pass every option: it fails without one or when CI is set. It prompts for any missing value, then links the current directory. In automation, create the project once interactively or in the Cloud Dashboard, then use axiom project link --project-id.

Terminal
axiom project create --name "Payments API" --slug payments-api

Link the current directory to a Cloud project, so release and other Cloud commands find it without --project.

Usage
axiom project link [OPTIONS]
OptionValueDefaultMeaning
--project-idproject ID or sluginteractive pickerProject to link. Required in non-interactive shells.
Terminal
axiom project link --project-id payments-api

axiom project rotate-key

Replace the project's active signing key. Old public keys stay available, so earlier releases still verify.

Usage
axiom project rotate-key --project <PROJECT>
OptionValueDefaultMeaning
--projectslugrequiredProject slug, for example demo-app.

axiom project resolve

Resolve the dependencies of a local Acore project and write a lock file. Use it for an Acore project that declares package dependencies in a PklProject file.

Usage
axiom project resolve <DIR>
OptionValueDefaultMeaning
<DIR>directoryrequiredDirectory that contains PklProject.

The command reads the dependencies URIs, selects the minimum compatible versions, fetches each package's metadata over the network and writes PklProject.deps.json. If metadata cannot be fetched, it prints a warning and records the dependency without checksum verification: review the lock file.

axiom project package

Package a local Acore project.

Usage
axiom project package <DIR>
OptionValueDefaultMeaning
<DIR>directoryrequiredDirectory that contains PklProject.

Limited in 0.149.1

In this release the command checks that PklProject exists and prints a success message, but it does not write a package archive or checksums.

Install tools and manage the cache

axiom install

Install the bundled language server, an intact .axiomapp application, or a compiler or extractor module.

Usage
axiom install [OPTIONS] <PACKAGE>
OptionValueDefaultMeaning
<PACKAGE>lsp-server, a .axiomapp path, or a module namerequiredWhat to install.
--moduleflagoffInstall a compiler or extractor module. Not accepted with lsp-server.
TargetResult
lsp-serverCopies the CLI's own language server to ~/.axiom/bin/acore-lsp (acore-lsp.exe on Windows), verifies its compiler and protocol metadata, and replaces an older copy atomically. No download, source checkout or Cloud login.
FILE.axiomappVerifies the artifact and copies it, unchanged, into the local content-addressed application cache.
NAME --moduleDownloads an extractor into ~/.acore/bin/.

Extractor modules in 0.149.1

Module installation of the FastAPI and Go extractors does not work in CLI 0.149.1: axiom-fastapi is not an accepted name, and the accepted names download from a release URL that does not exist. Install the extractors manually as shown in Install the Axiom CLI. The CLI looks for them in ~/.acore/bin/, or at the paths in AXIOM_FASTAPI_EXTRACTOR and AXIOM_GO_EXTRACTOR.

The language server installer copies the current host's executable only; it cannot create a server for another OS or CPU. It does not edit editor settings or PATH. Run it again after you update the CLI, then restart the editor's language server. It is validated on Apple Silicon macOS; Linux, Windows and Intel macOS acceptance is pending.

Terminal
axiom install lsp-server
~/.axiom/bin/acore-lsp --version-json
axiom install dist/my-app-web.axiomapp

axiom cache

Inspect or clear the CLI profile's local cache. These commands do not clear Flutter application or browser session caches.

Usage
axiom cache <COMMAND>
SubcommandPurpose
lsBrowse cache entries in a terminal interface.
getPrint one entry.
clearDelete every entry.

The cache lives in the cache/ folder of the CLI profile directory. Cached payloads can contain application data: redact them before you paste output into an issue or support channel.

axiom cache ls

List cache entries in a terminal interface. Use j/k or the arrow keys to move, x to delete the selected entry, and q or Esc to exit.

Usage
axiom cache ls

No options other than --help.

axiom cache get

Print one cache entry: timestamps, TTL, headers, payload size, and the JSON or byte payload.

Usage
axiom cache get --key <KEY>
OptionValueDefaultMeaning
--keytextrequiredCache key to print.

axiom cache clear

Delete every entry in the CLI cache and print how many were removed.

Usage
axiom cache clear

No options other than --help.

Editor services

axiom lsp

Run the Acore language server over stdin and stdout, without Cloud access. Point an editor at axiom lsp, or install a standalone copy with axiom install lsp-server.

Usage
axiom lsp [OPTIONS]
OptionValueDefaultMeaning
--versionflagoffPrint the server version and protocol.
--version-jsonflagoffPrint version metadata as JSON. Conflicts with --version.
Terminal
axiom lsp --version
Expected output
acore-lsp 0.1.4 (axiom-editor/v1)

--version-json prints compilerVersion, protocolVersion and serverVersion (for example acore/0.1.4 (CLI 0.149.1)). The installed acore-lsp executable accepts the same two flags.

No Acore editor extension is published in an extension registry yet. Where you use the Acore editor adapters, configure them with an absolute path (~ is not a portable editor setting; on Windows include .exe and use forward slashes or escaped backslashes):

EditorSetting
VS Codeaxiom.server.path: the installed acore-lsp path. Or set axiom.server.source to cli and axiom.binaryPath to the absolute axiom executable to run axiom lsp. CLI tasks always use axiom.binaryPath. Restricted Mode keeps the bundled server and disables custom executables.
Zedlsp.acore-lsp.binary.path: the installed acore-lsp path. Or use the absolute axiom path with "arguments": ["lsp"]; the CLI answers Zed's --version-json probe.
Zed settings excerpt
{
  "lsp": {
    "acore-lsp": {
      "binary": { "path": "/path/to/acore-lsp" }
    }
  }
}

axiom editor

Offline saved-source checking and editor compatibility metadata. Editor integrations call these commands; you can also run them to reproduce what an editor reports.

Usage
axiom editor <COMMAND>
SubcommandPurpose
infoShow the saved-check contract this CLI supports.
checkCheck saved source and manifests statically.
reportPrint a read-only private-input and graph report.
refresh-extractionRun declared native extractors and refresh the cache.
workflowsDescribe the explicit editor tasks this CLI accepts.
validate-workflowValidate a typed workflow request without running it.

check, report and refresh-extraction share these inputs:

OptionValueDefaultMeaning
--entrypathrequiredSaved entry file to check.
--rootdirectoryrequiredOwning project root.
--kindbackend, frontend, database, config, package, extension, detachedrequiredKind of source.
--targettargetnoneFrontend target. Repeat for several targets. Not on refresh-extraction.
--variantnamenoneContract variant.
--jsonflagoffPrint JSON.

axiom editor info

Print the CLI version, editor protocol, saved-check format and compiler identity. Editors use it to confirm compatibility.

Usage
axiom editor info [OPTIONS]
OptionValueDefaultMeaning
--jsonflagoffPrint an axiom-editor-cli/v1 JSON object.
Expected output
Axiom 0.149.1 · axiom-editor/v1 · axiom-editor-check/v1

axiom editor check

Check saved source and manifests statically with the owning compiler. It writes no artifacts and exits non-zero when the check fails.

Usage
axiom editor check [OPTIONS] --entry <ENTRY> --root <ROOT> --kind <KIND>
OptionValueDefaultMeaning
--entry, --root, --kind, --target, --variant, --jsonsee shared inputsSelect the saved source. --json prints an axiom-editor-check/v1 report.
Terminal
axiom editor check --entry main.acore --root . --kind backend
Expected output
Saved static check: main.acore · backend/v1 · default

axiom editor report

Print a read-only report of saved private inputs and the semantic graph. No provider is contacted. The output is axiom-editor-report/v1 JSON.

Usage
axiom editor report [OPTIONS] --entry <ENTRY> --root <ROOT> --kind <KIND>
OptionValueDefaultMeaning
--entry, --root, --kind, --target, --variant, --jsonsee shared inputsSelect the saved source. The report is JSON with or without --json.

axiom editor refresh-extraction

Run the declared native extractors explicitly and store the fenced extraction cache, so later saved checks can read extracted interfaces.

Usage
axiom editor refresh-extraction [OPTIONS] --entry <ENTRY> --root <ROOT> --kind <KIND>
OptionValueDefaultMeaning
--entry, --root, --kind, --variant, --jsonsee shared inputsSelect the saved source.

This command runs extractor code, unlike the other editor commands.

axiom editor workflows

Describe the explicit editor tasks that this CLI accepts, generated from its real argument definitions: each workflow's ID, command and typed inputs.

Usage
axiom editor workflows [OPTIONS]
OptionValueDefaultMeaning
--jsonflagoffAccepted for symmetry. The catalog is always axiom-editor-workflows/v1 JSON.

axiom editor validate-workflow

Validate a typed workflow request against the catalog and parse the command line it would run, without executing it.

Usage
axiom editor validate-workflow --request <REQUEST> --root <ROOT>
OptionValueDefaultMeaning
--requestJSON textrequiredRequest object with workflow and inputs, up to 64 KiB. Unknown inputs are rejected.
--rootdirectoryrequiredOwning project root. Relative paths in inputs resolve against it.
Terminal
axiom editor validate-workflow --root . \
  --request '{"workflow":"check","inputs":{"file":"axiom.acore","json":true}}'

The result is axiom-editor-workflow-validation/v1 JSON with the resolved argv and "execution": false.

Explore Acore

axiom repl

Start the Acore REPL. Type an expression to evaluate it, and exit or quit to leave.

Usage
axiom repl

No options other than --help.

axiom eval

Evaluate an Acore file and print its output. Use it to see the rendered value of any Acore module, contract or not.

Usage
axiom eval [OPTIONS] <FILE>
OptionValueDefaultMeaning
<FILE>pathrequiredAcore file to evaluate.
-f, --formatpcf, json, yaml, mdpcfOutput format. pcf is Acore object notation; md (or markdown) renders API documentation. Unknown values fall back to pcf.
-v, --variantnamenoneVariant to select before rendering.
Terminal
axiom eval main.acore --format json