Sandbox
@infragate/capa

Package manager and MCP gateway for AI coding agents

CAPA keeps agent setup in one version-controlled `capabilities.yaml`, then installs it into the native files each agent expects. It also runs a local MCP gateway so agents talk through one endpoint while CAPA proxies upstream servers, filters tools, and records activity.

737 stars97 forksTypeScriptUpdated 9d ago
Who it's for

Builders who want one shared agent setup across Cursor, Claude Code, Codex, and other coding assistants.

What it delivers

You can define capabilities once, install them across agents, and keep tool access consistent from project to project.

What it does

One config file for many agents

Write skills, rules, tools, hooks, sub-agents, MCP servers, and plugins once in `capabilities.yaml`, then fan them out to provider-specific files.

Pinned installs

CAPA resolves SHAs into `capabilities.lock` so the same setup can be recreated later without drift.

Local MCP gateway

Agents connect to one local endpoint while CAPA proxies stdio, HTTP, and SSE servers and scopes tools per sub-agent.

Shadow workspace wrap mode

`capa wrap` launches supported agents in a separate workspace so provider files do not touch the real repo.

Web UI editor

The embedded UI lets you edit capabilities, browse registries, set OAuth variables, and sync changes back to disk.

Registry and plugin support

CAPA can fetch skills and plugins from registries, unpack plugin contents, and merge them into the same install flow.

Activity tracing

It records MCP calls, shell tool runs, and agent spans for the project activity feed.

Passthrough writes

`--passthrough` can write provider-native files directly when you want unmanaged one-off changes.

How to get it

  1. 1macOS and Linux
    curl -LsSf https://capa.sh/install.sh | sh
  2. 2Windows
    powershell -ExecutionPolicy ByPass -c "irm https://capa.sh/install.ps1 | iex"
  3. 3Run
    cd your-project
    capa init
  4. 4Run
    capa add vercel-labs/agent-skills@web-researcher
    capa add --server --id brave --cmd npx --arg @brave/brave-search-mcp
    capa registry search skills-sh "research"
  5. 5Run
    capa install              # interactive: confirms executable surface, then installs
    capa install --yes        # CI / scripts: skip confirmation
    capa install --dry-run    # preview MCP servers, hooks, and commands without changes
  6. 6Run
    capa sh                                  # list every configured tool
    capa sh brave                            # list brave subcommands
    capa sh brave search --query "…"         # run a tool directly
    capa sh --raw brave search --query "…"   # skip per-tool formatters

README

CAPACAPA

The package manager and MCP gateway for AI coding agents

Latest Release Tests Release License: MIT Platforms

Why · Features · Install · Quick start · Wrap · Web UI · Docs

Declare skills, tools, rules, sub-agents, MCP servers, hooks, and plugins once in capabilities.yaml. Run capa install. CAPA writes them into Cursor, Claude Code, Codex, Windsurf, GitHub Copilot, and 35+ other agents — native formats, pinned SHAs, zero manual sync. At runtime it is also the MCP gateway: every agent talks to one local endpoint; CAPA proxies upstream servers, lazy-loads tools, and scopes what each sub-agent can call.

https://github.com/user-attachments/assets/98442d19-44c9-43e6-b2c2-88156b189d5e

Why CAPA?

Agent config today is scattered across CLAUDE.md, .cursor/rules/, AGENTS.md, MCP JSON, hooks, and skill folders. No two teammates match. Nothing is pinned. Cloning the repo does not clone the agent setup.

CAPA collapses that into one version-controlled file next to your code — and a local MCP gateway in front of every tool:

  • capabilities.yaml — source of truth for every capability
  • capabilities.lock — SHA pins so tomorrow's clone gets the same bytes
  • Marker blocks — surgical writes that leave hand-edited content alone
  • MCP gateway — one endpoint per project; CAPA proxies stdio / HTTP / SSE servers, applies formatters, and records activity

The teammate who clones tomorrow gets the exact setup you have today.

