Muster
Workspace orchestrator for Claude Code. Create and manage multi-repo workspaces with coordinated branch checkout and automatic workspace configuration.
Features
- Multi-repo workspaces: Clone multiple repositories into a single workspace
- Coordinated branching: Automatically check out branches across all repos with template substitution
- Workspace configuration: Auto-generate
CLAUDE.md with workspace metadata
- Stack management: Define reusable repository collections in config
- Claude Code integration: Seamlessly launch Claude Code with workspace context
Installation
From Source
go build -o /usr/local/bin/muster ./cmd/muster
Requirements
- Go 1.19 or later
- Git
- Claude Code (for
muster launch integration)
Setup
Configuration File
Initialize your muster configuration:
muster init
This creates a new config file at ~/.config/muster/config.json with example stacks and defaults. Then edit the file to customize your repositories and stacks.
See config.example.json for the complete example configuration structure.
Usage
Launch a Workspace
Launch an existing workspace or create a new one from a stack:
muster launch my-workspace --stack full-stack
For new workspaces, this will:
- Create
~/.muster/my-workspace/
- Clone all repos from the stack
- Checkout branches (with
{workspace} substitution)
- Generate
CLAUDE.md
- Launch Claude Code
For existing workspaces, it opens them directly in Claude Code.
Launch with Specific Branch
Override branch checkout for all repos:
muster launch my-workspace --stack full-stack --branch main
Template substitution still applies:
--branch "feature-{workspace}" → checks out feature-my-workspace
Launch Without Branch Checkout
Skip automatic branch checkout:
muster launch my-workspace --stack full-stack --no-branch
Launch Without Agent
Skip launching the agent (Claude Code by default):
muster launch my-workspace --stack full-stack --no-agent
Launch With Editor
Launch the editor in addition to the agent:
muster launch my-workspace --stack full-stack --editor
Launch With Custom Agent/Editor
Configure custom commands in your config file, then:
muster launch my-workspace --stack full-stack --agent --editor
Both --agent and --editor can be used together, and both respect your configured commands and defaults.
Add Individual Repos
Mix stack repos with explicit URLs:
muster launch my-workspace --stack full-stack --repo https://github.com/yourorg/docs
Repeatable:
muster launch my-workspace \
--repo https://github.com/yourorg/api \
--repo https://github.com/yourorg/web
Remove a Workspace
Delete a workspace with confirmation:
muster remove my-workspace
Skip confirmation:
muster remove my-workspace --yes
Configuration Reference
Config Structure
Template Variables:
{workspace} — The workspace name (e.g., "my-workspace")
{workspaceDirectory} — The full path to the workspace (e.g., /home/user/.muster/my-workspace)
Branch Checkout Precedence
- CLI
--branch flag → uses this branch for all repos
- CLI
--no-branch flag → skips checkout entirely
- Per-repo
templateBranchSyntax in config
- Global
defaults.templateBranchSyntax in config
- Git default branch (after clone)
Agent and Editor Launch Precedence
Agent Launch:
- CLI
--no-agent flag → do not launch
- CLI
--agent flag → launch
defaults.launchAgent config (default true) → launch if true
- If not launched, no agent command is run
Editor Launch:
- CLI
--no-editor flag → do not launch
- CLI
--editor flag → launch
defaults.launchEditor config (default false) → launch if true
- If not launched, no editor command is run
Command Template Variables:
Commands support two template variables:
{workspace} — Replaced with the workspace name (e.g., my-workspace)
{workspaceDirectory} — Replaced with the full workspace path (e.g., /home/user/.muster/my-workspace)
Examples:
claude --name {workspace} → claude --name my-workspace
code {workspaceDirectory} → code /home/user/.muster/my-workspace
Workspace Layout
~/.muster/my-workspace/
├── CLAUDE.md # Auto-generated workspace documentation
├── api/ # Cloned repo (from URL)
├── web/ # Cloned repo
└── types/ # Custom directory name (from config)
Development
Build
go build -o bin/muster ./cmd/muster
Test
go test ./...
Lint
go fmt ./...
golangci-lint run ./...
Design
See docs/internal/DESIGN.md for detailed architecture and implementation decisions.