# Интерфейс в терминале

Начиная с версии **0.36.0** команды `tuna http`, `tuna tcp`, `tuna ssh`, `tuna postgres`, `tuna redis` и `tuna kubernetes` показывают полноэкранный интерфейс (TUI) вместо текстового лога. Он включается сам, если вывод идёт в терминал.

## Что на экране

В шапке всегда видны:

* аккаунт;
* адрес туннеля (Forwarding) и локальный адрес, куда он ведёт;
* адрес [инспектора](https://tuna.am/docs/tunnels/http/inspect.md);
* статус подключения: `online` или `reconnecting`;
* сообщения от сервера.

Основная часть экрана зависит от типа туннеля:

| Туннель                                                                                              | Что показывает                                                                                                                                                                      |
| ---------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [HTTP](https://tuna.am/docs/tunnels/http.md)                                                         | Ленту запросов (новые сверху) и метрики: всего запросов, rpm, p50, p90, число ответов 4xx и 5xx. По Enter открываются детали запроса: заголовки и отформатированное тело JSON       |
| [Postgres](https://tuna.am/docs/tunnels/postgres.md), [Redis](https://tuna.am/docs/tunnels/redis.md) | Слева список сессий: `●` — активна, `○` — закрыта, `•` — есть непросмотренные события. Справа события выбранной сессии с подсветкой: запросы, число строк в ответе, ошибки          |
| [SSHd](https://tuna.am/docs/tunnels/ssh.md)                                                          | Инструкцию для подключения и ленту сессий, в том числе отказы в доступе. Enter на активной сессии открывает её просмотр в реальном времени, на завершённой — воспроизведение записи |
| [Kubernetes](https://tuna.am/docs/tunnels/kubernetes.md)                                             | В шапке сервисный аккаунт, namespace, ограничения и срок действия доступа, ниже — лента запросов гостя                                                                              |
| [TCP](https://tuna.am/docs/tunnels/tcp.md)                                                           | Лог туннеля                                                                                                                                                                         |

## Горячие клавиши

Общие для всех туннелей:

| Клавиша    | Действие                                                                                                                                                      |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Ctrl+C`   | Остановить туннель и выйти. Другого способа выйти нет, `q` только возвращает назад. На экране QR-кода и при просмотре SSH-сессии `Ctrl+C` только закрывает их |
| `c`        | Скопировать адрес туннеля                                                                                                                                     |
| `i`        | Открыть инспектор в браузере                                                                                                                                  |
| `l`        | Показать или скрыть лог (кроме TCP, где лог — основной экран)                                                                                                 |
| `Q`        | Показать QR-код адреса туннеля, `Enter` или `Ctrl+C` возвращают назад, туннель продолжает работать                                                            |
| `↑` `↓`    | Выбрать запись                                                                                                                                                |
| `g` / `G`  | Перейти к новым / старым записям                                                                                                                              |
| `Esc`, `q` | Назад из деталей и лога                                                                                                                                       |

`g` или `↑` на первой записи включают режим слежения: выделение само переходит на новые записи по мере их появления.

HTTP:

| Клавиша | Действие                                                    |
| ------- | ----------------------------------------------------------- |
| `Enter` | Детали запроса                                              |
| `r`     | Повторить запрос                                            |
| `/`     | Фильтр по методу, пути или статусу, `Esc` сбрасывает фильтр |
| `o`     | Открыть адрес туннеля в браузере                            |

Postgres и Redis:

| Клавиша | Действие                                       |
| ------- | ---------------------------------------------- |
| `Tab`   | Переключиться между списком сессий и событиями |
| `y`     | Скопировать запрос                             |

SSHd:

| Клавиша | Действие                                                                                                                       |
| ------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `Enter` | Смотреть активную сессию или воспроизвести запись завершённой. `Ctrl+C` закрывает только просмотр, туннель продолжает работать |

Флаг `--qr` при включённом интерфейсе один раз показывает экран с QR-кодом после подключения, `Enter` или `Ctrl+C` возвращают к основному экрану.

При `--inspect=false` запросы и сессии не записываются, поэтому лента HTTP, Postgres и Redis остаётся пустой.

## Отключение

Чтобы вернуть текстовый лог, запустите туннель с одним из флагов:

```shell
tuna http 8080 --log=stdout
tuna http 8080 --log=stderr
tuna http 8080 --log-format=json

```

Или задайте переменную окружения `TUNA_TUI=0`.

С `--log=/path/to/file.log` интерфейс остаётся, а лог параллельно пишется в файл.

Интерфейс не включается сам, если:

* вывод перенаправлен в файл или пайп, туннель запущен [как сервис](https://tuna.am/docs/tunnels/guides/service.md) или через systemd;
* задана переменная `CI` или `NONINTERACTIVE`;
* `TERM=dumb`;
* tuna запущена ИИ-агентом (заданы `AI_AGENT`, `CLAUDECODE` или `CURSOR_AGENT`). В этом случае интерфейс можно включить через `TUNA_TUI=1`.

Команда `tuna start` работает с текстовым выводом, как раньше.