Features

  • One file → 35+ agents — write once; CAPA fans out to each provider's native layout (.cursor/rules/, .claude/agents/, AGENTS.md, …)
  • MCP gateway — one local endpoint per agent; CAPA proxies upstream MCP servers, lazy-loads tools on demand, and filters tools per sub-agent
  • Cheaper inference, same quality — on-demand tool loading instead of front-loading the whole catalog (19–40% fewer tokens across 150 trials on claude-opus-4-8)
  • capa wrap — run Cursor, Claude, Codex, and more from a shadow workspace so provider dirs never touch your real repo
  • Local Web UI — interactive capabilities editor with live YAML sync, registry browse, OAuth setup, and drag-to-reorder
  • Activity traces — live feed of every MCP call, shell tool, and agent span on the project page
  • Plugins that unpack — Claude and Cursor plugins decompose into skills, MCP, rules, sub-agents, and hooks
  • Registries — browse skills.sh, Cursor Marketplace, Claude plugins, and Claude marketplace catalogs
  • capa add --passthrough — write provider-native files directly when you want unmanaged one-offs
  • Sub-agent isolation — each sub-agent gets a filtered MCP endpoint, so research agents never inherit a git push tool

Installation

macOS and Linux:

curl -LsSf https://capa.sh/install.sh | sh

Windows:

powershell -ExecutionPolicy ByPass -c "irm https://capa.sh/install.ps1 | iex"

Quick start

1. Initialize

cd your-project
capa init

