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

io.github.saicharanrajoju/letswork

LetsWork

Claude Codeによるリアルタイム共同コーディング — 2人の開発者が、それぞれ自分のClaudeサブスクリプションを使って、1つのコードベースを共有します。

1人の開発者がセッションをホストします。もう1人はどこからでも参加できます。両者ともに、同じプロジェクトに接続されたライブなClaude Codeウィンドウを利用できます — ファイルロックと承認システムにより、競合を防ぎます。


仕組み

  1. ホストがプロジェクトフォルダ内でletswork startを実行します

  2. Cloudflare経由で安全なHTTPSトンネルが自動的に作成されます

  3. ワンタイムURLとゲストトークンが生成され、表示されます

  4. ホストが参加コマンドをゲストと共有します

  5. ゲストが自分のマシンでletswork join <url> --token <token>を実行します

  6. 両開発者が同じコードベースに接続されたClaude Codeを利用できるようになります


Related MCP server: claude-switchboard

必要要件

要件

macOS

Windows (WSL)

Python 3.10+

brew install python

Ubuntu WSLに同梱

cloudflared

brew install cloudflared

下記のWSLセクションを参照

Claude Code

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

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

Node.js

brew install node

sudo apt install nodejs npm (WSL内)


macOS — ホストのセットアップ

ホストとは、プロジェクトを所有する開発者です。セッションを開始し、参加コマンドを共有します。

ステップ1 — 依存関係をインストールする

brew install cloudflared
pip install letswork

ステップ2 — Claude Codeをインストールする

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

ステップ3 — セッションを開始する

プロジェクトフォルダに移動して、次を実行します:

cd /path/to/your/project
letswork start

表示名を求められ、その後セッションボックスが表示されます:

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

完全なletswork join ...コマンドをコピーして、コラボレーターに送信してください。

2つの新しいターミナルウィンドウが自動的に開きます:

  • Claude Code — すでにLetsWorkに接続済み

  • コラボレーターと通信するためのチャットウィンドウ

ステップ4 — ゲストの変更を承認する

ゲストがファイルを編集すると、Claude Codeに通知が表示されます。Claudeに次のように依頼します:

get_pending_changes

その後、承認または拒否します:

approve_change <id>
reject_change <id>

ステップ5 — セッションを停止する

letswork startを実行したターミナルでCtrl+Cを押します。


macOS — ゲストのセットアップ

ゲストはホストのプロジェクトに接続します。ホストから参加コマンドを受け取る必要があります。

ステップ1 — 依存関係をインストールする

brew install cloudflared
pip install letswork

ステップ2 — Claude Codeをインストールする

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

ステップ3 — セッションに参加する

ホストから送られたコマンドを実行します:

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

表示名を求められます。その後、2つのウィンドウが開きます:

  • Claude Code — ホストのプロジェクトに接続済み

  • ホストと通信するためのチャットウィンドウ

ステップ4 — ファイルを編集する

通常どおりClaudeにファイルの読み取りと編集を依頼します。ファイルを書き込むと、承認キューに入ります — ディスクに書き込まれる前にホストがレビューします。承認または拒否されたときは通知が届きます。


Windows — ゲストのセットアップ (WSL)

LetsWorkはWSL (Windows Subsystem for Linux) 内で動作します。WSLをセットアップすれば、ゲストの操作感はmacOSと同じです。

ステップ1 — WSLを有効にしてUbuntuをインストールする

管理者としてPowerShellを開き、次を実行します:

wsl --install

プロンプトが表示されたらコンピュータを再起動します。Ubuntuが自動的にインストールされます。

スタートメニューからUbuntuを開き、Linuxのユーザー名とパスワードを設定します。

ステップ2 — Ubuntu内で依存関係をインストールする

Ubuntuを開き、次を1つずつ実行します:

# 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

ステップ3 — Ubuntu内でClaude Codeをインストールする

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

ステップ4 — セッションに参加する

Ubuntu内で、ホストから送られたコマンドを実行します:

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

表示名を求められます。Claude Codeは同じターミナルウィンドウ内で直接起動します。

Windowsユーザーへの注意: Claude CodeはWSLターミナル内で実行されます — 別ウィンドウではありません。その他の操作はすべてmacOSとまったく同じです。


利用可能なMCPツール

ホストとゲストの両方が、Claude Code内でこれらのツールを利用できます:

ツール

使用できるユーザー

説明

list_files

両方

ロック状態を含めてファイルとディレクトリを一覧表示する

read_file

両方

ファイルの内容を読み取る (1MB制限、テキストファイルのみ)

write_file

両方

ファイル変更を送信する (ゲストの変更はホストの承認が必要)

lock_file

両方

排他編集のためにファイルをロックする

unlock_file

両方

自分が取得したファイルロックを解放する

get_status

両方

セッション情報、接続ユーザー、アクティブなロックを表示する

get_notifications

両方

注意が必要な項目のクイックサマリーを表示する

ping

両方

ホストMCPサーバーへの接続を確認する

set_display_name

ゲストのみ

セッションの表示名を設定する

my_pending_changes

ゲストのみ

承認待ちの送信済み変更を表示する

get_pending_changes

ホストのみ

差分付きで承認待ちの全変更を表示する

approve_change

ホストのみ

保留中の変更を承認してディスクに書き込む

reject_change

ホストのみ

保留中の変更を拒否する

force_unlock

ホストのみ

スタックしたファイルロックを強制解放する


承認フロー

ゲストのファイル書き込みは直接ディスクには行われません — ホストの承認キューを経由します:

  1. ゲストがClaudeにファイルの編集を依頼する → write_fileが変更を送信します

  2. ホストに表示される: 📝 guest submitted change to server.py (ID: a1b2c3)

  3. ホストがClaudeに依頼: get_pending_changes — 完全な差分が表示されます

  4. ホストが承認: approve_change a1b2c3 → ファイルがディスクに書き込まれます

  5. または拒否: reject_change a1b2c3 → ゲストに通知されます


セキュリティ

  • ランダムなCloudflareサブドメイン — URLは推測不可能

  • 暗号化トークン — URLに加えて第2の認証レイヤー

  • すべてのトラフィックはHTTPSで暗号化

  • パストラバーサル防止 — ゲストはプロジェクトルート外のファイルにアクセスできません

  • ファイルロックは30分後に自動的に期限切れ

  • アカウント不要、サインアップ不要、永続的な認証情報なし — ホストが停止するとセッションは終了


制約

  • セッションあたり最大2ユーザー (ホスト + ゲスト1名)

  • テキストファイルのみ — バイナリファイルは非対応

  • 読み取り/書き込み1回あたりのファイルサイズ制限は1MB

  • ゲストにシェルアクセスはありません — ファイル操作のみ

  • cloudflaredはホストマシンにインストールされている必要があります (macOSのゲストには不要ですが、WSLゲストには必要です)


CLIリファレンス

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

アーキテクチャ

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

ゲストはHTTPを直接経由せず、stdioプロキシを通じて接続します — これによりCloudflare SSEの信頼性の問題を回避し、安定したMCP接続を実現します。


ライセンス

MIT — LICENSEを参照


Model Context Protocolで構築されています。

Related MCP Connectors

Related MCP Servers