Skip to main content

AXM Logo

AXM CLI — Unified command-line interface for the AXM ecosystem

CI axm-audit Coverage PyPI Python 3.12+ Docs


Features

  • 🔌 Autodiscovery — automatically finds commands from installed AXM packages via entry points
  • 🧩 Modular — install only what you need (axm[init], axm[audit], axm[bib], axm[mcp])
  • 🛠️ Shared interface — re-exports the core contracts from the package root (from axm import AXMTool, ToolResult, HookAction, HookResult, WitnessResult, ValidationFeedback, WitnessRule, tool_node, tool_metadata, ToolMetadata, ToolNodeError): AXMTool/ToolResult (with optional agent_hint for LLM-optimized descriptions and text for pre-rendered output), HookAction/HookResult, WitnessResult/ValidationFeedback/WitnessRule, and tool_node (adapt any axm.tools tool into a DAG python-node) for ecosystem development
  • 📦 Minimal — only depends on cyclopts, everything else is optional

Installation

uv add axm              # CLI shell only
uv add axm[init]        # + scaffolding & project checks
uv add axm[audit]       # + code quality audits
uv add axm[bib]         # + bibliography tools
uv add axm[mcp]         # + MCP server (for AI agents)
uv add axm[all]         # everything
Or with pip
pip install axm              # CLI shell only
pip install axm[init]        # + scaffolding & project checks
pip install axm[audit]       # + code quality audits
pip install axm[bib]         # + bibliography tools
pip install axm[mcp]         # + MCP server (for AI agents)
pip install axm[all]         # everything

Usage

axm                          # shows available commands
axm init_scaffold my-project # if axm-init is installed
axm init_check .             # check project conformity
axm audit .                  # if axm-audit is installed

How It Works

Each AXM package declares commands via pyproject.toml:

# axm-init/pyproject.toml
[project.entry-points."axm.commands"]
init_scaffold = "axm_init.cli:scaffold"
init_check    = "axm_init.cli:check"
init_reserve  = "axm_init.cli:reserve"

The axm CLI discovers these from entry-point metadata and dispatches lazily — it imports only the command you invoke, not every tool at startup.

Package Structure

axm/
├── src/axm/
│   ├── cli.py            # Lazy, dispatch-first autodiscovery wrapper
│   ├── hooks/
│   │   ├── base.py       # HookAction Protocol + HookResult (lifecycle hooks)
│   │   └── __init__.py
│   ├── tools/
│   │   ├── base.py       # AXMTool Protocol + ToolResult + ToolMetadata
│   │   ├── node.py       # tool_node adapter + ToolNodeError (AXMTool → DAG node)
│   │   ├── _discovery.py # entry-point metadata helper
│   │   └── __init__.py
│   ├── witnesses.py      # WitnessResult + ValidationFeedback + WitnessRule
│   └── __init__.py
└── tests/
    ├── unit/             # mirrors src/ (hooks/, tools/, cli, witnesses, __init__)
    └── e2e/              # CLI invoked as a subprocess (test_axm.py)

Development

This package is part of the axm-forge workspace.

git clone https://github.com/axm-protocols/axm-forge.git
cd axm-forge
uv sync --all-groups
uv run --package axm --directory packages/axm pytest

License

Apache-2.0 — © 2026 Gabriel Jarry

Metadata

Release files for axm 0.8.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for axm 0.8.0
File Size Uploaded
axm-0.8.0.tar.gz 53.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for axm 0.8.0
File Interpreter ABI Platform
axm-0.8.0-py3-none-any.whl Python 3 none any Details

Total release size: 82.8 kB

Release files / axm-0.8.0.tar.gz

Download URL axm-0.8.0.tar.gz
Size 53.2 kB
Tags Source
SHA-256 checksum
How to use checksums
22e145457fd860cbfae1342a47dff1638c0c56b3b41f796a245124d647ee8f1a
BLAKE2b-256 checksum
How to use checksums
5416c36f98d1fa7978571492fd7366de414279d4b38469d3af9f1ff276c34698
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 8, 2026.

Transparency log

Release files / axm-0.8.0-py3-none-any.whl

Download URL axm-0.8.0-py3-none-any.whl
Size 29.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
215ff66e71cc789cd5a6bc9754ab0a26fa3e9eb901332fd7a03ad5a0a0fae17d
BLAKE2b-256 checksum
How to use checksums
ff8990e23ada98e4556ecff0e0bbe8821a43158fb70a31ca473b6045ba1482b9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 8, 2026.

Transparency log

Release history Release notifications | RSS feed

0.10.0

2 release files

0.9.0

2 release files

This release

0.8.0 This release

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page