Claude Squad
Overview
Claude Squad is a terminal UI that runs multiple AI coding agents — Claude Code, Codex, Gemini, Aider — simultaneously in isolated workspaces. Each session gets its own tmux pane, git worktree, and branch. Teams use it to parallelize coding tasks across a single codebase without merge conflicts or coordination overhead.
The problem it surfaces: when you run 5 agents in parallel, each one may need to authenticate independently — sign up for a SaaS tool, verify an email, complete a 2FA challenge, or call an authenticated API. Without an identity layer, agents either share credentials (insecure) or block waiting for human intervention.
Ravi solves this by giving each Claude Squad session its own provisioned identity: a real email address, a real phone number, and a scoped secrets vault. Agents can operate fully autonomously without exposing developer credentials or cross-contaminating inboxes.
How it works
Claude Squad uses git worktrees to give each session its own branch and working directory. Pair this with Ravi identities and each session also gets its own inbox, phone number, and credentials — a complete per-agent isolation boundary.
Session 1 → worktree/branch-1 + ravi identity: agent-1@yourdomain.com
Session 2 → worktree/branch-2 + ravi identity: agent-2@yourdomain.com
Session 3 → worktree/branch-3 + ravi identity: agent-3@yourdomain.com
Each agent can sign up for services, receive OTPs, complete MFA flows, and store credentials — independently, without race conditions or shared state.
Prerequisites
Install Claude Squad and the Ravi CLI:
# Claude Squad
brew install claude-squad
ln -s "$(brew --prefix)/bin/claude-squad" "$(brew --prefix)/bin/cs"
# Ravi CLI
brew install ravi-hq/tap/ravi
ravi auth login
Claude Squad requires tmux and gh:
brew install tmux gh
Setup
1. Create Ravi identities for your sessions
Create one Ravi identity per parallel session you plan to run. Identities are persistent — create them once and reuse across runs.
ravi identity create --name "agent-1"
ravi identity create --name "agent-2"
ravi identity create --name "agent-3"
Each identity gets a unique email address and phone number. List them:
ravi identity list --json
2. Launch sessions with identity context
Use a wrapper script to inject Ravi identity credentials into each Claude Squad session environment. Claude Squad’s --program flag lets you specify a custom launch command per session.
Create ~/.claude-squad/launch-with-ravi.sh:
#!/bin/bash
# Usage: launch-with-ravi.sh <identity-name> <agent-command>
IDENTITY=$1
shift
# Get identity credentials from Ravi
EMAIL=$(ravi identity use "$IDENTITY" && ravi get email --json | jq -r .email)
PHONE=$(ravi identity use "$IDENTITY" && ravi get phone --json | jq -r .phone)
export RAVI_IDENTITY="$IDENTITY"
export RAVI_EMAIL="$EMAIL"
export RAVI_PHONE="$PHONE"
exec "$@"
Launch individual sessions:
cs -p "~/.claude-squad/launch-with-ravi.sh agent-1 claude"
3. Configure profiles for multi-agent runs
In ~/.claude-squad/config.json, define one profile per identity:
{
"default_program": "agent-1",
"profiles": [
{
"name": "agent-1",
"program": "~/.claude-squad/launch-with-ravi.sh agent-1 claude"
},
{
"name": "agent-2",
"program": "~/.claude-squad/launch-with-ravi.sh agent-2 claude"
},
{
"name": "agent-3",
"program": "~/.claude-squad/launch-with-ravi.sh agent-3 claude"
}
]
}
When you create a new session in Claude Squad (n), the profile picker lets you select which identity to attach.
What Ravi enables per session
Email verification and OTPs
Each session’s agent can check its own inbox for verification emails without interfering with other sessions:
# Agent running in session 1
ravi identity use agent-1
ravi inbox email --unread --json
ravi inbox sms --unread --json
No two sessions share an inbox. OTPs land in the right place.
Autonomous service signups
When an agent evaluating a SaaS tool needs an account:
ravi identity use agent-1
EMAIL=$(ravi get email --json | jq -r .email)
PHONE=$(ravi get phone --json | jq -r .phone)
PASSWORD=$(ravi passwords create example.com --json | jq -r .password)
# Agent fills signup form, waits for OTP, completes verification
Real credentials. No developer exposure. Stored in the agent’s scoped vault.
Scoped secrets per session
Each Ravi identity has its own secrets vault. Store session-specific API keys or tokens:
ravi identity use agent-1
ravi vault set STRIPE_TEST_KEY sk_test_abc123
The other sessions’ vaults remain untouched.
MFA and 2FA flows
Services requiring TOTP or SMS 2FA are no longer blockers. The agent reads its own SMS inbox or TOTP codes mid-task:
ravi inbox sms --unread --json | jq -r '.messages[0].body'
# Extract the 6-digit code and continue
Running unattended with --autoyes
Claude Squad’s --autoyes flag (yolo mode) lets sessions run completely unattended — agents accept all prompts automatically. Combined with Ravi, agents can complete multi-step workflows that require authentication without any human in the loop:
cs --autoyes -p "~/.claude-squad/launch-with-ravi.sh agent-1 claude"
Why Ravi adds value here
Parallel agents amplify both productivity and identity risk. Without Ravi:
- Agents share credentials — one session’s signup contaminates another’s inbox
- OTPs get lost or intercepted across sessions
- Developers must expose real email/phone to agents
- 2FA flows block unattended execution
With Ravi:
- Isolation: each session operates with a clean, independent identity
- Auditability: every email, SMS, and credential operation is logged per identity
- No credential exposure: developer credentials never enter the agent environment
- Scale: create as many identities as sessions — Ravi handles provisioning
The pattern extends naturally: one codebase, five parallel agents, five isolated identities, zero coordination overhead.
Next steps
- Claude Code integration — using Ravi with Claude Code directly
- OpenClaw integration — multi-agent orchestration with Ravi
- Agent Skills — teach any agent how to use Ravi
- Getting started — install the Ravi CLI