Skip to main content

AXM CLI — thin autodiscovery wrapper for the AXM ecosystem

Project description

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 at startup and exposes them as subcommands.

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

axm-0.7.1.tar.gz (38.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

axm-0.7.1-py3-none-any.whl (22.7 kB view details)

Uploaded Python 3

File details

Details for the file axm-0.7.1.tar.gz.

File metadata

  • Download URL: axm-0.7.1.tar.gz
  • Upload date:
  • Size: 38.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for axm-0.7.1.tar.gz
Algorithm Hash digest
SHA256 1efe9f3f635128920084aa5663937d434b42a995a52eadfcc46d8cd65de981de
MD5 7a7ca929da4c4858e132c76611f7a146
BLAKE2b-256 b7ba85babbffec1a65f50853d55d65fec257fc968658c8cde8676cc04ea97302

See more details on using hashes here.

Provenance

The following attestation bundles were made for axm-0.7.1.tar.gz:

Publisher: publish.yml on axm-protocols/axm-forge

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file axm-0.7.1-py3-none-any.whl.

File metadata

  • Download URL: axm-0.7.1-py3-none-any.whl
  • Upload date:
  • Size: 22.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for axm-0.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 08268b5d1e62070d02a0f420ca16d091bc442e33f8ba08d7004ef985de7b470f
MD5 83860265a0178265cef2680ea025da2b
BLAKE2b-256 cb0e4f866f5b480b41e86da798f01ffeeeff7ea50603477e5cffbba2e38a9318

See more details on using hashes here.

Provenance

The following attestation bundles were made for axm-0.7.1-py3-none-any.whl:

Publisher: publish.yml on axm-protocols/axm-forge

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page