AXF gives agents a structured way to discover and run workspace-specific capabilities like build, test, and validation commands without guessing which script to invoke. It exposes a single MCP tool that routes to operations including list, inspect, run, and scout_check, all backed by manifest-defined capabilities that encode how your codebase actually works. You'd reach for this when agents keep rebuilding the same brittle shell chains or searching for repo facts before every edit. It binds to a workspace via cwd or AXF_WORKSPACE, reloads registry state per request, and keeps governance in one place instead of letting raw shell access bypass your policies. Still alpha, personal-use license only.
Agent eXoskeleton Framework for workspace-native agent capabilities.
AXF (Agent eXoskeleton Framework) gives teams a framework for building workspace-native agent exoskeletons: small, self-describing capabilities that encode how each codebase is built, tested, searched, diagnosed, and operated safely.
The goal is not to automate judgment. The goal is to compress repeated local ceremony into reliable workspace capabilities, so agents can spend more attention on the actual problem.
When AXF helps
AXF is not
AXF is not a universal command catalog, a replacement for judgment, or an MCP-only product. It is the framework and control plane for building workspace-native agent exoskeletons from workspace-owned capabilities. MCP is one adapter surface; workspaces own the repo-specific capabilities agents use as their local exoskeleton.
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 source-available under the custom personal-use license in
LICENSE. It is not open source.
Permitted use is limited to personal, non-commercial evaluation, development, and local execution.
Redistribution, resale, sublicensing, commercial use, business use, production use, internal organizational use, SaaS use, managed-service use, and embedding in another product, service, SDK, platform, agent, workflow system, or commercial tooling require a separate written license.
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.
npm install --global @smartergpt/axf
Then use either bin directly:
axf doctor
axf mcp
axf-mcp
From a local clone, run the bins directly with Node:
node /path/to/axf/bin/axf.js doctor
node /path/to/axf/bin/axf.js mcp
node /path/to/axf/bin/axf-mcp.js
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:
{
"mcpServers": {
"axf": {
"command": "node",
"args": ["/path/to/axf/bin/axf.js", "mcp"],
"cwd": "/path/to/workspace",
"env": {
"AXF_WORKSPACE": "/path/to/workspace"
}
}
}
}
Direct-bin configs remain valid:
{
"mcpServers": {
"axf": {
"command": "node",
"args": ["/path/to/axf/bin/axf-mcp.js"],
"cwd": "/path/to/workspace",
"env": {
"AXF_WORKSPACE": "/path/to/workspace"
}
}
}
}
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:
npx -y --package @smartergpt/axf axf doctor
npx -y --package @smartergpt/axf axf mcp
npx -y --package @smartergpt/axf axf-mcp
npm exec --yes --package @smartergpt/axf -- axf doctor
npm exec --yes --package @smartergpt/axf -- axf mcp
npm exec --yes --package @smartergpt/axf -- axf-mcp
For registry-style Windows MCP configs, prefer the base axf.cmd
launcher with mcp as an argument:
{
"mcpServers": {
"axf": {
"command": "axf.cmd",
"args": ["mcp"],
"cwd": "C:\\src\\my-workspace",
"env": {
"AXF_WORKSPACE": "C:\\src\\my-workspace"
}
}
}
}
Direct-bin .cmd configs are still valid:
{
"mcpServers": {
"axf": {
"command": "axf-mcp.cmd",
"args": [],
"cwd": "C:\\src\\my-workspace",
"env": {
"AXF_WORKSPACE": "C:\\src\\my-workspace"
}
}
}
}
For registry-style WSL/Linux MCP configs, prefer the base axf command
with mcp as the first argument:
{
"mcpServers": {
"axf": {
"command": "axf",
"args": ["mcp"],
"cwd": "/home/user/src/my-workspace",
"env": {
"AXF_WORKSPACE": "/home/user/src/my-workspace"
}
}
}
}
Direct-bin configs remain valid:
{
"mcpServers": {
"axf": {
"command": "axf-mcp",
"args": [],
"cwd": "/home/user/src/my-workspace",
"env": {
"AXF_WORKSPACE": "/home/user/src/my-workspace"
}
}
}
}
WSL users should use a native WSL AXF install on PATH, not Windows npm
shims or npm's _npx cache. AXF's global.lex.* capabilities launch
the package-local Lex dependency, but direct Lex usage should follow the
same native WSL rule. See
WSL Native Lex Install
for the recommended user-local install, checkout symlink bridge, and
native SQLite build requirements.
axf, axf mcp, and axf-mcp find the active workspace in this order:
--workspaceAXF_WORKSPACEaxf.workspace.json from cwdaxf.workspace.json from the installed script locationcwd fallbackFor MCP clients, set both cwd and AXF_WORKSPACE to the intended
workspace when possible. That makes the exposed command surface
deterministic and keeps workspace-relative execution targets anchored to
the right repo.
From any directory once installed:
axf doctor
axf list
axf inspect echo say
axf run echo say --message hello
axf scout --check
axf run toy echo say --message hello
axf init capability global.acme.status
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:
helplistinspectrundoctorscout_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.lex.status and 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.
Lex appears through AXF only when the bound AXF workspace discovers or
mounts Lex capabilities such as global.lex.* or toolspace.ops.lex.*.
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/)The standard Lex capability family uses the generic cli adapter. It
does not require a dedicated Lex adapter. AXF depends on
@smartergpt/lex at runtime and launches the package-local Lex CLI
through Node, so global.lex.* does not depend on an ambient lex
shim on PATH.
| Capability | Provider | Lifecycle | Notes |
|---|---|---|---|
global.echo.say | internal | active | smallest in-process capability example |
global.lex.status | Lex via cli | active | compact Lex state and health summary |
global.lex.recall | Lex via cli | active | recall frames by query or list recent frames |
global.lex.search | Lex via cli | active | search Lex frames by query |
global.lex.policy-check | Lex via cli | active | validate Lex policy files and optional module mapping |
global.lex.remember | Lex via cli | active | write-classified capture of a work-session frame |
global.lex.log-frame | Lex via cli | active | write-classified alias for frame logging |
global.lex.note | Lex via cli | active | write-classified alias for repo notes |
Lex is a reference capability family routed by AXF. It demonstrates how workspace-native memory and policy capabilities can sit behind AXF's resolver, lifecycle, policy, adapter, and executor path without defining the framework itself.
toy — smallest mount example; re-mounts echo.say with a local defaultops — multi-capability mount example for grouped launch surfaces, including the reusable read-only Lex packThe recommended repo flow is:
axf.workspace.json at the repo root so workspace binding is explicit.global.lex.* family or mount the read-only Lex pack into a toolspace.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 a concrete pattern including Lex mounts and WSL/Windows notes.
The contract is open. Every new provider goes through the same scaffolders and lifecycle gates:
# 1. Scaffold a draft provider adapter (only if the provider has an
# envelope or quirks the generic cli adapter shouldn't carry):
axf init adapter --kind provider acme --composes cli
# 2. Scaffold each capability:
axf init capability global.acme.status
# 3. Edit the drafts, then:
axf doctor
axf run acme status --any-lifecycle
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.
axf.workspace.json # workspace marker
bin/axf.js # CLI entrypoint
src/cli/ # CLI parsing + main dispatch
src/core/ # registry, resolver, executor, adapters, doctor, policy
adapters/<type>/ # type adapters (internal, cli, ...)
adapters/<provider>/ # optional provider adapters for wrapped CLIs
manifests/capabilities/ # capability manifests
manifests/toolspaces/ # toolspace mount manifests
prompts/ # canonical prompts for agent-authored adapters
docs/ # architecture, contract, lifecycle, prompts
test/ # node:test suite
docs/00-foundation.md — why axf existsdocs/01-vocabulary.mddocs/02-architecture.mddocs/03-capabilities-and-manifests.mddocs/04-adapter-contract.md — the
two-kind adapter model (type + provider)docs/05-lifecycle-and-promotion.mddocs/06-canonical-prompts.mddocs/07-v0-bootstrap-plan.md —
alpha implementation milestonesdocs/08-adapter-folder-shape.md
— the concrete file contractdocs/09-launch-plans.md —
interpreter-aware launch plans, env-bound roots, fallback pathsdocs/10-command-families.md —
family imports, public-to-provider arg mapping, materialization,
driftdocs/11-normalization-guidance.md
— JSON-first vs text-first providers, when to write a provider
adapterdocs/12-layered-docs.md — caller /
integrator / author paths through the docsdocs/13-repo-onboarding.md —
workspace markers, standard Lex capabilities, and platform guidancenpm test
Uses Node's built-in node:test; no external test runner is required.
AXF_WORKSPACERoot directory for the AXF workspace. Defaults to current working directory.
io.github.ericm1018/skillfm-llm-cost-optimizer-openai-anthropic-usage
io.github.mikerawsonnz/llm-orchestration-agent
io.github.mikerawsonnz/authenticated-llm-agent
labforgedev/copilot-memory-mcp
csoai-org/agent-prompt-injection-firewall-mcp
io.github.mikerawsonnz/authenticated-multi-llm-agent