New ensure_pty message: creates PTY if not running, or resizes and sends replay buffer if already active. This allows the frontend to request PTY creation with actual terminal dimensions after xterm.js FitAddon calculates the correct cols/rows for the container. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Claude CLI Proxy
Локальное приложение, которое позволяет управлять Claude Code CLI через веб-браузер. Терминал Claude Code отображается прямо в браузере с помощью xterm.js — полноценный терминал с цветами, автокомплитом и интерактивным UI.
Работает в связке с simple-chat — веб-приложением для чатов с AI.
Как это работает
Браузер (xterm.js) ←──WebSocket──→ simple-chat (backend) ←──WebSocket──→ claude-cli-proxy (local)
│
node-pty
│
Claude Code CLI
- claude-cli-proxy запускается на вашем компьютере рядом с Claude Code CLI
- Прокси подключается к бэкенду simple-chat через WebSocket
- При создании чата в веб-интерфейсе, прокси запускает Claude CLI в псевдо-терминале (PTY)
- Ввод/вывод терминала транслируется через WebSocket в браузер
- Браузер отображает полноценный терминал через xterm.js
Требования
- Node.js 18+ (рекомендуется 20+)
- Claude Code CLI установлен и доступен в PATH (
claudeкоманда) - Работающий инстанс simple-chat (бэкенд + фронтенд)
Установка
1. Настройте simple-chat
Прокси работает только вместе с simple-chat. Убедитесь что simple-chat бэкенд запущен.
2. Создайте устройство в simple-chat
Откройте simple-chat в браузере, перейдите в Настройки → Устройство и создайте новое устройство. Скопируйте токен — он понадобится для подключения прокси.
3. Установите зависимости
git clone https://git.vigdorov.ru/vigdorov/claude-cli-proxy.git
cd claude-cli-proxy
npm install
4. Создайте файл .env
cp .env.example .env
Отредактируйте .env:
# Токен устройства из настроек simple-chat
PROXY_TOKEN=ваш_токен_из_шага_2
# URL бэкенда simple-chat
# Для локальной разработки:
SERVER_URL=ws://localhost:3000/ws/agent-proxy
# Для продакшена:
# SERVER_URL=wss://ai-chat.vigdorov.ru/ws/agent-proxy
5. Запустите
npm start
В консоли должно появиться:
[proxy] Starting claude-cli-proxy (xterm mode)...
[proxy] Running. Press Ctrl+C to stop.
[WS] Connected to server
[proxy] Connected to server, waiting for sync...
Использование
- Откройте simple-chat в браузере
- В сайдбаре нажмите Claude Agent
- Нажмите + чтобы создать новый чат
- Выберите рабочую директорию (проект)
- Терминал Claude Code откроется прямо в браузере
Мобильные устройства
На мобиле и планшете внизу экрана отображаются кнопки управления:
- Горячие клавиши: Esc, Tab, ↑, ↓, y, n, Enter, Ctrl+C, Ctrl+O, ⇧Tab
- Быстрые команды: /compact, /clear, /model, /help
На десктопе кнопки скрыты — для показа нажмите иконку клавиатуры в правом нижнем углу.
Конфигурация
| Переменная | Описание | По умолчанию |
|---|---|---|
PROXY_TOKEN |
Токен устройства из настроек simple-chat | — (обязательно) |
SERVER_URL |
WebSocket URL бэкенда | wss://ai-chat.vigdorov.ru/ws/agent-proxy |
Файл .env можно также разместить в ~/.claude-proxy/.env — он будет загружен первым.
Безопасность
- Прокси подключается к бэкенду исходящим соединением (не открывает порты)
- Аутентификация по токену устройства
- Терминальные данные передаются через бинарные WebSocket-фреймы
- При использовании через интернет рекомендуется WSS (TLS)
Технологии
- Node.js + TypeScript — runtime
- node-pty — псевдо-терминал для запуска Claude CLI
- ws — WebSocket клиент
- xterm.js — терминал в браузере (на стороне simple-chat)