@jayphen/coders
v1.2.11
Published
Spawn AI coding assistants (Claude, Gemini, Codex, OpenCode) in isolated tmux sessions with git worktree support
Downloads
292
Maintainers
Readme
Coder Spawner
Spawn AI coding assistants (Claude, Gemini, Codex, OpenCode) in isolated tmux sessions with optional git worktrees.
Prerequisites
- tmux - Required for session management
- Redis - Required for coordination and heartbeat monitoring
Two Ways to Use
1. Claude Code Plugin (Recommended)
Install as a Claude Code plugin using the marketplace:
# Add the marketplace
claude plugin marketplace add https://github.com/Jayphen/coders.git
# Install the plugin
claude plugin install coders@codersNo npm install needed - TypeScript files are loaded directly!
Available slash commands:
/coders:spawn claude --task "Build auth" --worktree feature/auth
/coders:list
/coders:attach my-session
/coders:kill my-session
/coders:snapshot
/coders:restoreOr use as a skill in Claude Code:
import { coders } from '@jayphen/coders';
// Spawn Claude with worktree
await coders.spawn({
tool: 'claude',
task: 'Refactor the authentication module',
worktree: 'feature/auth-refactor',
prd: 'docs/auth-prd.md'
});
// Quick helpers
await coders.claude('Fix the bug', { worktree: 'fix-auth' });
await coders.opencode('Research JWT approaches');
coders.list();
coders.attach('session-name');
coders.kill('session-name');2. Standalone CLI (Optional)
# Clone and use directly
cd ~/code
git clone https://github.com/Jayphen/coders.git
cd coders
# Optional (required for dashboard/Redis features)
npm install
# Use the CLI via the bundled wrapper
./bin/coders spawn claude --task "Hello world"
./bin/coders list
./bin/coders attach my-sessionAdd it to your PATH:
export PATH="$PATH:$HOME/code/coders/bin"
coders spawn claude --task "Hello world"Or symlink it:
ln -sf ~/code/coders/bin/coders ~/bin/coders
coders spawn claude --task "Hello world"Features
- Interactive Sessions: All spawned AIs stay in interactive mode for continuous communication
- Git Worktrees: Creates isolated branches for each task
- PRD Priming: Feeds context to the AI before it starts
- Tmux Sessions: Runs in separate tmux windows
- Redis Heartbeat: Session monitoring, pub/sub for inter-agent communication
- Tmux Resurrect: Snapshot/restore entire swarm
Communicating with Spawned Sessions
All sessions run in interactive mode and persist until you explicitly kill them.
Attach directly (recommended):
tmux attach -t coder-SESSION_ID
# Press Ctrl+B then D to detach without killingSend messages remotely:
# Using helper script
./bin/send-to-session.sh coder-SESSION_ID "your message"
# Check response
tmux capture-pane -t coder-SESSION_ID -p | tail -20Why two-step for remote messaging: TUI applications (Gemini, Codex) require text and Enter to be sent separately:
tmux send-keys -t SESSION "message"
sleep 0.5 # Let TUI process input
tmux send-keys -t SESSION C-m # SubmitRedis Heartbeat & Monitoring
Enable Redis for heartbeat monitoring and inter-agent communication:
await coders.spawn({
tool: 'claude',
task: 'Build auth module',
redis: { url: 'redis://localhost:6379' },
enableHeartbeat: true
});This will:
- Publish heartbeats every 30s to Redis for dashboard monitoring
- Enable inter-agent pub/sub communication
- Clean up resources automatically when sessions end
Inter-Agent Communication
Send messages between spawned agents:
await coders.sendMessage('target-session', 'Found a bug in auth!', { url: 'redis://localhost:6379' });Tmux Resurrect
Snapshot your entire swarm:
import { snapshot, restore } from '@jayphen/coders';
snapshot(); // Saves to ~/.coders/snapshots/
restore(); // Restores from latest snapshotRequirements
- tmux - Required
- Redis - Required (for coordination/heartbeat)
- Claude Code CLI (
npm i -g @anthropic-ai/claude-code) - optional - Gemini CLI (
npm i -g @googlelabs/gemini-cli) - optional - OpenAI Codex CLI (
pip install openai-codex) - optional - OpenCode CLI (
npm i -g @opencode/ai/cli) - optional
Project Structure
coders/
├── .claude-plugin/
│ └── plugin.json # Plugin manifest (Claude Code discovers this)
├── commands/ # Slash commands (auto-discovered)
│ ├── spawn.md
│ ├── list.md
│ ├── attach.md
│ ├── kill.md
│ ├── snapshot.md
│ └── restore.md
├── skills/
│ ├── assets/ # Runtime assets (dashboard, heartbeat)
│ └── coders/
│ ├── scripts/
│ │ ├── main.js # CLI entry point
│ │ └── orchestrator.js # Orchestrator state helpers
│ ├── SKILL.md # Skill definition (required for discovery)
│ ├── coders.ts # Claude Code skill (TypeScript, loaded directly)
│ ├── coders.d.ts # Type definitions
│ ├── redis.ts # Redis heartbeat & pub/sub
│ └── tmux-resurrect.ts # Snapshot/restore logic
├── bin/
│ ├── coders # CLI wrapper
│ └── send-to-session.sh # Helper script
├── .gitignore
├── package.json
└── README.mdNote: No build step required! Claude Code loads .ts files directly.
License
MIT
