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

io.github.saicharanrajoju/letswork

LetsWork

Claude Code를 통한 실시간 협업 코딩 — 두 개발자가 하나의 코드베이스를 사용하며, 각자 자신의 Claude 구독을 사용합니다.

한 명의 개발자가 세션을 호스트합니다. 다른 개발자는 어디서든 참여합니다. 두 사람 모두 같은 프로젝트에 연결된 실시간 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 ... 명령어를 복사하여 협업자에게 보내세요.

새 터미널 창 두 개가 자동으로 열립니다:

  • 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

표시 이름을 묻는 메시지가 나타납니다. 그런 다음 두 개의 창이 열립니다:

  • 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를 열고 다음을 하나씩 실행하세요:

# 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

호스트만

diff와 함께 승인 대기 중인 모든 변경 사항 보기

approve_change

호스트만

대기 중인 변경을 승인하고 디스크에 저장

reject_change

호스트만

대기 중인 변경 거부

force_unlock

호스트만

멈춘 파일 잠금 강제 해제


승인 흐름

게스트의 파일 쓰기는 디스크에 직접 저장되지 않습니다 — 호스트의 승인 대기열을 거칩니다:

  1. 게스트가 Claude에게 파일 편집을 요청합니다 → write_file이 변경 사항을 제출합니다

  2. 호스트가 확인합니다: 📝 guest submitted change to server.py (ID: a1b2c3)

  3. 호스트가 Claude에게 요청합니다: get_pending_changes — 전체 diff를 확인합니다

  4. 호스트가 승인합니다: approve_change a1b2c3 → 파일이 디스크에 저장됩니다

  5. 또는 거부합니다: reject_change a1b2c3 → 게스트에게 알림이 전송됩니다


보안

  • 무작위 Cloudflare 하위 도메인 — URL을 추측할 수 없음

  • 암호화 토큰 — URL 위의 두 번째 인증 계층

  • 모든 트래픽은 HTTPS로 암호화됨

  • 경로 탐색 방지 — 게스트는 프로젝트 루트 외부의 파일에 접근할 수 없음

  • 파일 잠금은 30분 후 자동 만료됨

  • 계정 없음, 가입 없음, 영구 자격 증명 없음 — 호스트가 중지하면 세션이 종료됨


제약 사항

  • 세션당 최대 2명의 사용자(호스트 + 게스트 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