Agent Package Manager
The Agent Package Manager (APM) installs packages, plugins (directly) or through marketplaces.
Unlike plugins installed natively through each agent runtime, the APM CLI takes care of placing the components in the right place for each agent runtime,
so that they can be used without any additional configuration (.agents, .claude, .copilot, .github, etc.),
broadening agent runtime compatibility.
Usage
Installation can be made within repositories (to have dependencies or plugins scoped to a repository)
or user-scoped. Scope management is done through the --global / -g flag.
To install components for only specific agent runtimes,
use the target(s) property.
Install any package from anywhere (Git repository, local directory, remote component, etc.).
curl -fSL https://aka.ms/apm-unix | sh
apm install <path_to_primitive>
apm install --mcp <path_to_primitive>name: my-project
version: 0.1.0
description: Dependencies for project
dependencies:
apm: []
mcp: []
lsp: []
targets: [claude, codex, copilot, gemini, kiro, opencode, windsurf]Lockfile
Every install is tracked in a lockfile so teams can use the exact same dependencies and plugins (similar to package-lock.json).
User scope (-g flag):
~/.apm/
└── apm.lock.yamlRepository scope (default), meant to be committed:
repository/
└── apm.lock.yamlLimitations
Namespacing
Slash-like components installed through APM aren’t namespaced (e.g. /plugin:skill-name)
and can be subject to naming conflicts.