About io.github.saicharanrajoju/letswork
io.github.saicharanrajoju/letswork is an MCP server published by saicharanrajoju in the Developer Tools category: real-time collaborative coding via MCP — two developers, one codebase.
Recent commit activity is the strongest signal that reported issues will get attention.
Install
uvx letsworkpip install letsworkThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Tools (14)
approve_changeHost only
Parameters not published.
force_unlockHost only
Parameters not published.
get_notificationsBoth
Parameters not published.
get_pending_changesHost only
Parameters not published.
get_statusBoth
Parameters not published.
list_filesBoth
Parameters not published.
lock_fileBoth
Parameters not published.
my_pending_changesGuest only
Parameters not published.
pingBoth
Parameters not published.
read_fileBoth
Parameters not published.
Show all 14 tools
reject_changeHost only
Parameters not published.
set_display_nameGuest only
Parameters not published.
unlock_fileBoth
Parameters not published.
write_fileBoth
Parameters not published.
Ask AI
Ask AI about io.github.saicharanrajoju/letswork
Powered by Claude · Grounded in docs
Security checks
- ✓README presentThe repository ships documentation.
5 checks have not been run yet.
README
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 folder - A 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 machine - Both developers now have Claude Code connected to the same codebase
Requirements
| Requirement | macOS | Windows (WSL) |
|---|---|---|
| Python 3.10+ | brew install python |
Comes with Ubuntu WSL |
| cloudflared | brew install cloudflared |
See WSL section below |
| Claude Code | npm install -g @anthropic-ai/claude-code |
npm install -g @anthropic-ai/claude-code (inside WSL) |
| Node.js | brew install node |
sudo apt install nodejs npm (inside WSL) |
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 letswork
Step 2 — Install Claude Code
npm install -g @anthropic-ai/claude-code
Step 3 — Start the session
Navigate to your project folder and run:
cd /path/to/your/project
letswork start
You'll 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_changes
Then 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 letswork
Step 2 — Install Claude Code
npm install -g @anthropic-ai/claude-code
Step 3 — Join the session
Run the command the host sent you:
letswork join https://abc123.trycloudflare.com --token a1b2c3d4
You'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 --install
Restart 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 letswork
Step 3 — Install Claude Code inside Ubuntu
npm install -g @anthropic-ai/claude-code
Step 4 — Join the session
Run the command the host sent you, inside Ubuntu:
letswork join https://abc123.trycloudflare.com --token a1b2c3d4
You'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 |
|---|---|---|
list_files |
Both | List files and directories with lock status |
read_file |
Both | Read file contents (1MB limit, text files only) |
write_file |
Both | Submit a file change (guest changes need host approval) |
lock_file |
Both | Lock a file for exclusive editing |
unlock_file |
Both | Release your own file lock |
get_status |
Both | Show session info, connected users, and active locks |
get_notifications |
Both | Quick summary of what needs attention |
ping |
Both | Verify connection to the host MCP server |
set_display_name |
Guest only | Set your display name for the session |
my_pending_changes |
Guest only | View your submitted changes awaiting approval |
get_pending_changes |
Host only | View all changes awaiting approval with diffs |
approve_change |
Host only | Approve a pending change and write it to disk |
reject_change |
Host only | Reject a pending change |
force_unlock |
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 change - Host sees:
📝 guest submitted change to server.py (ID: a1b2c3) - Host asks Claude:
get_pending_changes— sees a full diff - Host approves:
approve_change a1b2c3→ file is written to disk - Or 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 guest
Architecture
Host Machine:
[Project Files] ← [MCP Server :8000] ← [Cloudflare Tunnel] ← HTTPS URL
↑
Guest connects here
via stdio proxy + secret token
The 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.
README copy captured when this server was indexed; it may lag the repository. The original is authoritative.