Like Rembrandt's workshop - multiple apprentices working on different parts of the canvas, unified by the master into a cohesive masterpiece.
Orchestration layer for coding agents (Claude Code, OpenCode, AmpCode, Codex, etc.) that enables parallel execution without collision.
In Development - Migrating to Tauri + Svelte + xterm.js GUI.
The CLI commands work. The GUI is being built to provide a desktop app where each agent gets its own terminal widget.
Run multiple AI coding agents simultaneously on the same codebase without them stepping on each other. Zoom out to see the symphony, zoom in to conduct any agent.
# Build the CLI
cargo build --release
# Initialize in your project
rembrandt init
# Spawn an agent (interactive - prompts for starting task)
rembrandt spawn claude
# Spawn with an initial prompt
rembrandt spawn claude --prompt "implement the login form"
# Spawn from a specific branch
rembrandt spawn opencode --branch feature/auth
# List active sessions
rembrandt list
# Clean up orphaned worktrees
rembrandt gc
cd gui
npm install
npm run tauri dev
┌─────────────────────────────────────────────────────────────┐
│ REMBRANDT GUI (Tauri + Svelte) │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Agent Sidebar │ xterm.js Terminal Widgets ││
│ │ - Agent list │ - One terminal per agent ││
│ │ - Status │ - Full TUI support ││
│ │ - Controls │ - Late-attach with history ││
│ └─────────────────────────────────────────────────────────┘│
├─────────────────────────────────────────────────────────────┤
│ TAURI RUST BACKEND │
│ PTY Sessions │ Session Manager │ Worktree Manager │
├─────────────────────────────────────────────────────────────┤
│ INTEGRATION LAYER │
│ Beads (tasks) │ Porque (decisions) │ Agent Mail (comms) │
├─────────────────────────────────────────────────────────────┤
│ Claude Code │ OpenCode │ AmpCode │ Codex │ Aider │
└─────────────────────────────────────────────────────────────┘
Each agent gets an isolated git worktree:
project/
├── .git/ # Shared git database
├── main/ # Human workspace
├── .rembrandt/
│ ├── agents/
│ │ ├── agent-1/ # Agent 1's worktree
│ │ └── agent-2/ # Agent 2's worktree
│ └── state.db # Session state
bd ready, bd sync)pq context, pq check)| Command | Description |
|---|---|
rembrandt init |
Initialize in current repository |
rembrandt spawn <agent> |
Spawn agent in new worktree |
rembrandt dashboard |
Launch TUI (Symphony/Solo views) |
rembrandt list |
List active agent sessions |
rembrandt attach <id> |
Zoom into agent terminal |
rembrandt broadcast <msg> |
Message all agents |
rembrandt merge <id> |
Merge agent's work to main |
rembrandt stop <id> |
Stop an agent session |
rembrandt cleanup |
Remove completed worktrees |
rembrandt gc |
Garbage collect orphaned worktrees |
rembrandt status |
Show integration status |
| Flag | Description |
|---|---|
-p, --prompt <TEXT> |
Initial task to send to the agent |
-C, --continue <ID> |
Resume in existing worktree |
-t, --task <ID> |
Beads task ID to assign |
-b, --branch <NAME> |
Base branch to fork from (default: main) |
--no-prompt |
Skip interactive prompt |
# Build CLI
cargo build
# Run CLI
cargo run -- status
# Test
cargo test
# Run GUI (in development)
cd gui && npm run tauri dev