axp.cat

One manifest to describe, install, update and verify an agent extension.

Agent runtimes multiply, and every one of them adds capabilities its own way. The Agent Extension Protocol (AXP) gives publishers one signed file, agent-extension.json, that says who they are, what the extension does, what it needs and how to install it on each runtime. Any host that reads AXP can install the extension, keep it updated and prove who signed it.

Browse the catalog (4) Read the specification

The problem

A memory backend, an MCP server, a channel bridge, a cron job: useful agent capabilities are written every week, and people want them in whatever runtime they already use. Today each runtime has its own plugin format, its own install steps and its own idea of an update. Three groups pay for that:

Without AXP every publisher ships a separate package for every runtime; with AXP one signed manifest reaches every host. Without AXP Publisher A Publisher B Publisher C Hermes OpenClaw Claude Code nine packages, nine installers, nine update paths, and no common way to say who signed what With AXP Publisher A Publisher B Publisher C one signed manifest Hermes OpenClaw Claude Code the host verifies the signature, shows the permissions and installs through the runtime it serves
Without a shared description every publisher and every runtime need their own pair. With AXP the publisher writes one signed manifest and each host maps it onto the runtime it serves.

What AXP does about it

The publisher writes one agent-extension.json and signs it. It names the publisher, lists what the extension provides and requires, declares the permissions it uses and why, carries an install recipe per runtime, and says where updates come from. A host fetches the manifest, verifies the signature, shows the user what they are consenting to, hands the right recipe to the runtime, and later accepts an update only if the same key signed it.

AXP is deliberately an envelope, not a package manager. It does not replace a runtime's own install machinery; it delegates to it. It is the common description layer every runtime can be generated from or mapped onto, the role OCI image manifests play across container runtimes. Nothing in the core names a vendor, a product or a registry.

Why not just apt, npm or pip?

Package managers answer a narrower question: how do the files of one ecosystem get onto a machine? An agent extension is seldom one artifact in one ecosystem. The same capability may be a Hermes plugin, an MCP server, a skill folder and a systemd unit, and every runtime wants it registered its own way. No package manager knows what a runtime is, so apt install cannot tell Hermes that a plugin has arrived. Three things they do not carry:

AXP does not compete with them; it uses them. An install recipe is free to run pip install, npm install or apt-get. The manifest is the layer above: who signed this, what it will touch, and how it stays current.

How AXP relates to MCP, A2A and plugin systems

They are easy to confuse because they all have "agent" in the name, but they answer different questions and sit at different layers. MCP and A2A are about agents working: an agent calling a tool, an agent handing a task to another agent. AXP is about how the things they work with get onto the machine, stay updated and stay trustworthy, before anything runs.

A2A and MCP are used while agents run; each runtime loads extensions its own way; AXP is the layer below that delivers, installs, updates and verifies them. While agents run agents and tools talk Another agent A2A Agent MCP Tool server the agent, the other agent and the tool server all had to get onto the machine first Loading extensions each runtime, its own way Hermes plugins · OpenClaw extensions · Claude Code plugins · the next runtime's format different folders, file formats and install steps on every one of them install · update · verify install · update · verify Before anything runs and at every update AXP: publisher → one signed manifest → any host who signed it · what it needs · an install recipe per runtime · where updates come from
A2A and MCP are spoken at run time. The runtime loads its extensions in its own format. AXP is the delivery layer underneath: it installs, updates and verifies those extensions on any runtime.
ProtocolThe question it answersWho talks to whomWhen
MCP
Model Context Protocol
How does an agent call a tool or read context?agent runtime ↔ tool serverwhile the agent runs
A2A
Agent2Agent
How does one agent hand work to another agent?agent ↔ agentwhile the agents run
Plugin systems
Hermes, OpenClaw, Claude Code, …
How does this one runtime load code?runtime ↔ its own plugin formatat load time, per runtime
Package managers
apt, npm, pip, …
How do the files of one ecosystem get onto a machine?registry → machinewhen you run them
AXP
Agent Extension Protocol
How does a capability get installed, updated and verified, whichever runtime?publisher → host → runtimebefore anything runs, and at every update

