Launch Members
This guide covers provisioning workspaces for team members and launching their Ralph instances.
Provision workspaces
Before launching members, provision their workspaces:
This performs the following steps for each hired member × configured project:
- Clones the project repo into a workspace directory (e.g.,
workzone/my-team/human-assistant/) - Clones the team repo into
.botminter/inside the workspace - Writes a
.botminter/.membermarker file - Creates symlinks for
PROMPT.mdandCLAUDE.md - Copies
ralph.ymlandsettings.local.json - Assembles
.claude/agents/from all agent layers (team, project, member) - Sets up
.git/info/excludeand.gitignoreto exclude workspace files
Use --push to push the team repo before syncing:
Launch all members
This discovers all member workspaces, maps credentials from the config, and launches ralph run -p PROMPT.md as a background process per member. A .topology file is written to the team directory tracking member endpoints.
The bm up alias also works:
Launch with a formation
Specify a formation to control the deployment target:
bm start --formation local # Default — launches locally
bm start --formation k8s # Delegates to the formation manager via a one-shot Ralph session
Non-local formations (e.g., k8s) require a configured formation manager in the profile's formations/ directory.
Check status
This shows the member table (name, role, status, PID), the formation type from the topology file, and daemon status if a daemon is running.
Add -v for verbose Ralph runtime details:
Stop members
Graceful stop (waits up to 60 seconds):
Force stop (sends SIGTERM immediately):
Stopping also removes the .topology file from the team directory.
Event-driven daemon
Instead of running members continuously, use the daemon to launch members one-shot when GitHub events arrive. This eliminates idle token burn:
bm daemon start # Webhook mode (default, port 8484)
bm daemon start --mode poll --interval 120 # Poll mode, check every 2 minutes
Check daemon status and stop:
The daemon filters for issues, issue_comment, and pull_request events. When an event arrives, it discovers members, spawns them one-shot, waits for completion, and cleans up. Each member's output is written to a separate log file at ~/.botminter/logs/member-{team}-{member}.log. See CLI Reference — Daemon for full options and Daemon Operations for architecture, debugging, and troubleshooting.
Re-sync after changes
If team configuration has changed (new knowledge, updated prompts, modified ralph.yml), re-sync workspaces:
What sync updates
| What | How |
|---|---|
Team repo (.botminter/) |
git pull |
| Project repo | git pull |
ralph.yml |
Re-copy if source is newer |
settings.local.json |
Re-copy if source is newer |
.claude/agents/ |
Re-assemble symlinks |
PROMPT.md, CLAUDE.md |
Verify and repair symlinks |
.git/info/exclude |
Verify and add missing patterns |
After syncing, restart agents for ralph.yml changes to take effect:
Launch for a specific team
All commands accept -t to target a specific team (defaults to the default team):
Troubleshooting
"No workspaces found"
: Run bm teams sync first to provision workspaces.
"Member not found"
: Run bm hire <role> first to add a member.
Changes to ralph.yml not taking effect
: Run bm teams sync and restart agents with bm stop && bm start. ralph.yml is a copy, not a symlink.
Symlinks broken after moving directories
: Run bm teams sync to repair.
Related topics
- Manage Members — hiring and configuring members
- Workspace Model — workspace layout and file surfacing
- CLI Reference — full command documentation
- Configuration Files — daemon config, formation config, and topology file