Creates capabilities.yaml and registers the project with the local CAPA server (default http://localhost:5912).

2. Add capabilities

capa add vercel-labs/agent-skills@web-researcher
capa add --server --id brave --cmd npx --arg @brave/brave-search-mcp
capa registry search skills-sh "research"

3. Install

capa install              # interactive: confirms executable surface, then installs
capa install --yes        # CI / scripts: skip confirmation
capa install --dry-run    # preview MCP servers, hooks, and commands without changes

Resolves SHAs, fills the cache, writes per-provider files, and registers one MCP endpoint with each configured agent. Resolved SHAs land in capabilities.lock.

[!NOTE] Non-interactive shells (CI, scripts) must pass --yes. The first install prints the executable surface (MCP stdio servers, hooks, command tools, plugins) and asks for confirmation; unchanged surfaces skip the prompt on re-run.

[!TIP] Already have skills, MCP configs, and rules in the repo? After capa init, use the bundled /bootstrap skill — the agent scans the project and drafts the CAPA config for you.

4. Run tools from the terminal

capa sh                                  # list every configured tool
capa sh brave                            # list brave subcommands
capa sh brave search --query "…"         # run a tool directly
capa sh --raw brave search --query "…"   # skip per-tool formatters

Every tool you define is also a CLI command under capa sh.

5. Open the Web UI

capa status    # prints the local URL when the server is up

Edit skills, tools, rules, hooks, plugins, and agents in the browser. Changes sync live back to capabilities.yaml.

capa wrap

Run an agent without polluting your repo with .cursor/, .claude/, and friends. CAPA builds a shadow workspace under ~/.capa/workspaces/, symlinks your project (minus provider-owned paths), installs capabilities into the shadow, and launches the agent.

capa wrap cursor          # Cursor GUI — stops when the window closes
capa wrap claude          # Claude Code (aliases: claude-code)
capa wrap agent           # Cursor CLI
capa wrap codex
capa wrap gemini-cli
capa wrap opencode

capa wrap cursor --print-dir   # print shadow path, then launch
capa wrap --prune              # clean stale workspaces
capa stop                      # stop server + active wrap sessions

Wrappable today: Claude Code, Codex, Cursor, Gemini CLI, OpenCode, iFlow CLI, Kiro CLI, Qwen Code, Kimi CLI.

[!NOTE] On Windows, creating the shadow workspace may require Developer Mode (or an elevated shell) for symlinks. GitHub Copilot is not wrappable yet — it owns shared .github/ / .vscode/ trees that need subpath exclusions.

Web UI & observability

The embedded React UI (served by the local server) covers the full project lifecycle:

AreaWhat you get
Capabilities editorSkills, tools, rules, hooks, sub-agents, plugins, agents — CRUD, local file pickers, drag reorder
RegistriesSearch seeded catalogs (skills.sh, Cursor Marketplace, Claude plugins) and add your own
ActivityLive tool-call feed, charts, and run timelines (default-on via options.agentActivity)
Variables / OAuthCredential setup when install needs secrets

Activity is powered by system hooks and the MCP proxy tracer — MCP failures show as error rows, shell tools from capa sh are labeled correctly, and secrets in args/results are redacted.

Plugins & registries

Plugins are not opaque blobs. CAPA clones the repo, reads Claude (.claude-plugin/) or Cursor (.cursor-plugin/) manifests, and merges skills, MCP servers, rules, sub-agents, and hooks into the same install pipeline as everything else.

capa add owner/repo --plugin --install
capa add cursor-marketplace:some-plugin --plugin

capa registry list
capa registry add anthropics/claude-plugins-official --type claude-marketplace
capa registry search skills-sh "typescript"

[!IMPORTANT] Most registry adapters are executable TypeScript fetched into ~/.capa/registries-managed/. Review the source before enabling a third-party registry. Claude marketplaces are JSON catalogs only — safer by design.

Passthrough mode

Need a one-off native write without CAPA managing the file?

capa add owner/repo@skill --passthrough --provider cursor
capa add --rule --id ts-strict --inline "Always use strict TypeScript" --passthrough
capa install --passthrough

Passthrough skips capabilities.yaml, the lockfile, and managed-file tracking. Tool aliases, defaults, and formatters still require managed mode (capa add --tool … --passthrough is refused).

How it fits together

capabilities.yaml  ──►  capa install  ──►  provider files (.cursor/, .claude/, AGENTS.md, …)
        │                      │
        │                      ├── capabilities.lock
        │                      ├── ~/.capa/cache/          (content-addressed snapshots)
        │                      └── ~/.capa/db.sqlite       (projects, variables, activity)
        │
        └──► Web UI editor ◄──► file watcher ◄──► disk

Agent ──MCP──► capa gateway (:5912)  ──proxy──► upstream MCP (stdio / HTTP / SSE)
                     │
                     ├── on-demand tools (setup_tools / call_tool)
                     ├── per-sub-agent filtered endpoints
                     └── ToolCallTracer → activity feed

CLI cheat sheet

capa init                              # create capabilities.yaml + register project
capa add <source> [--plugin] [--install]
capa add --server|--tool|--rule|--hook …
capa install [-p <provider>] [-e .env] [--no-cache] [--yes] [--dry-run]
capa wrap <provider> [--project <path>]
capa sh [tool] [args…] [--raw]
capa registry search|add|list|refresh|remove …
capa start|stop|restart|status
capa clean                             # remove managed artifacts
capa auth github|gitlab
capa cache | capa cache clean
capa upgrade [--yes]                   # pin GitHub release + verify installer checksum

Documentation

Guides, the full schema reference, and the registry catalog:

https://capa.sh

Maintainer-oriented internals (install pipeline, provider matrix, lockfile semantics) live in docs/.

Files in the repo

Repository payload22 top-level entries
  • .github
  • .qlty
  • assets
  • docs
  • registries
  • scripts
  • skills
  • src
  • web-ui
  • .gitattributes
  • .gitignore
  • biome.json
  • bun.lock
  • bunfig.toml
  • CONTRIBUTING.md
  • install.ps1
  • install.sh
  • logo.ico
  • package.json
  • README.md
  • SECURITY.md
  • tsconfig.json

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More tools

JuliusBrussee/
caveman

🪨 why use many token when few token do trick — Claude Code skill that cuts 65% of tokens by talking like caveman

105k
1 add
MemPalace/
mempalace

The best-benchmarked open-source AI memory system. And it's free.

59k
stablyai/
orca

Orca is the ADE for working with a fleet of parallel agents. Run any coding agent with your own subscription. Available on desktop, mobile and remote runtime.

66k

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io

132k

Never stop coding. Free MIT AI gateway: one endpoint, 352 providers (150+ free), 1200+ models Kimi, Claude, GPT, Gemini, GLM, DeepSeek, MiniMax. Works with Claude Code, Codex, Cursor, OpenCode, Cline & Copilot. Quota-aware auto-fallback, RTK+Caveman compression saves 15-95% tokens, MCP/A2A, Desktop/PWA. Built by 550+ contributors

64k
headroomlabs-ai/
headroom

Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.

71k