AXM CLI — thin autodiscovery wrapper for the AXM ecosystem
Project description
AXM CLI — Unified command-line interface for the AXM ecosystem
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 optionalagent_hintfor LLM-optimized descriptions andtextfor pre-rendered output),HookAction/HookResult, andWitnessResult/WitnessRulefor 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc5ede3c94bea7ea157e6237536f9fc973666643826498fcfd7af91983a31e58
|
|
| MD5 |
cc601e6835e5c69405d0caae33e504ae
|
|
| BLAKE2b-256 |
a05a17ee55e2f3f07e610ba4ca584709477762460873655146aafdd39666aa5b
|
Provenance
The following attestation bundles were made for axm-0.5.0.tar.gz:
Publisher:
publish.yml on axm-protocols/axm-nexus
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
axm-0.5.0.tar.gz -
Subject digest:
bc5ede3c94bea7ea157e6237536f9fc973666643826498fcfd7af91983a31e58 - Sigstore transparency entry: 1280059476
- Sigstore integration time:
-
Permalink:
axm-protocols/axm-nexus@e3bbcc9782edb7b2844f6a9321247a6380b2a8a6 -
Branch / Tag:
refs/tags/axm/v0.5.0 - Owner: https://github.com/axm-protocols
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e3bbcc9782edb7b2844f6a9321247a6380b2a8a6 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3568e5bdaf8d4f666536cab7fcf6c6df52b348f1bc7d63ea1e4ae3b7bb99cc90
|
|
| MD5 |
ac255271acec924c5ae39ba03918f357
|
|
| BLAKE2b-256 |
2beb8e6326c5996b6221d0af37b0be58a784d396aa91dfa61d2db53130d3a405
|
Provenance
The following attestation bundles were made for axm-0.5.0-py3-none-any.whl:
Publisher:
publish.yml on axm-protocols/axm-nexus
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
axm-0.5.0-py3-none-any.whl -
Subject digest:
3568e5bdaf8d4f666536cab7fcf6c6df52b348f1bc7d63ea1e4ae3b7bb99cc90 - Sigstore transparency entry: 1280059485
- Sigstore integration time:
-
Permalink:
axm-protocols/axm-nexus@e3bbcc9782edb7b2844f6a9321247a6380b2a8a6 -
Branch / Tag:
refs/tags/axm/v0.5.0 - Owner: https://github.com/axm-protocols
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e3bbcc9782edb7b2844f6a9321247a6380b2a8a6 -
Trigger Event:
push
-
Statement type: