Meet Bob, your friendly neighborhood assistant for managing multiple Claude Code instances across git repositories and worktrees!
Bob helps you juggle multiple projects simultaneously by spinning up isolated Claude Code environments for each git branch or worktree. Think of Bob as your personal dev environment concierge - he keeps your Claude instances organized, running, and ready to help with whatever project you're working on.
Bob is a web-based management interface that:
- ๐๏ธ Manages Multiple Claude Instances - Run Claude Code in parallel across different projects and branches
- ๐ณ Git Worktree Integration - Automatically creates and manages git worktrees for branch isolation
- ๐ฅ๏ธ Interactive Terminals - Built-in terminal access to both Claude and your project directories
- ๐ Real-time Monitoring - Live status updates, process monitoring, and resource tracking
- ๐ One-Click Operations - Start, stop, restart, and manage instances with simple clicks
- ๐ Auto-reconnection - Persistent terminal sessions that survive browser refreshes
- ๐พ State Persistence - Remembers your instances and sessions across restarts
- ๐ฏ Smart Auto-selection - Automatically connects to running instances when switching worktrees
[Add screenshots here showing the main interface, terminal sessions, and repository management]
Repository management on the left, terminal interface on the right
Real-time status monitoring and control
- Multi-project Developers working on several codebases simultaneously
- Feature Branch Development where each branch needs its own Claude instance
- Code Review Workflows comparing implementations across branches
- Team Environments sharing access to managed Claude instances
- CI/CD Integration automated testing with isolated environments
| Feature | Manual Claude CLI | Bob |
|---|---|---|
| Multiple Instances | โ Manual terminal juggling | โ Web-based dashboard |
| Project Switching | โ Manual cd commands |
โ One-click selection |
| Session Persistence | โ Lost on terminal close | โ Survives browser restart |
| Visual Status | โ No unified view | โ Real-time monitoring |
| Worktree Management | โ Manual git commands | โ Automated creation/cleanup |
| Terminal Access | โ Separate windows | โ Integrated interface |
| Process Management | โ Manual kill/restart | โ Graceful controls |
| Team Sharing | โ Individual setups | โ Shared web interface |
- Node.js (v18+)
- Git with worktree support
- Claude Code CLI installed and configured
- GitHub CLI for pull request automation (optional)
Download & Install
-
Download the latest release from GitHub Releases
- Windows:
Bob-Setup-{VERSION}.exe(installer) orBob-{VERSION}.exe(portable) - macOS:
Bob-{VERSION}.dmg(disk image) orBob-{VERSION}-mac.zip(universal Intel/M1) - Linux:
Bob-{VERSION}.AppImage,bob_{VERSION}_amd64.deb, orbob-{VERSION}.x86_64.rpm
- Windows:
-
Install and Launch
- Run the installer or extract the portable version
- Launch Bob from your applications menu or desktop
- The app will automatically start the backend service
-
Add Your First Repository
- Use File โ Open Repository or the "Add Repository" button
- Select your git repository directory
- Bob will scan and index your project
-
Clone Bob's Repository
git clone <repository-url> cd bob npm run install:dependencies
-
Build and Run Desktop App
# Run in development mode npm run dev:app # Or build and run production app npm run build npm run start:electron
-
Web Development Mode (for development only)
# Clean start (recommended for first time or after branch switches) npm run dev:clean # Or regular start if no conflicts exist npm run dev
-
Optional: Authenticate with GitHub (for PR features)
gh auth login
- Click the "Add Repository" button in the left panel
- Enter or browse to your git repository path
- Bob automatically detects the repository structure and available branches
Option 1: New Branch Worktree
- Select a repository from the left panel
- Click "Create Worktree"
- Enter a branch name (new or existing)
- Bob creates the worktree and starts a Claude instance automatically
Option 2: Existing Worktree
- Select an existing worktree from the repository tree
- Click to select it - Bob automatically starts a Claude instance if needed
Bob provides two types of terminal access for each instance:
Claude Terminal ๐ค
- Direct interaction with Claude Code
- Full Claude capabilities (code analysis, generation, file operations)
- Persistent across browser sessions
Directory Terminal ๐
- Standard bash/shell access to the worktree directory
- Run git commands, build scripts, tests, etc.
- Full filesystem access within the project
Starting/Stopping Instances
- Use the โก Start button to launch Claude in a worktree
- Use the โธ๏ธ Stop button to gracefully shutdown an instance
- Use the ๐ Restart button to reboot a problematic instance
Monitoring Status
- ๐ข Running - Instance is active and ready
- ๐ก Starting - Instance is initializing
- ๐ด Stopped - Instance is not running
- โ Error - Instance encountered a problem
Deleting Worktrees
- Select a worktree and use the ๐๏ธ Delete option
- Bob will prompt for confirmation and handle cleanup
- Use Force Delete if the worktree has uncommitted changes
Bob is built with a modern, scalable architecture:
- React 18 with hooks and modern patterns
- Vite for fast development and building
- XTerm.js for terminal emulation
- WebSocket connections for real-time terminal interaction
- Express.js API server
- WebSocket Server for terminal sessions
- SQLite Database for persistence
- node-pty for terminal process management
- Git integration for worktree operations
ClaudeService
- Manages Claude Code process lifecycle
- Handles instance creation, monitoring, and cleanup
- Implements process isolation and resource management
TerminalService
- Creates and manages PTY sessions
- WebSocket message routing and session persistence
- Memory leak protection and cleanup
GitService
- Git repository scanning and worktree management
- Branch detection and worktree creation
- Repository metadata tracking
DatabaseService
- SQLite-based persistence layer
- Repository, worktree, and instance state management
- Optimized queries with JOIN operations for performance
Bob uses semantic versioning (semver) with a centralized VERSION file approach:
- Version Storage: Current version is stored in the
VERSIONfile at project root - Format:
MAJOR.MINOR.PATCH(e.g.,0.1.0) - Sync Command:
npm run sync-versionupdates all package.json files - Release Process: See RELEASE.md for complete release workflow
- Current Version: Displayed in app "About" dialog (reads from VERSION file)
- Development: Version synced automatically during build process
- Production: Version must be manually updated in VERSION file for releases
bob/
โโโ frontend/ # React frontend application
โ โโโ src/
โ โ โโโ components/ # React components
โ โ โโโ contexts/ # React contexts for state management
โ โ โโโ hooks/ # Custom React hooks
โ โ โโโ services/ # Frontend service layers
โโโ backend/ # Node.js backend application
โ โโโ src/
โ โ โโโ routes/ # Express route handlers
โ โ โโโ services/ # Core business logic services
โ โ โโโ database/ # Database layer and migrations
โ โ โโโ cli/ # Command-line utilities
โโโ electron/ # Electron desktop app
โ โโโ main.js # Main process (reads VERSION file)
โ โโโ preload.js # Preload script
โโโ .github/workflows/ # GitHub Actions for automated builds
โโโ VERSION # Semantic version (single source of truth)
โโโ RELEASE.md # Release process documentation
โโโ package.json # Root package with workspace config
โโโ CLAUDE.md # Development instructions for Claude
Development
npm run dev # Start both frontend and backend (web mode)
npm run dev:clean # Clean start (kills existing processes)
npm run dev:app # Start desktop app in development mode
npm run dev:electron # Start Electron only (for debugging)
npm run dev:frontend # Start only frontend (port 47285)
npm run dev:backend # Start only backend (port 43829)Building
npm run build # Build both frontend and backend
npm run build:frontend # Build only frontend
npm run build:backend # Build only backend
npm run start:electron # Run production desktop appVersioning & Releases
npm run sync-version # Sync VERSION file to all package.json files
npm run dist # Build and package for current platform
npm run dist:linux # Build Linux packages (AppImage, deb, rpm)
npm run dist:mac # Build macOS packages (dmg, zip)
npm run dist:win # Build Windows packages (nsis installer, portable)Database Management
npm run migrate:status # Check migration status
npm run migrate:up # Run pending migrations
npm run migrate:down # Rollback last migration
npm run migrate:reset # Reset database (dev only)
npm run migrate:create # Create new migrationBranch Switching When switching git branches during development, always use:
npm run dev:cleanThis prevents "horribly broken" states where multiple dev servers conflict.
Database Changes Create migrations for any schema changes:
npm run migrate:create add_new_featureDebugging
- Backend logs appear in the terminal running
npm run dev - Frontend errors show in browser dev console
- WebSocket connections can be monitored in Network tab
Backend (.env)
PORT=3001 # Backend server port
DB_PATH=./bob.sqlite # Database file location
NODE_ENV=development # Environment modeFrontend Configuration is handled through Vite's environment system.
Terminal Themes
Edit frontend/src/components/Terminal.tsx to customize the terminal appearance:
terminal.current = new Terminal({
theme: {
background: '#1a1a1a',
foreground: '#e5e5e5',
cursor: '#ffffff',
},
fontSize: 14,
fontFamily: 'Monaco, Menlo, "Ubuntu Mono", monospace',
});Repositories
GET /api/repositories- List all repositoriesPOST /api/repositories- Add new repositoryDELETE /api/repositories/:id- Remove repository
Instances
GET /api/instances- List all Claude instancesPOST /api/instances/start/:worktreeId- Start instancePOST /api/instances/stop/:instanceId- Stop instancePOST /api/instances/restart/:instanceId- Restart instance
Terminal Sessions
POST /api/instances/terminal/:instanceId- Create Claude terminal sessionPOST /api/instances/directory/:instanceId- Create directory terminal sessionGET /api/instances/sessions/:instanceId- List active sessionsDELETE /api/instances/sessions/:sessionId- Close session
Terminal sessions use WebSocket for real-time communication:
Message Types
// Client to server
{ type: 'data', data: string } // Send input to terminal
{ type: 'resize', cols: number, rows: number } // Resize terminal
// Server to client
{ type: 'data', data: string } // Terminal output
{ type: 'ready' } // Session readyBob welcomes contributions! Here's how to get involved:
- Fork the Repository and create a feature branch
- Follow the Development Setup above
- Make Your Changes with appropriate tests
- Submit a Pull Request with a clear description
- Follow existing code style and patterns
- Add tests for new functionality
- Update documentation for API changes
- Use descriptive commit messages
- Ensure all tests pass before submitting
Claude Code Not Found
# Install Claude Code CLI
curl -fsSL https://claude.ai/install.sh | sh
# Verify installation
claude --versionPermission Errors
- Ensure read/write access to repository directories
- Check git permissions for worktree operations
- Verify Node.js has proper filesystem access
Port Conflicts
# Kill processes using development ports
lsof -ti:47285 | xargs kill -9 # Frontend
lsof -ti:43829 | xargs kill -9 # Backend
# Use clean start
npm run dev:cleanWebSocket Connection Issues
- Check firewall settings for port 43829
- Verify WebSocket support in browser
- Monitor network tab for connection errors
Database Issues
# Reset database if corrupted
npm run migrate:reset
npm run migrate:upFuture features we're considering for Bob:
- ๐ Remote Instances - Manage Claude instances on remote servers
- ๐ฅ Team Collaboration - Share instances and sessions with team members
- ๐ Analytics Dashboard - Usage metrics and performance insights
- ๐ Plugin System - Extensible architecture for custom integrations
- ๐ณ Docker Support - Containerized Claude environments
- โ๏ธ Cloud Deployment - One-click deployment to various cloud providers
Q: Why is it called Bob? A: Because Bob is your reliable helper who keeps everything organized! Plus, "Bob's your uncle" - it just works! ๐
Q: Can I run this in production? A: Bob is primarily designed for development environments. For production use, consider adding authentication, HTTPS, and proper security measures.
Q: Does Bob work on Windows? A: Yes! Bob works on Windows, macOS, and Linux. The terminal experience may vary slightly based on your system's default shell.
Q: How many instances can Bob manage? A: Bob can theoretically manage dozens of instances, but practical limits depend on your system resources (RAM, CPU, disk space).
Q: Can I customize the terminal theme? A: Absolutely! Check the Configuration section for details on customizing terminal appearance.
GNU GPLv3 License - feel free to use Bob in your projects!
Bob was crafted with love using:
- Claude Code - The AI pair programming tool that makes this all possible
- React - Frontend framework for the beautiful UI
- Node.js - Backend runtime powering Bob's services
- XTerm.js - Terminal emulation that brings the CLI to the web
- Express.js - Web framework handling all the HTTP magic
- Vite - Lightning-fast build tool
- TypeScript - Type safety that keeps Bob reliable
Special thanks to all the developers who make the open-source tools that Bob builds upon! ๐
Happy coding with Bob! ๐
Bob: Because managing multiple Claude instances should be as easy as saying "Bob's your uncle!"
If Bob helps you be more productive, consider starring the repository! โญ