Run multiple BMad Method projects (BMad is an agent-driven planning and development workflow) out of one repo. One shared _bmad/ core, one project active at a time, switched with a symlink swap.
BMad assumes one project per repo. If several projects share the same agents and workflows, you'd otherwise duplicate _bmad/ everywhere. This keeps a single core and isolates each project's artifacts.
Meta Router is an independent tool that builds on the BMad Method; it is not affiliated with or endorsed by the BMad project.
Browse a live example →: a generated metarepo with two projects, sample artifacts, and the worktree setup. Regenerated on every push to main.
Requirements: Node.js ≥ 20 (for BMad), git, bash. On Windows, set core.symlinks=true (WSL works out of the box).
Via the skill: install it, then ask your agent to set up a metarepo; the skill runs setup from wherever it's installed.
gh skill install Code-and-Sorts/meta-router meta-routerOr clone and run setup yourself:
git clone https://github.com/Code-and-Sorts/meta-router
bash meta-router/skills/meta-router/scripts/setup.sh my-metarepoSetup asks six things: output folder name (default features), docs folder name (default docs), your BMad skill level, which agent tool you use (Claude Code, GitHub Copilot, or Codex), which projects to create, and whether to enable GitHub sync. Then it installs BMad and scaffolds everything. It also runs non-interactively for CI; see the setup environment variables.
After that, drive the metarepo either way.
Use the skill: generated metarepos include the meta-router agent skill automatically (scripts and templates ship inside it at .claude/skills/meta-router/), so your agent can switch projects, cut worktrees, and run the GitHub sync on request. Or call the bundled script directly:
cd my-metarepo
router=.claude/skills/meta-router/scripts/meta-router.sh # .github or .codex for other tools
bash $router init food-inventory # create + switch to a project
bash $router switch camera-app # change active project
bash $router list # list projectsswitch repoints a handful of symlinks at the repo root (features/, docs/, skills, repos/, implementation/) so BMad reads and writes the active project's artifacts; nothing is copied or deleted.
- How it works: the symlink swap, shared vs. per-project context, and the metarepo layout.
- Reference: every
meta-router.shcommand, configuration, setup env vars, and the file manifest. - Source repos and worktrees: declare each project's repos in
repos.yaml, then cut per-story git worktrees across them. - GitHub Issues + Projects sync: optionally mirror BMad artifacts to issue trees and a project board.
Issues and PRs welcome; CONTRIBUTING.md covers tests, shellcheck, and PR expectations.