Skip to main content
Glama
io.github.saicharanrajoju/letswork

io.github.saicharanrajoju/letswork

LetsWork

Kollaboratives Programmieren in Echtzeit über Claude Code — zwei Entwickler, eine Codebasis, jeder mit seinem eigenen Claude-Abonnement.

Ein Entwickler hostet die Sitzung. Der andere tritt von überall bei. Beide erhalten ein Claude-Code-Fenster, das live mit demselben Projekt verbunden ist — mit Dateisperren und einem Genehmigungssystem zur Vermeidung von Konflikten.


So funktioniert es

  1. Der Host führt letswork start in seinem Projektordner aus

  2. Über Cloudflare wird automatisch ein sicherer HTTPS-Tunnel erstellt

  3. Eine Einmal-URL und ein Gast-Token werden generiert und ausgegeben

  4. Der Host teilt den Join-Befehl mit dem Gast

  5. Der Gast führt letswork join <url> --token <token> auf seinem Rechner aus

  6. Beide Entwickler haben jetzt Claude Code mit derselben Codebasis verbunden


Related MCP server: claude-switchboard

Voraussetzungen

Voraussetzung

macOS

Windows (WSL)

Python 3.10+

brew install python

In Ubuntu WSL enthalten

cloudflared

brew install cloudflared

Siehe WSL-Abschnitt unten

Claude Code

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

npm install -g @anthropic-ai/claude-code (innerhalb von WSL)

Node.js

brew install node

sudo apt install nodejs npm (innerhalb von WSL)


macOS — Host-Einrichtung

Der Host ist der Entwickler, dem das Projekt gehört. Du startest die Sitzung und teilst den Join-Befehl.

Schritt 1 — Abhängigkeiten installieren

brew install cloudflared
pip install letswork

Schritt 2 — Claude Code installieren

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

Schritt 3 — Die Sitzung starten

Navigiere zu deinem Projektordner und führe Folgendes aus:

cd /path/to/your/project
letswork start

Du wirst nach deinem Anzeigenamen gefragt, dann erscheint ein Sitzungsfenster:

╔══════════════════════════════════════════════════════════════════════╗
║  🤝 LetsWork Session Active                                          ║
║                                                                      ║
║  Send this command to your collaborator:                             ║
║  letswork join https://abc123.trycloudflare.com --token a1b2c3d4    ║
║                                                                      ║
║  Press Ctrl+C to stop.                                               ║
╚══════════════════════════════════════════════════════════════════════╝

Kopiere den vollständigen letswork join ...-Befehl und sende ihn an deinen Kollegen.

Zwei neue Terminalfenster öffnen sich automatisch:

  • Claude Code — bereits mit LetsWork verbunden

  • Ein Chatfenster zur Kommunikation mit deinem Kollegen

Schritt 4 — Gaständerungen genehmigen

Wenn der Gast eine Datei bearbeitet, siehst du eine Benachrichtigung in Claude Code. Frage Claude:

get_pending_changes

Genehmige oder lehne dann ab:

approve_change <id>
reject_change <id>

Schritt 5 — Die Sitzung beenden

Drücke Ctrl+C in dem Terminal, in dem du letswork start ausgeführt hast.


macOS — Gast-Einrichtung

Der Gast verbindet sich mit dem Projekt des Hosts. Du benötigst den Join-Befehl vom Host.

Schritt1 — Abhängigkeiten installieren

brew install cloudflared
pip install letswork

Schritt2 — Claude Code installieren

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

Schritt3 — Der Sitzung beitreten

Führe den Befehl aus, den dir der Host gesendet hat:

letswork join https://abc123.trycloudflare.com --token a1b2c3d4

Du wirst nach deinem Anzeigenamen gefragt. Dann öffnen sich zwei Fenster:

  • Claude Code — mit dem Projekt des Hosts verbunden

  • Ein Chatfenster zur Kommunikation mit dem Host

Schritt4 — Dateien bearbeiten

Bite Claude, Dateien wie gewohnt zu lesen und zu bearbeiten. Wenn du eine Datei schreibst, landet sie in einer Genehmigungs warteschlange — der Host prüft sie, bevor sie auf die Festplatte geschrieben wird. Du erhältst eine Benachrichtigung, wenn sie genehmigt oder abgelehnt wird.


Windows — Gast-Einrichtung (WSL)

LetsWork läuft innerhalb von WSL (Windows Subsystem for Linux). Die Gast-Erfahrung ist dieselbe wie unter macOS, sobald WSL eingerichtet ist.

Schritt 1 — WSL aktivieren und Ubuntu installieren

Öffne PowerShell als Administrator und führe Folgendes aus:

wsl --install

Starte deinen Computer neu, wenn du dazu aufgefordert wirst. Ubuntu wird automatisch installiert.

Öffne Ubuntu über das Startmenü und richte deinen Linux-Benutzernamen und dein Passwort ein.

Schritt2 — Abhängigkeiten in Ubuntu installieren

Öffne Ubuntu und führe diese nacheinander aus:

# 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

Schritt3 — Claude Code in Ubuntu installieren

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

Schritt4 — Der Sitzung beitreten

Führe den Befehl, den dir der Host gesendet hat, in Ubuntu aus:

letswork join https://abc123.trycloudflare.com --token a1b2c3d4

Du wirst nach deinem Anzeigenamen gefragt. Claude Code startet direkt im selben Terminalfenster.

Hinweis für Windos-Benutzer: Claude Code läuft im WSL-Terminal — nicht in einem separaten Fenster. Alles andere funktioniert genauso wie unter macOS.


Verfügbare MCP-Tools

Sowohl Host als auch Gast haben in Claude Code Zugriff auf diese Tools:

Tool

Wer kann nutzen

Beschreibung

list_files

Beide

Listet Dateien und Verzeichnisse mit Sperrstatus auf

read_file

Beide

Liest Dateiinhalte (1-MB-Limit, nur Textdateien)

write_file

Beide

Reicht eine Dateiänderung ein (Gaständerungen benötigen die Freigabe des Hosts)

lock_file

Beide

Sperrt eine Datei zur exklusiven Bearbeitung

unlock_file

Beide

Gibt die eigene Dateisperre frei

get_status

Beide

Zeigt Sitzungsinformationen, verbundene Benutzer und aktive Sperren

get_notifications

Beide

Kurzübersicht, was Aufmerksamkeit erfordert

ping

Beide

Überprüft die Verbindung zum MCP-Server des Hosts

set_display_name

Nur Gast

Legt deinen Anzeigenamen für die Sitzung fest

my_pending_changes

Nur Gast

Zeigt deine eingereichten, auf Freigabe wartenden Änderungen

get_pending_changes

Nur Host

Zeigt alle auf Freigabe wartenden Änderungen mit Diffs

approve_change

Nur Host

Genehmigt eine ausstehende Änderung und schreibt sie auf die Festplatte

reject_change

Nur Host

Lehnt eine ausstehende Änderung ab

force_unlock

Nur Host

Erzwingt das Aufheben einer hängenden Dateisperre


Genehmigungsablauf

Dateischreibvorgänge des Gasts gehen nicht direkt auf die Festplatte — sie durchlaufen die Genehmigungswarteschlange des Hosts:

  1. Der Gast bittet Claude, eine Datei zu bearbeiten → write_file reicht die Änderung ein

  2. Der Host sieht: 📝 guest submitted change to server.py (ID: a1b2c3)

  3. Der Host fragt Claude: get_pending_changes — sieht einen vollständigen Diff

  4. Der Host genehmigt: approve_change a1b2c3 → die Datei wird auf die Festplatte geschrieben

  5. Oder er lehnt ab: reject_change a1b2c3 → der Gast wird benachrichtigt


Sicherheit

  • Zufällige Cloudflare-Subdomain — URL ist nicht erratbar

  • Kryptografisches Token — zweite Authentifizierungsebene zusätzlich zur URL

  • Der gesamte Datenverkehr ist per HTTPS verschlüsselt

  • Schutz vor Path-Traversal — der Gast kann nicht auf Dateien außerhalb des Projektverzeichnisses zugreifen

  • Dateisperren laufen nach 30 Minuten automatisch ab

  • Keine Konten, keine Anmeldung, keine dauerhaften Zugangsdaten — die Sitzung endet, wenn der Host sie beendet


Einschränkungen

  • Maximal 2 Benutzer pro Sitzung (Host + 1 Gast)

  • Nur Textdateien — Binärdateien werden nicht unterstützt

  • Dateigrößenlimit von 1 MB pro Lese-/Schreibvorgang

  • Der Gast hat keinen Shell-Zugriff — nur Dateioperationen

  • cloudflared muss auf der Host-Maschine installiert sein (der Gast benötigt es unter macOS nicht, WSL-Gäste jedoch schon)


CLI-Referenz

letswork start [--port PORT] [--debug]   # Start a session (default port: 8000)
letswork join <URL> --token <TOKEN>      # Join a session as guest

Architektur

Host Machine:
[Project Files] ← [MCP Server :8000] ← [Cloudflare Tunnel] ← HTTPS URL
                                                                    ↑
                                             Guest connects here
                                             via stdio proxy + secret token

Der Gast verbindet sich über einen stdio-Proxy und nicht direkt über HTTP — das vermeidet Zuverlässigkeitsprobleme mit Cloudflare SSE und sorgt für eine stabile MCP-Verbindung.


Lizenz

MIT — siehe LICENSE


Erstellt mit dem Model Context Protocol.

Related MCP Connectors

Related MCP Servers