CLI reference
Каждая подкоманда и флаг бинарей purplemux и pmux.
purplemux поставляется с двумя способами использования бинаря: как стартер сервера (purplemux / purplemux start) и как обёртка над HTTP API (purplemux <subcommand>), которая разговаривает с работающим сервером. Короткий алиас pmux идентичен.
Две роли, один бинарь
| Форма | Что делает |
|---|---|
purplemux |
Запускает сервер. То же, что purplemux start. |
purplemux <subcommand> |
Разговаривает с CLI HTTP API работающего сервера. |
pmux ... |
Алиас для purplemux .... |
Диспетчер в bin/purplemux.js отделяет первый аргумент: известные подкоманды идут в bin/cli.js, всё остальное (или ничего) запускает сервер.
Запуск сервера
purplemux # по умолчанию
purplemux start # то же, явно
PORT=9000 purplemux # кастомный порт
HOST=all purplemux # привязка везде
Полный набор env — в Порты и переменные окружения.
Сервер печатает свои привязанные URL, режим и статус аутентификации:
⚡ purplemux v0.x.x
➜ Available on:
http://127.0.0.1:8022
http://192.168.1.42:8022
➜ Mode: production
➜ Auth: configured
Если 8022 уже занят, сервер пишет предупреждение и привязывается к случайному свободному порту.
Подкоманды
Все подкоманды требуют работающего сервера. Они читают порт из ~/.purplemux/port и токен авторизации из ~/.purplemux/cli-token, оба пишутся автоматически на старте сервера.
| Команда | Назначение |
|---|---|
purplemux workspaces |
Список рабочих пространств |
purplemux tab list [-w WS] |
Список вкладок (опционально в рамках рабочего пространства) |
purplemux tab create -w WS [-n NAME] [-t TYPE] |
Создать новую вкладку |
purplemux tab send -w WS TAB_ID CONTENT... |
Отправить ввод во вкладку |
purplemux tab status -w WS TAB_ID |
Посмотреть статус вкладки |
purplemux tab result -w WS TAB_ID |
Снять текущее содержимое панели вкладки |
purplemux tab close -w WS TAB_ID |
Закрыть вкладку |
purplemux tab browser ... |
Управлять вкладкой web-browser (только в Electron) |
purplemux api-guide |
Распечатать полный HTTP API |
purplemux help |
Показать использование |
Вывод — JSON, если не указано иное. --workspace и -w взаимозаменяемы.
Типы панелей tab create
Флаг -t / --type выбирает тип панели. Допустимые значения:
| Значение | Панель |
|---|---|
terminal |
Обычный шелл |
claude-code |
Шелл с уже запущенным claude |
web-browser |
Встроенный браузер (только в Electron) |
diff |
Панель Git diff |
Без -t получаете обычный терминал.
Подкоманды tab browser
Работают только когда тип панели вкладки — web-browser, и только в macOS Electron-приложении: иначе мост возвращает 503.
| Подкоманда | Что возвращает |
|---|---|
purplemux tab browser url -w WS TAB_ID |
Текущий URL + заголовок страницы |
purplemux tab browser screenshot -w WS TAB_ID [-o FILE] [--full] |
PNG. С -o сохраняет на диск; без — возвращает base64. --full снимает всю страницу. |
purplemux tab browser console -w WS TAB_ID [--since MS] [--level LEVEL] |
Недавние записи консоли (кольцевой буфер, 500 записей) |
purplemux tab browser network -w WS TAB_ID [--since MS] [--method M] [--url SUBSTR] [--status CODE] [--request ID] |
Недавние сетевые записи; --request ID достаёт одно тело |
purplemux tab browser eval -w WS TAB_ID EXPR |
Вычислить JS-выражение и сериализовать результат |
Примеры
# Найти своё рабочее пространство
purplemux workspaces
# Создать вкладку Claude в рабочем пространстве ws-MMKl07
purplemux tab create -w ws-MMKl07 -t claude-code -n "refactor auth"
# Отправить в неё промпт (TAB_ID берётся из `tab list`)
purplemux tab send -w ws-MMKl07 tb-abc "Refactor src/lib/auth.ts to remove the cookie path"
# Смотреть состояние
purplemux tab status -w ws-MMKl07 tb-abc
# Снимок панели
purplemux tab result -w ws-MMKl07 tb-abc
# Скриншот вкладки веб-браузера полной страницей
purplemux tab browser screenshot -w ws-MMKl07 tb-xyz -o page.png --full
Аутентификация
Каждая подкоманда отправляет x-pmux-token: $(cat ~/.purplemux/cli-token) и проверяется на сервере через timingSafeEqual. Файл ~/.purplemux/cli-token создаётся при первом старте сервера через randomBytes(32) и сохраняется с режимом 0600.
Если нужно вызвать CLI из другого шелла или скрипта, который не видит ~/.purplemux/, задайте env-переменные:
| Переменная | По умолчанию | Эффект |
|---|---|---|
PMUX_PORT |
содержимое ~/.purplemux/port |
Порт, к которому обращается CLI |
PMUX_TOKEN |
содержимое ~/.purplemux/cli-token |
Bearer-токен, отправляемый как x-pmux-token |
PMUX_PORT=8022 PMUX_TOKEN=$(cat ~/.purplemux/cli-token) purplemux workspaces
update-notifier
purplemux проверяет npm на новую версию при каждом запуске (через update-notifier) и печатает баннер, если есть. Отключается через NO_UPDATE_NOTIFIER=1 или любым из стандартных opt-out'ов update-notifier.
Полный HTTP API
purplemux api-guide печатает полный HTTP API для каждого эндпоинта /api/cli/*, включая тела запросов и формы ответов — пригодится, когда хочется управлять purplemux напрямую через curl или другой рантайм.
Что дальше
- Порты и переменные окружения —
PMUX_PORT/PMUX_TOKENв более широком контексте env. - Архитектура — что именно слушает CLI.
- Поиск проблем — когда CLI говорит «is the server running?».