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, 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.3.1.tar.gz (21.5 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.3.1-py3-none-any.whl (12.8 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for axm-0.3.1.tar.gz
Algorithm Hash digest
SHA256 9a750d4895936f00eb6df19f464bd497857bb2ff0ed365522eea92bd3f2e8f1a
MD5 fd13e93f71111e5520e34b0439867143
BLAKE2b-256 21eaea82ec8518511c937b1382a180774daf776903723fbad2f2d7a7811d192c

See more details on using hashes here.

Provenance

The following attestation bundles were made for axm-0.3.1.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.3.1-py3-none-any.whl.

File metadata

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

File hashes

Hashes for axm-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8a3ffae45a8a3f98743dcad1c60bb42c31b72efe1aa95a8fce81e55eb25b71c7
MD5 49a6a71c10409016e567e24a6884997c
BLAKE2b-256 44da52bfb4700cecaf1c205a7db2c939b66f394c9c25d09d0d69c76949077fec

See more details on using hashes here.

Provenance

The following attestation bundles were made for axm-0.3.1-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