gaal.yaml is the entire user-facing surface of gaal. Everything else, commands, audit, planning, rendering, exists to read this file and reconcile it against your filesystem.
File location
gaal looks for the configuration file in this order:- The path passed to
--config, if any. gaal.yamlin the current working directory.~/.config/gaal/config.yaml(user scope)./etc/gaal/config.yaml(system scope).
Top-level keys
gaal.yaml
| Key | Type | Required | Purpose |
|---|---|---|---|
schema | integer | recommended | Config version, always 1 for the current gaal release. Stable forever. |
repositories | map | no | VCS-managed sources cloned into your workspace. |
skills | array | no | SKILL.md collections to install per agent. |
mcps | array | no | MCP server entries upserted into agent JSON configs. |
telemetry | bool | no | Opt-in anonymous usage telemetry. Off by default. |
skills: is a valid gaal.yaml and a sync only touches skills.
A complete example
gaal.yaml
Validate before sync
Two ways to check agaal.yaml is well-formed:
IDE auto-completion
gaal schema writes the JSON Schema for gaal.yaml. Drop it into your editor and you get inline validation and completion as you type:
gaal schema for VS Code and JetBrains setup.