io.github.saicharanrajoju/letswork
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@io.github.saicharanrajoju/letsworkshow me pending changes from the guest"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
LetsWork
Real-time collaborative coding via Claude Code — two developers, one codebase, each using their own Claude subscription.
One developer hosts the session. The other joins from anywhere. Both get a live Claude Code window connected to the same project — with file locking and an approval system to prevent conflicts.
How It Works
Host runs
letswork startinside their project folderA secure HTTPS tunnel is created automatically via Cloudflare
A one-time URL + guest token is generated and printed
Host shares the join command with the guest
Guest runs
letswork join <url> --token <token>on their machineBoth developers now have Claude Code connected to the same codebase
Related MCP server: Blackboard MCP
Requirements
Requirement | macOS | Windows (WSL) |
Python 3.10+ |
| Comes with Ubuntu WSL |
cloudflared |
| See WSL section below |
Claude Code |
|
|
Node.js |
|
|
macOS — Host Setup
The host is the developer who owns the project. You start the session and share the join command.
Step 1 — Install dependencies
brew install cloudflared
pip install letsworkStep 2 — Install Claude Code
npm install -g @anthropic-ai/claude-codeStep 3 — Start the session
Navigate to your project folder and run:
cd /path/to/your/project
letswork startYou will be asked for your display name, then a session box appears:
╔══════════════════════════════════════════════════════════════════════╗
║ 🤝 LetsWork Session Active ║
║ ║
║ Send this command to your collaborator: ║
║ letswork join https://abc123.trycloudflare.com --token a1b2c3d4 ║
║ ║
║ Press Ctrl+C to stop. ║
╚══════════════════════════════════════════════════════════════════════╝Copy the full letswork join ... command and send it to your collaborator.
Two new terminal windows open automatically:
Claude Code — already connected to LetsWork
A chat window to communicate with your collaborator
Step 4 — Approve guest changes
When the guest edits a file, you'll see a notification in Claude Code. Ask Claude:
get_pending_changesThen approve or reject:
approve_change <id>
reject_change <id>Step 5 — Stop the session
Press Ctrl+C in the terminal where you ran letswork start.
macOS — Guest Setup
The guest connects to the host's project. You need the join command from the host.
Step 1 — Install dependencies
brew install cloudflared
pip install letsworkStep 2 — Install Claude Code
npm install -g @anthropic-ai/claude-codeStep 3 — Join the session
Run the command the host sent you:
letswork join https://abc123.trycloudflare.com --token a1b2c3d4You'll be asked for your display name. Then two windows open:
Claude Code — connected to the host's project
A chat window to communicate with the host
Step 4 — Edit files
Ask Claude to read and edit files normally. When you write a file, it goes into an approval queue — the host reviews it before it's written to disk. You'll get a notification when it's approved or rejected.
Windows — Guest Setup (WSL)
LetsWork runs inside WSL (Windows Subsystem for Linux). The guest experience is the same as macOS once WSL is set up.
Step 1 — Enable WSL and install Ubuntu
Open PowerShell as Administrator and run:
wsl --installRestart your computer when prompted. Ubuntu will install automatically.
Open Ubuntu from the Start menu and set up your Linux username and password.
Step 2 — Install dependencies inside Ubuntu
Open Ubuntu and run these one by one:
# Update packages
sudo apt update && sudo apt upgrade -y
# Install Python
sudo apt install python3 python3-pip -y
# Install Node.js and npm
sudo apt install nodejs npm -y
# Install cloudflared
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o cloudflared
chmod +x cloudflared
sudo mv cloudflared /usr/local/bin/
# Install letswork
pip3 install letsworkStep 3 — Install Claude Code inside Ubuntu
npm install -g @anthropic-ai/claude-codeStep 4 — Join the session
Run the command the host sent you, inside Ubuntu:
letswork join https://abc123.trycloudflare.com --token a1b2c3d4You'll be asked for your display name. Claude Code launches directly in the same terminal window.
Note for Windows users: Claude Code runs in the WSL terminal — not as a separate window. Everything else works identically to macOS.
MCP Tools Available
Both host and guest have access to these tools inside Claude Code:
Tool | Who Can Use | Description |
| Both | List files and directories with lock status |
| Both | Read file contents (1MB limit, text files only) |
| Both | Submit a file change (guest changes need host approval) |
| Both | Lock a file for exclusive editing |
| Both | Release your own file lock |
| Both | Show session info, connected users, and active locks |
| Both | Quick summary of what needs attention |
| Both | Verify connection to the host MCP server |
| Guest only | Set your display name for the session |
| Guest only | View your submitted changes awaiting approval |
| Host only | View all changes awaiting approval with diffs |
| Host only | Approve a pending change and write it to disk |
| Host only | Reject a pending change |
| Host only | Force-release a stuck file lock |
Approval Flow
Guest file writes do not go directly to disk — they go through the host's approval queue:
Guest asks Claude to edit a file →
write_filesubmits the changeHost sees:
📝 guest submitted change to server.py (ID: a1b2c3)Host asks Claude:
get_pending_changes— sees a full diffHost approves:
approve_change a1b2c3→ file is written to diskOr rejects:
reject_change a1b2c3→ guest is notified
Security
Random Cloudflare subdomain — URL is unguessable
Cryptographic token — second auth layer on top of the URL
All traffic encrypted via HTTPS
Path traversal prevention — guest cannot access files outside the project root
File locks auto-expire after 30 minutes
No accounts, no signup, no persistent credentials — session ends when host stops
Constraints
Maximum 2 users per session (Host + 1 Guest)
Text files only — binary files not supported
1MB file size limit per read/write operation
Guest has no shell access — file operations only
cloudflaredmust be installed on the host machine (guest does not need it on macOS, but WSL guests do)
CLI Reference
letswork start [--port PORT] [--debug] # Start a session (default port: 8000)
letswork join <URL> --token <TOKEN> # Join a session as guestArchitecture
Host Machine:
[Project Files] ← [MCP Server :8000] ← [Cloudflare Tunnel] ← HTTPS URL
↑
Guest connects here
via stdio proxy + secret tokenThe guest connects through a stdio proxy rather than directly over HTTP — this avoids Cloudflare SSE reliability issues and gives stable MCP connectivity.
License
MIT — see LICENSE
Built with the Model Context Protocol.
This server cannot be deployed
Maintenance
Related MCP Connectors
The team layer for AI coding agents: shared contracts, collision alerts, E2EE sessions.
- AxisOAuthdev.useaxis
Coding agents from Claude Code, Cursor and Codex claim jobs and lock files on one shared board.
Cross-agent artifact workspace with provenance across Claude Code, Codex, Cursor, LangGraph.
- SeturosOAuthcom.seturos
Shared work memory for Claude Code, Codex, Cursor and chat, scoped to each repository.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables two Claude Code sessions to connect over an end-to-end encrypted channel for collaborative AI-assisted development, with MCP tools for messaging, code sharing, and turn-taking.-
- AlicenseNot gradedqualityDmaintenanceCross-session coordination server for Claude Code that manages file claims, build locks, shared knowledge, and provides a real-time dashboard to prevent conflicts across multiple sessions.32 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables teams to share context and messages between Claude Code sessions via a relay, allowing collaborative work on the same project.2 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables coordinating Claude Code and Codex across separate Git worktrees with shared issue ownership, file reservations, messages, and explicit handoffs.770 PyPI3MIT