
# Справочник CLI

## Базовое использование

Просто запустите команду — аргументы не нужны:

```bash
npx termbridge
```

Будет запущено все необходимое: локальный сервер, сеанс tmux и туннель Cloudflare по умолчанию.

Запуск `termbridge` без подкоманды равнозначен запуску `termbridge start`.

Можно также явно запустить `termbridge start` со всеми флагами:

```bash
termbridge start --port 8080 --proxy 5173 --session dev --kill-on-exit --no-qr --tunnel cloudflare
```

## Флаги

| Флаг | Назначение | По умолчанию |
|------|--------------|---------|
| `--port <port>` | Использовать указанный порт вместо случайного | Случайный |
| `--proxy <port>` | Проксировать локальный сервер разработки (включает представления Terminal/Preview) | - |
| `--session <name>` | Задать имя сеанса tmux | Создается автоматически |
| `--kill-on-exit` | Удалять сеансы tmux при завершении Termbridge | Выкл. |
| `--no-qr` | Не выводить код QR (удобно для скриптов) | Выкл. |
| `--no-tunnel` | Отключить туннель (требуется `--public-url`) | Выкл. |
| `--public-url <url>` | Публичный URL при отключенном туннеле | - |
| `--tunnel <provider>` | Провайдер туннеля (`cloudflare` или `none`) | cloudflare |
| `--tunnel-token <token>` | Использовать токен именованного туннеля Cloudflare (требуется `--port`) | - |
| `--tunnel-url <url>` | Публичный URL для именованного туннеля (обязательно вместе с `--tunnel-token`) | - |
| `--backend <backend>` | Серверная часть терминала (`tmux` или `sandbox-daytona`) | tmux |
| `--sandbox-repo <url>` | URL репозитория для клонирования в песочницу Daytona | - |
| `--sandbox-branch <branch>` | Ветка для checkout в песочнице | - |
| `--sandbox-path <path>` | Путь репозитория в песочнице | Выводится из имени репозитория |
| `--sandbox-name <name>` | Имя песочницы | Случайный `termbridge-<hex>` |
| `--sandbox-preview-port <port>` | Порт предпросмотра в песочнице | - |
| `--sandbox-public` | Создать публичную песочницу | Выкл. (включено в прямом режиме) |
| `--sandbox-direct` | Запустить сервер внутри песочницы Daytona (без туннеля) | Выкл. |
| `--dev-proxy-url <url>` | Проксировать трафик предпросмотра на этот URL вместо `localhost:<proxy port>` (используется скриптами разработки) | - |
| `-h`, `--help` | Вывести справку | - |

При любом другом параметре возникает ошибка `unknown option: <flag>`. Флага `--version` нет.

