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): AXMTool/ToolResult (with optional agent_hint for LLM-optimized descriptions and text for pre-rendered output), HookAction/HookResult, and WitnessResult/ValidationFeedback/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.6.0.tar.gz (34.7 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.6.0-py3-none-any.whl (21.6 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for axm-0.6.0.tar.gz
Algorithm Hash digest
SHA256 8a021c210af10645a41038560cef47cc0acada28f1208b4afa23a490275feb91
MD5 2eb766376f17cd28c72eb965557e36d2
BLAKE2b-256 b5471ffc636df5ca7af014686844ad0ad7ad3c400c7c128f646541d66e346cd3

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: axm-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 21.6 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.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e25ddef137687abab31258f2f3180f3066f73b86bc210915b121795ae43a0f2a
MD5 465c77b76cf109c1b13e99804158110e
BLAKE2b-256 4c06a36b20ccc7e6ff1ff1c5e871fc4b5b6d0c786f9a48b901e376aee81597a6

See more details on using hashes here.

Provenance

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