gaal CLI syncs Claude Code configs across agents and machines
A three-person team released gaal, a free open-source CLI that uses a single declarative YAML file to keep `CLAUDE.md`, slash commands, MCP servers, and skill packages in sync across multiple machines and coding agents.
Score breakdown
gaal addresses a concrete multi-agent, multi-machine config management problem by consolidating agent-specific file routing and MCP merge logic into a single versioned YAML, removing the need to maintain separate sync scripts for each agent's install paths.
- 01gaal is a free, open-source (AGPL-3.0) CLI written in Go by a three-person team.
- 02A single declarative YAML file in a git repo serves as the source of truth; `gaal sync` writes configs where each agent expects them.
- 03Supported agents include Claude Code, Cursor, Codex, Windsurf, Cline, Continue, Goose, and 14 others — 21 total.
u/gquizal describes two compounding pain points that motivated gaal: different coding agents (Claude Code, Codex, Cursor, Windsurf, etc.) each expect rules files under different filenames and paths, and running Claude Code across multiple machines means every agent-specific config must be duplicated everywhere. The team's solution is a single declarative YAML file committed to a git repo; after a `git pull`, running `gaal sync` writes each config to the location each agent natively expects. The content-routing block maps one source file — named anything the user wants — to multiple output paths and filenames simultaneously, so `rules.md` becomes `CLAUDE.md`, `AGENTS.md`, or `.cursorrules` depending on the target agent. The same pattern covers slash commands directories, `settings.json`, hooks, MCP server entries, and skill packages. MCP entries are upserted into `~/.claude.json` rather than overwriting it, a design decision that came directly from a team member accidentally nuking hand-added servers.\n\nThe tool is free, open source under AGPL-3.0, requires no account, and needs no remote server for solo use. It supports 21 agents total, including Claude Code, Cursor, Codex, Windsurf, Cline, Continue, and Goose. The post acknowledges overlap with existing tools — chezmoi, skills-sync, agent-dotfiles, and rule-porter — but positions gaal's differentiator as combining repos, skills, MCPs, and content routing in one file with a three-scope model (system / user / workspace) where workspace-level config takes precedence, preventing a shared baseline from overriding project-specific settings.
Key facts
- 01gaal is a free, open-source (AGPL-3.0) CLI written in Go by a three-person team.
- 02A single declarative YAML file in a git repo serves as the source of truth; `gaal sync` writes configs where each agent expects them.
- 03Supported agents include Claude Code, Cursor, Codex, Windsurf, Cline, Continue, Goose, and 14 others — 21 total.
- 04MCP server entries are upserted into `~/.claude.json` without overwriting hand-added entries.
- 05The tool covers rules files, slash commands, `settings.json`, hooks, MCP server entries, and skill packages.
- 06A three-scope model (system / user / workspace) ensures workspace-level config takes precedence over shared baselines.
- 07No account or remote server is required to run it solo; the GitHub repo is at github.com/getgaal/gaal.
Topics
Summary and scoring are generated automatically from the original article. We always link back to the publisher and never republish images or paywalled content. Last processed Jun 9, 2026 · 17:05 UTC. How this works →