Что такое Tabminal
Tabminal — это облачно-нативное рабочее пространство, которое позволяет управлять терминалами, файлами и AI-агентами с любого устройства: десктопа, планшета или смартфона. Ключевая особенность — сохранение состояния сессий (persistent sessions), которое переживает перезагрузку страницы, переподключение к сети или смену устройства. Приложение построено на стеке Node.js (Koa, node-pty) для бэкенда и Vanilla JS + xterm.js для фронтенда.
Интеграция с AI-агентами (ACP)
Главное нововведение — полная поддержка Agent Client Protocol (ACP). Это не просто чат-бот, а полноценный интерфейс для взаимодействия с CLI-агентами. В интерфейсе появляются отдельные вкладки для агентов, где отображаются:
- Живой вывод терминала и diff-файлы.
- Запросы на подтверждение действий (permissions).
- Планы выполнения задач (agent plans).
- HUD-индикаторы использования ресурсов.
Система автоматически обнаруживает доступные агенты на хосте. Поддерживаются следующие модели:
| Агент / Модель | Требования к запуску |
|---|---|
| Gemini CLI | gemini --acp или npx @google/gemini-cli@latest --acp |
| Codex CLI | Необходима авторизация через codex login |
| Claude Agent | npx @zed-industries/claude-code-acp@latest + конфиг Anthropic/Vertex |
| GitHub Copilot CLI | copilot --acp --stdio или gh copilot -- --acp --stdio |
| ACP Test Agent | Активируется переменной TABMINAL_ENABLE_TEST_AGENT=1 |
Мультихостная архитектура
Tabminal позволяет управлять кластером серверов из одного окна браузера. Поддерживается:
- Добавление нескольких хостов через боковую панель.
- Изолированная аутентификация для каждого хоста (state per-host).
- Сохранение реестра хостов в локальном хранилище браузера.
Для безопасности рекомендуется запускать через VPN, Tailscale или Cloudflare Access. Прямое открытие в интернет не рекомендуется из-за высокого уровня привилегий приложения.
Быстрый старт и конфигурация
Для запуска требуется Node.js >= 22. Приложение можно запустить через npx, Docker или локально из исходников. Обязательный флаг запуска — --accept-terms.
| Параметр запуска | Описание | Значение по умолчанию |
|---|---|---|
--port / -p |
Порт сервера | 9846 |
--openai-key / -o |
API ключ OpenAI | null |
--openrouter-key / -k |
API ключ OpenRouter | null |
--model / -m |
Модель для встроенного ассистента | gpt-5.2 (OpenAI) / gemini-3-flash-preview (OpenRouter) |
--history / -d |
Лимит истории терминала (символы) | 1048576 |
Встроенный AI-ассистент (отличный от ACP) позволяет исправлять ошибки команд, используя контекст истории терминала. Для этого нужно ввести префикс / перед запросом. Ключи OpenAI и OpenRouter взаимно исключают друг друга.
Источник: Github ↗