Флаг имеет приоритет над соответствующей переменной окружения, за одним исключением: сейчас `TERMBRIDGE_TUNNEL` переопределяет `--tunnel` и `--no-tunnel` ([#5](https://github.com/inline0/termbridge/issues/5)).

> **Примечание**
> Встроенный вывод `termbridge --help` по-прежнему перечисляет флаги `--daytona-*` и `--backend tmux | daytona`. Эти имена отклоняются; используйте флаги `--sandbox-*` и `--backend sandbox-daytona` из таблицы выше ([#1](https://github.com/inline0/termbridge/issues/1)).

## Примеры

### Подключение к существующему сеансу tmux

Если сеанс tmux уже запущен:

```bash
termbridge --session my-session
```

### Фиксированный порт и пользовательский сеанс

```bash
termbridge --port 8080 --session codex
```

### Корректное завершение (без оставшихся сеансов)

```bash
termbridge --kill-on-exit
```

### Создание скриптов (без вывода QR)

```bash
termbridge --no-qr
```

### Проксирование сервера разработки Vite

```bash
# Start your Vite app first
cd my-app && npm run dev  # runs on port 5173

# Then start Termbridge with proxy
termbridge --proxy 5173
```

Используйте кнопку **Views**, чтобы переключаться между Terminal и Preview. В Preview ваше приложение загружается через прокси с поддержкой HMR.

### Именованный туннель Cloudflare (на основе токена)

Если у вас есть учетная запись Cloudflare и вы хотите избежать ограничений частоты запросов trycloudflare:

```bash
termbridge --port 8080 --tunnel-token <TOKEN> --tunnel-url https://term.example.com
```

### Отключение туннеля (использование собственного публичного URL)

```bash
termbridge --no-tunnel --public-url https://example.com
```

## Переменные среды

Termbridge считывает переменные окружения из оболочки и файла `.env` в каталоге, из которого вы его запускаете. Переменные, уже заданные в оболочке, имеют приоритет над переменными из файла `.env`.

### Основные настройки

| Переменная | Назначение |
|----------|--------------|
| `TERMBRIDGE_SESSIONS=2` | Создать несколько сеансов tmux при запуске |
| `TERMBRIDGE_TMUX_CWD=/path` | Рабочий каталог для новых сеансов tmux |
| `TERMBRIDGE_PUBLIC_URL=https://example.com` | Публичный URL при отключенном туннеле |
| `TERMBRIDGE_TUNNEL=none` | Отключить туннель |
| `TERMBRIDGE_TUNNEL_TOKEN=<token>` | Токен именованного туннеля (требуется `TERMBRIDGE_TUNNEL_URL`) |
| `TERMBRIDGE_TUNNEL_URL=https://term.example.com` | Публичный URL для именованного туннеля |

### Дополнительные настройки

Режим Daytona direct задает эти параметры для сервера, который запускается внутри песочницы. Их также можно задать самостоятельно.

| Переменная | Назначение |
|----------|--------------|
| `TERMBRIDGE_HOST=0.0.0.0` | Адрес, на котором сервер принимает подключения (по умолчанию `127.0.0.1`). В напечатанном локальном URL всегда отображается `127.0.0.1`. |
| `TERMBRIDGE_COOKIE_SAMESITE=lax` | `SameSite` значение cookie сеанса: `lax`, `strict` или `none` (по умолчанию `Lax` или `None` в прямом режиме) |
| `TERMBRIDGE_SHARE_FILE=/path/share-url.txt` | Также записывать ссылку для общего доступа URL в этот файл |
| `TERMBRIDGE_HIDE_TERMINAL_SWITCHER=1` | Скрыть переключатель терминалов в UI |
| `TERMBRIDGE_TMUX_PATH_PREFIX=/path/bin` | Добавлять это в начало `PATH` в каждом сеансе tmux, к которому Termbridge подключается или который запускает (вводится в сеанс как команда `export`) |

### Разработка

| Переменная | Назначение |
|----------|--------------|
| `TERMBRIDGE_INSECURE_COOKIE=1` | Разрешить файлы cookie HTTP (только для локальной разработки) |
| `TERMBRIDGE_PROXY_PORT=5173` | Порт прокси для скрипта dev:beam:proxy |
| `TERMBRIDGE_DEV_UI=http://127.0.0.1:5000` | Переопределить dev Vite UI URL |
| `TERMBRIDGE_DEV_PORT=3000` | Переопределить порт сервера Termbridge при разработке (по умолчанию `8787`) |
| `TERMBRIDGE_DEV_SESSION=codex` | tmux имя сеанса для `dev:beam` (по умолчанию `codex`) |
| `TERMBRIDGE_SKIP_BUILD=1` | Пропустить сборку CLI в `dev:beam` |

### Песочница (Daytona)

| Переменная | Назначение |
|----------|--------------|
| `TERMBRIDGE_BACKEND=sandbox-daytona` | Использовать серверную часть песочницы Daytona |
| `TERMBRIDGE_SANDBOX_DIRECT=true` | Запускать Termbridge внутри песочницы |
| `TERMBRIDGE_SANDBOX_SERVER_PORT=8080` | Порт сервера в песочнице |
| `TERMBRIDGE_SANDBOX_AGENTS=claude-code,codex` | Автоматически устанавливать инструменты и синхронизировать учетные данные для агентов |
| `TERMBRIDGE_SANDBOX_AGENT_ENV=...` | Дополнительные переменные среды для передачи |
| `TERMBRIDGE_SANDBOX_AGENT_AUTH_PATHS=...` | Локальные файлы авторизации для синхронизации |

Полную конфигурацию Daytona см. в руководстве [Daytona](https://termbridge.inline0.dev/ru/docs/sandboxes/daytona).

## Остановка Termbridge

Нажмите `Ctrl+C` в терминале, где работает Termbridge. Это приведет к следующему:

- Закроет туннель (если он включен)
- Остановит локальный сервер
- Сохранит активность сеансов tmux (если только вы не использовали `--kill-on-exit`)

По умолчанию сеансы tmux сохраняются, поэтому позже к ним можно подключиться снова.
