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 — provides AXMTool/ToolResult (with optional agent_hint for LLM-optimized descriptions and text for pre-rendered output), HookAction/HookResult, and WitnessResult/WitnessRule 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         # Autodiscovery wrapper (~80 lines)
│   ├── hooks/
│   │   ├── base.py    # HookAction Protocol + HookResult (lifecycle hooks)
│   │   └── __init__.py
│   ├── tools/
│   │   ├── base.py    # AXMTool Protocol + ToolResult (shared interface)
│   │   └── __init__.py
│   ├── witnesses.py   # WitnessResult + ValidationFeedback + WitnessRule
│   └── __init__.py
└── tests/
    ├── hooks/
    │   └── test_base.py
    ├── tools/
    │   └── test_base.py
    ├── test_cli.py
    └── test_version.py

Development

This package is part of the axm-nexus workspace.

git clone https://github.com/axm-protocols/axm-nexus.git
cd axm-nexus
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.5.0.tar.gz (22.4 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.5.0-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for axm-0.5.0.tar.gz
Algorithm Hash digest
SHA256 bc5ede3c94bea7ea157e6237536f9fc973666643826498fcfd7af91983a31e58
MD5 cc601e6835e5c69405d0caae33e504ae
BLAKE2b-256 a05a17ee55e2f3f07e610ba4ca584709477762460873655146aafdd39666aa5b

See more details on using hashes here.

Provenance

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

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

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.5.0-py3-none-any.whl.

File metadata

  • Download URL: axm-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 13.1 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.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3568e5bdaf8d4f666536cab7fcf6c6df52b348f1bc7d63ea1e4ae3b7bb99cc90
MD5 ac255271acec924c5ae39ba03918f357
BLAKE2b-256 2beb8e6326c5996b6221d0af37b0be58a784d396aa91dfa61d2db53130d3a405

See more details on using hashes here.

Provenance

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

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

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