Letswork

io.github.saicharanrajojuPublished by GitHub account saicharanrajojuv3.0.0Updated Oct 24, 2026

Real-time collaborative coding via MCP — two developers, one codebase

Overview

AI-generated overview

LetsWork lets two developers share one project through Claude Code, with file locking and host-approved edits over a Cloudflare tunnel.

What you can do
  • List and read project files, with lock status shown
  • Submit file writes, lock and unlock files for exclusive editing
  • Check session status, connected users, active locks and notifications
  • Guest side: set a display name and review your own pending changes
  • Host side: review pending changes with diffs, approve or reject them, force-release stuck locks
When to use it
Use it when two developers want to pair on the same codebase from different machines, each with their own Claude Code setup, and the project owner wants to review every guest write before it lands on disk.
Requirements
Local install on macOS or Windows via WSL: Python 3.10+, the letswork package, Node.js and Claude Code, and cloudflared on the host machine. The host starts a session and shares a one-time join URL plus token with the guest. No accounts or API keys are declared.
Before you install
The host exposes its project folder through a public Cloudflare tunnel; anyone holding the join URL and token can connect as the guest. Guest writes are queued for host approval, but approved changes are written to disk, and the host can force-release locks. Sessions are limited to two users, text files only, 1MB per operation, and the guest has no shell access.

Installation

In SourceWeft

  1. Open Letswork in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

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

  1. Host runs letswork start inside their project folder
  2. A secure HTTPS tunnel is created automatically via Cloudflare
  3. A one-time URL + guest token is generated and printed
  4. Host shares the join command with the guest
  5. Guest runs letswork join <url> --token <token> on their machine
  6. Both developers now have Claude Code connected to the same codebase

Requirements

RequirementmacOSWindows (WSL)
Python 3.10+brew install pythonComes with Ubuntu WSL
cloudflaredbrew install cloudflaredSee WSL section below
Claude Codenpm install -g @anthropic-ai/claude-codenpm install -g @anthropic-ai/claude-code (inside WSL)
Node.jsbrew install nodesudo 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

bash
brew install cloudflaredpip install letswork

Step 2 — Install Claude Code

bash
npm install -g @anthropic-ai/claude-code

Step 3 — Start the session

Navigate to your project folder and run:

bash
cd /path/to/your/projectletswork start

You 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_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

bash
brew install cloudflaredpip install letswork

Step 2 — Install Claude Code

bash
npm install -g @anthropic-ai/claude-code

Step 3 — Join the session

Run the command the host sent you:

bash
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:

powershell
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:

bash
# Update packagessudo apt update && sudo apt upgrade -y
# Install Pythonsudo apt install python3 python3-pip -y
# Install Node.js and npmsudo apt install nodejs npm -y
# Install cloudflaredcurl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o cloudflaredchmod +x cloudflaredsudo mv cloudflared /usr/local/bin/
# Install letsworkpip3 install letswork

Step 3 — Install Claude Code inside Ubuntu

bash
npm install -g @anthropic-ai/claude-code

Step 4 — Join the session

Run the command the host sent you, inside Ubuntu:

bash
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:

ToolWho Can UseDescription
list_filesBothList files and directories with lock status
read_fileBothRead file contents (1MB limit, text files only)
write_fileBothSubmit a file change (guest changes need host approval)
lock_fileBothLock a file for exclusive editing
unlock_fileBothRelease your own file lock
get_statusBothShow session info, connected users, and active locks
get_notificationsBothQuick summary of what needs attention
pingBothVerify connection to the host MCP server
set_display_nameGuest onlySet your display name for the session
my_pending_changesGuest onlyView your submitted changes awaiting approval
get_pending_changesHost onlyView all changes awaiting approval with diffs
approve_changeHost onlyApprove a pending change and write it to disk
reject_changeHost onlyReject a pending change
force_unlockHost onlyForce-release a stuck file lock

Approval Flow

Guest file writes do not go directly to disk — they go through the host's approval queue:

  1. Guest asks Claude to edit a file → write_file submits the change
  2. Host sees: 📝 guest submitted change to server.py (ID: a1b2c3)
  3. Host asks Claude: get_pending_changes — sees a full diff
  4. Host approves: approve_change a1b2c3 → file is written to disk
  5. 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
  • cloudflared must be installed on the host machine (guest does not need it on macOS, but WSL guests do)

CLI Reference

bash
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.

Source: README.md at commit 2361029

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v3.0.0LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts