Real-time collaborative coding via MCP — two developers, one codebase
Project description
LetsWork
Google Docs for AI-assisted coding — real-time collaboration on a local codebase using two independent Claude subscriptions.
What is LetsWork?
LetsWork is an MCP (Model Context Protocol) server that lets two developers work on the same local codebase simultaneously, each using their own Claude. One developer hosts, the other connects — with file-level locking to prevent conflicts.
How It Works
- Developer A (Host) runs
letswork startin their project folder - A secure HTTPS tunnel is created automatically via Cloudflare
- A one-time URL + secret token is generated
- Developer A shares both with Developer B (Guest)
- Developer B connects:
claude mcp add letswork --transport http <url> - Both can now read, write, and list files — with lock protection
Quick Start
Install
pip install letswork
Requirements
- Python >= 3.10
- cloudflared installed and available in PATH
- Git (recommended for conflict safety)
Host (Developer A)
cd /path/to/your/project
letswork start
You'll see: ╔══════════════════════════════════════════════════╗ ║ LetsWork Session Active ║ ║ ║ ║ URL: https://abc123.trycloudflare.com ║ ║ Token: a1b2c3d4e5f6... ║ ║ ║ ║ Share both with your collaborator. ║ ║ Press Ctrl+C to end session. ║ ╚══════════════════════════════════════════════════╝
Share the URL and token with your collaborator via Slack, Discord, or text.
Guest (Developer B)
claude mcp add letswork --transport http <URL_FROM_HOST>
Use the token when prompted. You now have full access to the shared codebase through your own Claude.
MCP Tools Available
| Tool | Description |
|---|---|
list_files |
List files and directories with lock status |
read_file |
Read file contents (1MB limit) |
write_file |
Write to a file (requires lock) |
lock_file |
Lock a file for exclusive editing |
unlock_file |
Release a file lock |
get_status |
Show session info and active locks |
send_message |
Send a chat message to the other developer |
get_events |
Get activity events since a given index |
get_pending_changes |
View changes awaiting host approval |
approve_change |
Approve a pending change (host only) |
reject_change |
Reject a pending change (host only) |
Security
- Unguessable tunnel URL (random Cloudflare subdomain)
- Cryptographic secret token (second auth layer)
- All traffic encrypted via HTTPS
- Path traversal prevention (no access outside project root)
- No accounts, no signup, no persistent credentials
CLI Commands
| Command | Description |
|---|---|
letswork start [--port PORT] |
Start session (default port: 8000) |
letswork stop |
Stop instructions (use Ctrl+C in v1) |
letswork status |
Status instructions (use get_status tool in v1) |
Architecture
Developer A's Machine: [Local Codebase] ← [MCP Server] ← [Cloudflare Tunnel] ← HTTPS URL ↑ Developer B connects here with secret token
Constraints (v1)
- Maximum 2 users per session (Host + Guest)
- Text files only (no binary support)
- 1MB file size limit per operation
- File operations only (no shell access for Guest)
License
MIT
Built with the Model Context Protocol.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file letswork-0.1.3.tar.gz.
File metadata
- Download URL: letswork-0.1.3.tar.gz
- Upload date:
- Size: 28.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
469203e176301206a53fb25e6cb75cccd4688ac71c1861e461e581354ba8e1ee
|
|
| MD5 |
a3a6a712273eb8c0b8ef62b3ee27bbb4
|
|
| BLAKE2b-256 |
4177aed702d2987670884995f5971be58b73b5ad8fced5e39edce5b89e03d739
|
File details
Details for the file letswork-0.1.3-py3-none-any.whl.
File metadata
- Download URL: letswork-0.1.3-py3-none-any.whl
- Upload date:
- Size: 23.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
02d3f3496df51bc65a1b4dfb2fb45a02dbf430387c6d3608e505a6f300a38a0e
|
|
| MD5 |
4f6e42452bcb88e71a78b46e56241d86
|
|
| BLAKE2b-256 |
1146f67c6fb27c6e131e1ef5fa48d35e6d068575527c054cd389045384c3afc8
|