The package manager for AI coding agents
Pin, resolve, and sync skills & plugins across Claude Code, Cursor, OpenCode, and Codex β from one manifest.
Every AI coding agent has its own way of managing skills, plugins, commands, and rules β different file layouts, different config formats, different discovery mechanisms. If you use more than one agent (or want your team to share a curated set of tools), you're stuck copying files around manually.
agentpack gives you one manifest (agentpack.toml) that declares your agent dependencies. It resolves versions, caches content, converts artifacts per-harness, and launches each agent with the right configuration β automatically.
agentpack.toml ββ> pack.lock ββ> staged bundles ββ> launch
(you write) (pinned) (per-harness) (agent runs)
# Install via Homebrew
brew tap OlegHQ/agentpack
brew install agentpack
# Or from source
cargo install --path .
# Initialize in your project
agentpack init
# Add a skill from GitHub
agentpack add anthropics/skills/skills/canvas-design
# Launch your agent with everything bundled
agentpack claude # Claude Code
agentpack agent # Cursor Agent
agentpack opencode # OpenCode
agentpack codex # Codexagentpack.tomlβ Declare dependencies (GitHub repos, subdirectories, or local paths) with version constraints.pack.lockβ Deterministic lockfile pins every package to an exact commit + content hash.syncβ Downloads, caches, and converts artifacts into per-harness staging directories.- Launchers β
agentpack claude,agent,opencode,codexβ each starts the target agent with the staged bundle injected via the agent's native extension mechanism (plugin dirs, config roots, or HOME overrides).
agentpack doesn't just copy files β it converts between formats:
| Source artifact | Claude Code | Cursor | OpenCode | Codex |
|---|---|---|---|---|
| Commands | Claude frontmatter | Plain markdown | OF frontmatter | Skill fallback |
| Agents | Claude agent MD | Cursor agent MD | OF agent MD | Skill fallback |
| Skills | Normalized skill | Normalized skill | Normalized skill | Codex skill |
| Rules | Skill fallback | .mdc preserved |
Skill fallback | Skill fallback |
name = "my-project"
version = "0.1.0"
[dependencies]
"github.com/anthropics/skills/skills/canvas-design" = { branch = "main" }
"github.com/anthropics/claude-plugins-official/plugins/hookify" = { version = "^1.0.0" }
"github.com/my-org/internal-tools/skills/deploy" = { tag = "v2.1.0" }
[overrides."github.com/someorg/heavy-pack"]
disable = ["commands/noise.md", "hooks"]- One manifest, four agents β Write
agentpack.tomlonce, launch Claude, Cursor, OpenCode, or Codex with the same skill set. - Deterministic lockfile β
pack.lockpins exact commits and content hashes. Reproducible across machines. - Transitive resolution β Dependencies can declare their own
agentpack.toml; agentpack resolves the full tree. - Content-addressed cache β Downloaded packages are stored once in
$AGENTPACK_HOME/cache/and shared across projects. - No workspace pollution β Pack content lives in staging directories, not in your git repo. Nothing is materialized into
.cursor/or.claude/. - Offline-first β Local mirrors (
$AGENTPACK_HOME/local/) and cached metadata reduce network calls. Git protocol fallback when REST API is throttled. - Fast launch path β Launchers skip full re-sync when inputs haven't changed since the last successful run.
- Selective overrides β Disable specific commands, hooks, or directories per-package via
[overrides]. - Project-local agent config β Optional
.agents/directory (dot-agents style) merges project-specific rules, skills, and agents into staged bundles.
| Feature | agentpack | Manual copy | Symlinks | Git submodules |
|---|---|---|---|---|
| Multi-agent support | Claude, Cursor, OpenCode, Codex | One at a time | One at a time | One at a time |
| Version pinning | Semver, branch, tag, commit | None | None | Commit only |
| Transitive deps | Yes | No | No | Manual |
| Artifact conversion | Automatic per-harness | Manual | No | No |
| Cache / dedup | Content-addressed | None | N/A | Partial |
| Workspace isolation | Full (staging dirs) | Files in repo | Symlinks in repo | Dirs in repo |
| Lockfile | Deterministic | None | None | .gitmodules |
| Command | Description |
|---|---|
init |
Create agentpack.toml and pack.lock in the current project |
add <spec> |
Add a dependency, resolve, lock, and sync |
remove <spec> |
Remove a dependency and re-sync |
lock |
Resolve manifest and regenerate pack.lock |
sync |
Download, cache, and rebuild staging for all harnesses |
claude |
Sync + launch Claude Code with --plugin-dir |
agent |
Sync + launch Cursor Agent with staged HOME |
opencode |
Sync + launch OpenCode with staged config root |
codex |
Sync + launch Codex with staged CODEX_HOME |
- Rust toolchain (edition 2021), or Homebrew
rustwhen installing via brew - GitHub CLI for release automation (optional)
See AGENTS.md for full technical details: environment variables, data layout, staging internals, harness-specific behavior, and the lockfile format.
MIT β see LICENSE.