Agent Volumes separates compatibility declarations from dependency constraints. Where dependencies pin version requirements for resolution, compatibility declarations are advisory metadata: they tell discovery systems, tooling, and consumers what execution context your volume was built for. Runtimes, protocols, providers, and environment requirements are all declared this way — they appear inDocumentation Index
Fetch the complete documentation index at: https://agentvolumes.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
volume.toml and are preserved and surfaced as-is by compliant tooling, which evaluates them only when it explicitly understands the corresponding version scheme.
Runtime compatibility ([[runtimes]])
Declare which agent runtimes your volume supports by adding one [[runtimes]] entry per target runtime. If you omit the array entirely, the volume makes no runtime-specific compatibility claim.
compatibility field is a required version expression for each runtime entry, not a dependency constraint. Tooling preserves it as authored and only evaluates it when the client explicitly understands the version scheme for that runtime. Unknown-scheme expressions are advisory metadata for discovery, display, diagnostics, and adapter selection — a client must not reject a volume solely because it cannot parse the expression.
Recognized runtime identifiers
The v0.1 specification defines 18 runtime identifiers. Adding a new identifier to this list is an additive, non-breaking spec update.| Runtime ID | Description |
|---|---|
aider | Aider CLI coding agent |
claude-code | Anthropic’s Claude Code CLI agent |
cline | Cline IDE and CLI agent |
codex | OpenAI Codex CLI agent |
continue | Continue IDE and CLI agent |
cursor | Cursor AI editor |
crewai | CrewAI agent framework |
gemini | Google Gemini CLI agent |
generic-cli | Any CLI-based agent runtime |
generic-mcp | Any MCP-compatible client |
goose | Goose desktop and CLI agent |
hermes-agent | Hermes Agent autonomous runtime |
langgraph | LangGraph agent runtime SDK |
openai-agents | OpenAI Agents SDK |
openclaw | OpenClaw autonomous agent runtime |
opencode | OpenCode CLI agent |
pi-agent | Pi coding agent runtime |
semantic-kernel | Microsoft Semantic Kernel SDK |
Runtime identifiers describe the execution host, not the underlying AI model.
claude-code
identifies Anthropic’s CLI agent; it says nothing about which model that agent is configured to
use. Model/provider compatibility is outside the v0.1 runtime identifier model.Protocol compatibility ([[protocols]])
If your volume exports MCP servers or LSP servers, declare protocol compatibility using the [[protocols]] array. The version field accepts whatever version scheme the protocol ecosystem uses — MCP uses CalVer versions, LSP uses short numeric SemVer-compatible versions.
| Protocol ID | Description |
|---|---|
mcp | Model Context Protocol |
lsp | Language Server Protocol |
Provider declarations
Providers are external services your volume integrates with. Declare them at the volume level in[volume], at the component level in [[components]], or both. These are discovery and compatibility hints — they are not dependency declarations and do not affect resolution.
Common provider identifiers
The spec lists these as common providers. Provider strings are freeform — you can use identifiers outside this list for niche integrations — but using well-known names ensures your volume is discoverable through standard search filters.Dev platforms
github, gitlabCommunication
slack, discordProject management
linear, jira, notionInfrastructure
docker, kubernetesCloud
aws, gcp, azureData
postgresAI
openai, anthropicSystem surfaces
filesystem, browserEnvironment requirements ([environment])
Declare execution environment requirements in [environment]. Omitting any field means no restriction for that dimension — the volume is assumed to work in any environment for that dimension.
Valid values
- runtimes
- os
- arch
Language runtimes required to execute the volume’s components:
node, bun, deno, python, ruby, go, rustPermissions ([permissions])
Permissions declare the maximum capability surface your volume requires. Volume-level permissions apply to all components. Individual components may declare narrower permissions using a permissions table in their [[components]] entry, but they can never declare broader permissions than the volume permits.
Permission values
| Permission | Valid values | Default |
|---|---|---|
filesystem | deny, read, write, read-write | deny |
network | deny, read, write, read-write | deny |
browser | deny, read, write, read-write | deny |
shell | deny, allow | deny |
filesystem, network, and browser, the values map to intent:
deny— no accessread— inspect, list, search, fetch, or observe without side effectswrite— create, modify, delete, submit, or otherwise trigger side effectsread-write— both read and write behavior permitted
shell, the v0.1 baseline is coarse: allow or deny.
Permission narrowing at the component level
A component may omit a permission field to inherit the volume-level default, or it may declare a value that is narrower than the volume’s setting. The valid narrowing partial order forfilesystem, network, and browser is:
read and write are sibling permissions — neither is narrower than the other. This means:
- A component under a
read-writevolume may declareread,write, ordeny. - A component under a
readvolume may declaredeny, but notwrite. - A component under a
writevolume may declaredeny, but notread. - A component under a
denyvolume may only declaredeny(or omit the field).
shell: deny < allow. A component under a deny volume cannot declare allow.