Agent eXoskeleton Framework control plane for workspace-native agent capabilities over MCP.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
Fit the repository once. Let every agent follow the same paved path.
An agent can read your code. It still has to rediscover how this repository wants to be built, tested, searched, diagnosed, and operated. The clues are usually scattered across scripts, package tasks, prose, CI, and human memory.
AXF (Agent eXoskeleton Framework) turns that repeated local ceremony into small, self-describing capabilities. Fit the exoskeleton deliberately once; later agents can discover the right route, inspect its contract, and run it without rebuilding the procedure from scratch.
AXF is a traffic cop, not a replacement vocabulary. It preserves a provider's existing command family by default, then projects or normalizes only the parts that need a clearer agent-facing contract. The goal is not to automate judgment. It is to spend less judgment on reconstructing the same route.
You do not need the framework vocabulary to use a fitted repository:
echo module
or a repository-owned validation pack.The smallest proof of life is:
The package is source-available and subject to the license terms below. A
fitted repository normally adds its own capabilities; echo.say only proves
that the registry, resolver, adapter, and executor are connected.
Before AXF, a new agent searches multiple instruction files, reverse-engineers package scripts, guesses the safe validation subset, and repeats that work in the next session.
After a deliberate fit, the repository can expose stable entries such as
context, check, and handoff. A caller starts with axf guide, inspects
the selected capability, and runs the repository-owned route. AXF makes the
route visible; the repository still owns it.
AXF helps when:
AXF is probably not a fit when one obvious command already covers the work, the ceremony is unlikely to recur, or the provider surface changes faster than the team can maintain a capability contract.
The adoption question is:
Does this repository have repeated local operating ceremony that is worth fitting once into stable, inspectable agent capabilities?
For a bounded, strictly read-only assessment, give an agent this prompt:
See Agent fit evaluation for the evidence checklist, verdict definitions, and response template.
| You are... | Start here | Your job |
|---|---|---|
| A caller or coding agent | Caller guide | Discover, inspect, and run capabilities someone else fitted. |
| An integration author | Integration author guide | Fit existing repository or provider ceremony into stable capabilities. |
| An AXF framework author | Framework author guide | Change loaders, resolution, adapters, policy, MCP, or other AXF internals. |
Stop at the caller guide unless you are responsible for fitting a provider or changing AXF itself. The complete audience map is in Documentation layers.
Status: alpha. The core loop is in place: scout, inspect, execute, scaffold, and promote capabilities through one contract. Manifest version
axf/v0is the current alpha contract.
AXF is not a universal command catalog, a source of authorization, a replacement for provider identity, a substitute for review, or an MCP-only product. MCP is one agent-facing surface over the same registry and execution path.
This repository is source-available, not open source.
You may view, fork, modify, and run this project for personal, non-commercial use under the SmarterGPT Source-Available Personal Use License.
Commercial use, organizational use, employer/client use, production use, hosted-service use, redistribution, sublicensing, or embedding in another product or platform requires a separate written license from Joseph Gustavson / Guffawaffle / SmarterGPT.
Public visibility on GitHub does not grant open-source rights or business-use rights.
The npm package name is @smartergpt/axf. It installs two bins:
axf β the CLI entrypoint, including the stdio MCP launch subcommand axf mcpaxf-mcp β the stdio MCP server entrypointMCP clients may launch axf-mcp directly. For registry-driven or
package-driven launch, prefer axf mcp so the package can stay centered
on the base axf command surface. Both entrypoints start the same stdio
MCP server. The server exposes exactly one MCP tool named axf, and
that tool routes into AXF's existing capability surface for the bound
workspace.
Then use either bin directly:
Audit a Codex MCP package pin before assuming the configured server matches the installed CLI:
Writes are scoped to the AXF package spec in Codex config.toml; restart or
reopen Codex afterward. For one-call AXF + Lex bootstrap, including the
explicit off | shadow KnowledgeFrame provider rollout, see the packaged
templates/session-context workspace recipe and
docs/13-repo-onboarding.md.
From a local clone, run the bins directly with Node:
A repo-local MCP configuration can either call the direct MCP bin or the CLI subcommand. Prefer the CLI subcommand when the client supports command arguments cleanly:
Direct-bin configs remain valid:
Published-package smoke tests must run from a clean directory such as
/tmp, not from the AXF repo root. Running from the repo root can let
npx or npm exec pick up a repo-local or globally installed axf
binary instead of the package-installed one.
The registry-friendly launch shape is axf mcp, but the direct MCP bin
remains valid for manual configurations. These equivalent package-driven
forms use the published npm package:
For registry-style Windows MCP configs, prefer the base axf.cmd
launcher with mcp as an argument:
Direct-bin .cmd configs are still valid:
For registry-style WSL/Linux MCP configs, prefer the base axf command
with mcp as the first argument:
Direct-bin configs remain valid:
WSL users should use a native WSL AXF install on PATH, not Windows npm
shims or npm's _npx cache. Optional shared packs that launch native
CLIs should follow the same rule: prefer Linux-native tools earlier on
PATH and avoid crossing into Windows shims from WSL.
axf, axf mcp, and axf-mcp resolve the active project root and
execution root in this order:
--project-root and --execution-rootAXF_PROJECT_ROOT and AXF_EXECUTION_ROOT--workspace, --registry-workspace, --execution-workspaceAXF_WORKSPACE, AXF_REGISTRY_WORKSPACE, AXF_EXECUTION_WORKSPACEaxf.workspace.json from cwdaxf.workspace.json from the installed script locationcwd fallbackFor axf run, unprefixed root flags are global only before the subcommand;
after run they are capability-owned. Non-run commands retain their legacy
placement because they have no downstream argument owner. The
--axf-project-root, --axf-execution-root, and --axf-workspace
spellings are accepted later in the AXF-controlled portion of a command.
After an axf run ... -- boundary, root-like names belong to the capability.
AXF reserves the --axf-* namespace for framework controls and leaves
natural public argument names to capabilities. Use an explicit boundary
when the ownership should be visible in the command itself:
Options before -- are AXF run controls. Options after -- are public
capability arguments: AXF still parses them, validates and coerces them with
argsSchema, maps them through argMap, and executes them through the
declared adapter. The boundary never enables raw or schema-bypassing argv.
The same name may appear on both sides with different ownership, but a
duplicate within either explicit section is rejected.
Existing no-boundary invocations such as axf run echo say --message hello
remain supported. In that compatibility form, legacy --json,
--any-lifecycle, and --allow-draft remain AXF controls unless the
capability explicitly declares the same argument. Use --axf-json and
--axf-any-lifecycle when AXF ownership must be unambiguous.
Start with the bounded workspace guide instead of requesting every full manifest:
The MCP router exposes the same guide, compact/search list, explain, and
inspect results. guide returns workspace- or family-declared context,
validation, and handoff entrypoints without executing them. Compact list
entries retain lifecycle, side effects, and source provenance while omitting
full schemas and execution targets until inspect.
AI agents are the primary consumer of MCP results, so AXF defaults to
responseDetail: "compact": the deterministic minimum safe envelope with
capability data, actionable errors, warnings, and required safety state.
Request responseDetail: "standard" for an expanded canonical result or
responseDetail: "diagnostic" explicitly when investigating provenance,
workspace binding, or launch behavior. Invocation traces stay out of normal
success and failure results. Diagnostic framework metadata is redacted for
sensitive field names and values. Response detail never truncates, redacts, or
otherwise transforms capability-owned data.
The compact list option and responseDetail are intentionally separate:
compact selects summarized capability entries, while responseDetail
controls the surrounding agent-facing response envelope. A default compact
MCP list response is independently bounded to 25 results when limit is
omitted; this does not enable the list item compact option. Supply an
explicit limit to replace that bound, or explicitly request standard or
diagnostic without a limit to opt out of the default bound.
AXF 2.0 changes the implicit MCP response from the pre-2.0 rich envelope to
compact. Callers that consume provenance or launch metadata must request
diagnostic; callers that need the expanded result without invocation traces
can request standard.
AXF project and execution roots are filesystem discovery/execution bindings, not tenant, repository, workspace, grant, or authorization evidence. Ambient root environment variables remain compatibility/configuration inputs only; AXF never treats them as authority. Security-sensitive hosts should pass roots explicitly and authorize the operation before invoking AXF. Provider-owned identity and authorization stay with the provider; AXF does not require Lex or reconstruct Lex authority.
See Agent Discovery and Workflow Guide for recommendation declarations, missing-capability diagnostics, and CLI/MCP examples.
Capabilities may also return validated, typed continuations when their immediate result leaves an
exact external operation in progress. The first continuation kind routes through
global.await.external, whose process-bound GitHub provider observes explicit required checks for
one exact commit SHA. See Awaitable completions for descriptor,
authority, cancellation, and outcome boundaries.
When discovery and execution should use the same repo, set both
AXF_PROJECT_ROOT and AXF_EXECUTION_ROOT to the same path. When they
should differ, set them independently. Legacy AXF_WORKSPACE remains a
compatibility alias that binds both roots to one path.
For MCP clients, set cwd to the intended caller execution directory and
set AXF_PROJECT_ROOT / AXF_EXECUTION_ROOT explicitly when possible.
That keeps manifest discovery and caller-facing execution deterministic.
Set AXF_MACHINE_ROOT when you want a user- or machine-scoped AXF root
to contribute optional shared packs across projects. Project-root
families shadow machine-level families with the same family name.
From any directory once installed:
axf doctor reports the workspace source it selected and, under WSL,
warns when axf, lex, node, or npm resolve through Windows PATH
entries under /mnt/c/....
The MCP server exposes one tool named axf. Supported operations are:
helpguidelistexplaininspectrundoctorscout_checkThose operations route into AXF's manifest-backed discovery, resolver, lifecycle, policy, adapter, and executor paths. MCP does not add a second governance model or a raw shell bypass around AXF.
AXF MCP is intentionally not full CLI parity yet. The CLI remains the
authoritative mutation and control plane for commands such as init,
promote, demote, scout --write, and other registry/materialization
flows.
Capabilities such as global.echo.say are not
separate MCP tools. Use operation=help to learn the router contract,
operation=list to discover capabilities, and operation=inspect
before operation=run. Treat capability
lifecycleState, sideEffects, policies, and workspace binding as
part of the execution contract.
scout_check is AXF's MCP-specific read-only structured scout
diagnostics surface. It is not intended to promise literal CLI parity
with axf scout --check.
Registry and manifest updates still happen through normal AXF CLI and filesystem/control-plane flows. The MCP server reloads registry state per request, so external AXF updates become visible on later MCP calls without restarting the server.
Full CLI parity may be considered later behind explicit policy and approval gates.
Shared packs appear through AXF only when the bound AXF project root or machine layer discovers or mounts those capabilities.
AXF ships two public built-in adapter types:
internal β runs handlers in-process (adapters/internal/)cli β generic subprocess dispatcher with stdout JSON parsing
(adapters/cli/)Shared command families use the same adapter contract as project-owned
capabilities. A shared pack can use the generic cli adapter, a
provider adapter, or an internal handler, but AXF core does not require
that pack as a runtime dependency.
| Capability | Provider | Lifecycle | Notes |
|---|---|---|---|
global.echo.say | internal | active | smallest in-process capability example |
global.await.external | await | active | process-bound observation of typed external completions; GitHub exact-head required checks are the first provider |
Optional shared packs, including a Lex pack, can be added at machine or project scope. They route through the same resolver, lifecycle, policy, adapter, and executor path without defining the framework itself.
toy β smallest mount example; re-mounts echo.say with a local defaultThe recommended repo flow is:
axf.workspace.json at the repo root so workspace binding is explicit.manifests/capabilities/ or manifests/families/.sideEffects: "write". AXF does not yet have a first-class approvalRequired field, so approval gates stay a repo policy or review convention for now.See docs/13-repo-onboarding.md for the concrete onboarding pattern and platform notes.
The contract is open. First decide whether the provider needs a command family, a selective materialized override, or a provider adapter. The Integration author guide contains that decision path. A provider adapter is only needed when the generic CLI route cannot express the provider's argument, envelope, failure, or output contract.
When a provider adapter is justified, the scaffold starts in draft:
The four canonical prompts under prompts/ walk an agent
through discovery β planning β scaffolding β review against the actual
file contract. JSON-first providers can usually use the generic cli
adapter directly; provider adapters are for wrappers that need envelope,
error, or argument normalization beyond the generic route.
Running a non-active capability requires an explicit lifecycle opt-in and can still execute real provider effects. Do that only after inspection and the repository's normal approval process. Lifecycle changes validate manifests; they do not perform the review.
Start with the path for your current job:
Documentation paths routes each audience to the relevant reference documents. Use the read-only agent fit evaluation before onboarding an undecided repository.
Uses Node's built-in node:test; no external test runner is required.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/axf-2)<a href="https://allmcps.com/mcp/axf-2"><img src="https://allmcps.com/api/badge/axf-2?style=directory" alt="AXF on AllMCPs" /></a>