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

io.github.saicharanrajoju/letswork

LetsWork

Совместное программирование в реальном времени через Claude Code — два разработчика, одна кодовая база, каждый со своей подпиской Claude.

Один разработчик выступает хостом сессии. Другой подключается откуда угодно. Оба получают окно Claude Code в реальном времени, подключенное к одному и тому же проекту — с блокировкой файлов и системой одобрения для предотвращения конфликтов.


Как это работает

  1. Хост запускает letswork start в своей папке проекта

  2. Безопасный HTTPS-туннель автоматически создается через Cloudflare

  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 — Завершение сессии

Нажмите Ctrl+C в терминале, где вы запускали letswork start.


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 для 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 — Установка Claude Code в Ubuntu

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

Оба

Читает содержимое файла (лимит 1 МБ, только текстовые файлы)

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

  • Весь трафик зашифрован через HTTPS

  • Защита от обхода каталогов — гость не может получить доступ к файлам за пределами корня проекта

  • Блокировки файлов автоматически истекают через 30 минут

  • Никаких аккаунтов, регистрации и постоянных учетных данных — сессия завершается, когда хост останавливает её


Ограничения

  • Максимум 2 пользователя на сессию (хост + 1 гость)

  • Только текстовые файлы — бинарные файлы не поддерживаются

  • Ограничение размера файла 1 МБ на операцию чтения/записи

  • У гостя нет доступа к командной оболочке — только операции с файлами

  • 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

Гость подключается через stdio-прокси, а не напрямую по HTTP — это позволяет избежать проблем с надежностью Cloudflare SSE и обеспечивает стабильное MCP-подключение.


Лицензия

MIT — см. LICENSE


Создано с помощью Model Context Protocol.

Related MCP Connectors

Related MCP Servers