pegboard.yaml
The stack file format, key by key.
A stack lives at ./pegboard.yaml for a project and ~/.config/pegboard/pegboard.yaml for your user. It’s validated against a JSON Schema, which also gives you autocompletion in editors that support it.
version: 1
agents: [claude-code, codex, opencode, hermes]
inherit: global
mcps:
github:
command: npx
args: ["-y", "@modelcontextprotocol/server-github"]
env:
GITHUB_TOKEN: "${env:GITHUB_TOKEN}"
notion:
url: https://mcp.notion.com/mcp
agents: [claude-code]
skills:
- mattpocock/skills@tdd
- pegboard
- source: ./skills/review
agents: [codex, opencode]
context:
agents_md: true
remove:
mcps: [notion]
policy:
allow_mcps: [github, linear]
Keys
| Key | What it does |
|---|---|
version |
Format version. Use 1 |
agents |
Which agents to configure. Defaults to the ones detected. See agent IDs |
inherit |
Project stacks only. global or none |
mcps |
MCP servers, by name |
skills |
Skill sources. To limit one to some agents, write source: … and agents: […] |
context.agents_md |
Project scope only. Guarantees AGENTS.md and the CLAUDE.md bridge |
remove |
Removes an entry that’s declared or inherited, applied last |
policy.allow_mcps |
Fails plan and apply if any other MCP is present |
include |
Planned. Currently ignored with a warning |
MCP entries
| Key | What it does |
|---|---|
command, args, env |
A stdio server |
url |
An HTTP server |
agents |
Limits this MCP to certain agents |
context.agents_md
This creates AGENTS.md if it doesn’t exist. From then on the file is yours, and Pegboard never deletes it. It also adds the line @AGENTS.md to CLAUDE.md so Claude Code reads it. If you later remove agents_md, Pegboard removes that line only if it added it.