Skip to main content

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

  1. Developer A (Host) runs letswork start in their project folder
  2. A secure HTTPS tunnel is created automatically via Cloudflare
  3. A one-time URL + secret token is generated
  4. Developer A shares both with Developer B (Guest)
  5. Developer B connects: claude mcp add letswork --transport http <url>
  6. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

letswork-2.0.0.tar.gz (31.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

letswork-2.0.0-py3-none-any.whl (28.3 kB view details)

Uploaded Python 3

File details

Details for the file letswork-2.0.0.tar.gz.

File metadata

  • Download URL: letswork-2.0.0.tar.gz
  • Upload date:
  • Size: 31.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for letswork-2.0.0.tar.gz
Algorithm Hash digest
SHA256 a5930fb2371ea25e7d1d959bf705da7832f43cff7d696ed3e1b8159be1984970
MD5 a5a253bfeffe5b9dfcc16f72d0b9621b
BLAKE2b-256 5296aaf044b2de8a81b7c8b7258ac5af259594bd52e3c943df49ebdcbdd8c82f

See more details on using hashes here.

File details

Details for the file letswork-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: letswork-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 28.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for letswork-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6ba640a6e72125233aa82b7ea676a52d0dfaee8cf57b8dedc885620311b675c5
MD5 3ce1a93bdf32b407b6b343cff28c6232
BLAKE2b-256 ff6fd00b8d08c50c80645620fdc6a5fd3396058ccda13f6eadb9a1f11a347c98

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page