They stack rather than compete. An AXP package can contain an MCP server (mcp_servers is a first-class component) and an agent installed through AXP can speak A2A. In one sentence: MCP and A2A are how agents work; AXP is how the pieces they work with are shipped.

What the manifest covers

Portable description

identity (publisher-namespaced), provides (what the extension adds), requires (what it needs) and permissions (the access surface it declares, with reasons). A user can read what they are consenting to before anything runs.

Per-runtime targets

Concrete install recipes per runtime plus a posix baseline any host can execute: an archive, a digest and standalone install / upgrade / uninstall / health scripts with a fixed host-to-script contract.

Safe updates

Semver and channels, three update sources (GitHub releases, a forge, a direct feed), monotonic progression, freshness windows and a per-extension policy. A widened permission surface asks for consent again.

Signing and trust

ed25519 signatures over a canonical (JCS) form of the manifest, pinned on first use per extension id. Updates come only from the same key; rotation is announced and dual-signed; a lost key is recovered through the publisher's key directory.

Honest enforcement

A host says which tier it really applies - declared, advisory or enforced - and conforms to a profile (Core, Trusted, Managed, Sandboxed). The reference sandbox runs lifecycle scripts in transient systemd units with name-based egress filtering.

Graceful degradation

A manifest a verifying AXP host installs fully must also install by hand on a host with zero AXP support: the posix target is an archive and plain scripts, so nothing is locked behind the protocol.

Publish in three commands

The reference implementation ships as the axp Python package and CLI (pip install git+https://github.com/mintbot-ai/agent-extension).

axp init --publisher ext.example.com --name my-ext --description "..."
axp keygen --out signing.key          # prints the ed25519 public key
axp release agent-extension.json --bump patch --artifact dist/my-ext.tar.gz --key signing.key

Serve the manifest from your domain (/.well-known/agent-extension.json or a <link rel="agent-extension"> on your landing page), or attach it to a GitHub release and list your key at /.well-known/agent-extension-keys.json. Then submit the locator here.

Install from the catalog

Every listing shows its locator. On an AXP host you hand that locator to the install command; on mintbot you simply tell your agent "install ext.example.com" and it fetches, verifies, shows the declared permissions and asks before anything runs.

What the catalog checks

Anyone can submit a package. Nothing is listed until it passes the gate, which is the same path a host walks:

  1. The locator resolves to a manifest the way SPEC §3.1 says: a .json URL, a landing page's <link rel="agent-extension">, /.well-known/agent-extension.json, or a GitHub repository's newest release asset.
  2. The reference validator accepts the manifest in full: identity grammar, every component, every target, permissions with the closed vocabularies of §2.4.
  3. The manifest is signed and the signature verifies against the key it carries.
  4. The key is bound to the publisher: the manifest was served from the publisher's own domain, or the publisher's key directory lists the key for this extension (§8.5). A code forge is never anybody's origin, so GitHub-hosted manifests are listed through the key directory only.
  5. The release is not past its valid_until date. Listings are re-checked against their locator regularly.

The gate judges form, signature and publisher binding, not quality or safety. Read the declared permissions before you install.

Recently listed

PackageVersionProvidesRuntimesPublisher
Claude Shim
Use your Claude Code subscription as a Hermes LLM provider.
1.26.4 model_providers hermes aiaininja.com
mintbot Desktop
A shared desktop for you and your agent, right in your browser.
0.1.8 beta services, panel_views, skills, settings_section hermes mintbot.ai
mintbot MCP server
An MCP server on the agent's own VPS: chat with the agent and manage every mintbot setting (model, persona, name, credit, jobs, extensions, Telegram bot, updates, SSH keys, two-factor) from any MCP client such as Claude Desktop, Claude Code or Cursor. No central server involved; loopback only, bearer-authenticated.
0.1.1 beta services hermes mintbot.ai
Graph Memory
Temporal knowledge-graph long-term memory using the agent's selected Hermes model for extraction, local FastEmbed vectors for semantic recall, and embedded LadybugDB, the maintained continuation of Kuzu.
0.2.0 beta tools, memory, config hermes mintbot.ai