VM0VM0
ReferenceConfiguration

vm0.yaml

Configuration file reference for VM0 agents

The vm0.yaml file defines your agent configuration.

Minimal Example

version: "1.0"

agents:
  my-agent:
    framework: claude-code
    instructions: AGENTS.md
    environment:
      CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}

Full Example

version: "1.0"

agents:
  my-agent:
    description: My production agent
    framework: claude-code
    instructions: AGENTS.md
    skills:
      - slack
      - https://github.com/vm0-ai/vm0-skills/tree/main/hackernews
    volumes:
      - my-volume:/home/user/.config
    environment:
      CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
      MY_VAR: ${{ vars.MY_VAR }}

volumes:
  my-volume:
    name: my-volume
    version: latest

Template values like ${{ secrets.X }} and ${{ vars.X }} are resolved from Platform-stored secrets and variables. Store them once with vm0 secret set or vm0 variable set, and they're automatically loaded on every run. See Environment Variables for details.

Currently only one agent per vm0.yaml file is supported. Defining multiple agents will result in a validation error.

Top-Level Fields

FieldTypeRequiredDefaultDescription
versionstringYes-Configuration version. Currently "1.0"
agentsobjectYes-Map of agent definitions
volumesobjectNo{}Map of volume definitions

Agent Fields

Each agent key must be a valid agent name: 3-64 characters, starting and ending with a letter or number, containing only letters, numbers, and hyphens.

FieldTypeRequiredDefaultDescription
descriptionstringNo-Optional description for the agent
frameworkstringNoclaude-codeAgent framework: claude-code. See Model Selection
instructionsstringNo-Path to instruction file (e.g., AGENTS.md). See Instructions
skillsarrayNo[]List of skill references. Supports bare names (e.g., "slack") which resolve to https://github.com/vm0-ai/vm0-skills/tree/main/slack, or full GitHub URLs. See Skills
volumesarrayNo[]Volume mounts in format name:path. See Volume
environmentobjectNo{}Environment variables. See Environment Variables
experimental_runnerobjectNo-Self-hosted runner configuration. Object with group field in org/name format (e.g., acme/production)

Volume Fields

FieldTypeRequiredDefaultDescription
namestringYes-Volume name (must match .vm0/storage.yaml)
versionstringYes-Version to use (e.g., latest or version hash)
optionalbooleanNofalseWhen true, skip mounting without error if volume doesn't exist

On this page