Логотип Dinotty

Dinotty

Лицензия Rust Vue 3 Звёзды на GitHub Загрузки на GitHub Issues на GitHub Discord

中文 | English | Русский | Português | 한국어 | Español | Deutsch | Français

--- Терминал для кодинг-агентов. Запускайте Claude Code, opencode, Codex или OpenClaw на любом устройстве -- простой, расширяемый, мультиплатформенный, никогда не теряет сессию. **Одна сессия — телефон · iPad · десктоп** Начали на компьютере, продолжили с телефона, вернулись за стол — всё на месте. Сессия переживает обрыв соединения и восстанавливается при обновлении страницы. **Всё — это pane: собирайте терминал как из кубиков** Терминал, плагины, файлы, SSH и веб-превью — каждая панель как кирпичик. Перетаскивайте и собирайте своё рабочее пространство. ## Скриншоты

Запуск Claude Code на мобильном Полная раскладка клавиатуры с htop Настройки темы

Пользовательская клавиатура горячих клавиш Системный монитор Система уведомлений

Альбомная ориентация планшета — уровень десктопа

## Демонстрация десктопа Десктопный клиент обеспечивает профессиональный опыт, сопоставимый с iTerm2: **Разделённое вещание** — перетаскиваемое разделение на несколько панелей, ввод в одной панели и одновременное выполнение во всех:

Демо разделённого вещания

**Закладки команд** — правый клик по тексту терминала для закладки, управление группами, запуск одним кликом:

Демо закладок команд

**SSH-подключение и файловый браузер** — встроенный SSH-клиент, удалённые сессии ощущаются как локальные, полное управление файлами по SFTP:

Демо SSH-подключения и файлового браузера

**Управление рабочими пространствами и Mission Control** — изоляция нескольких пространств, обзор Mission Control, быстрое переключение:

Демо управления рабочими пространствами

**Система плагинов** — JS-плагины с горячей перезагрузкой, встроенные CC Switch, JSON Formatter и другие:

Демо системы плагинов

**Единая система компоновки** — терминал, плагин, файловый браузер и веб-предпросмотр — всё это панели; перетаскиваемое разделение, перемещение между вкладками, извлечение как новой вкладки:

Демо единой системы компоновки

## Почему Dinotty? Терминальные кодинг-агенты (Claude Code, opencode, Codex, OpenClaw и др.) мощные, но заперты в одном терминальном окне. Dinotty позволяет: - **Управляйте агентами с любого устройства** — глубокая работа на десктопе, отсканируйте QR-код на телефоне, уходя с рабочего места, чтобы продолжать контролировать и управлять работой агента без перерыва - **Синхронизация между устройствами, бесшовное переключение** — начните на ноутбуке, продолжите на телефоне; вернитесь к ноутбуку и продолжите ровно с того же места - **Проверяйте вывод агента напрямую** — diff кода, отрендеренные страницы, сгенерированные файлы — всё видно во встроенном браузере - **Никогда не теряйте сессию** — отключение, блокировка экрана, смена устройства — вернитесь, и всё будет ровно там, где вы оставили ### Легковесный — не удалённый рабочий стол | | Dinotty | Удалённый рабочий стол (VNC/RDP/Parsec) | |---|---|---| | **Передаваемые данные** | Только текст (JSON, байты) | Полные пиксели экрана при 30-60 fps | | **Полоса пропускания** | ~1–10 КБ/с обычно | ~1–10 МБ/с (в 100–1000 раз больше) | | **Дружелюбность к мобильным данным** | ✅ Работает на 3G/4G без задержек | ❌ Рывки, высокая задержка, расход трафика | | **Толерантность к слабому сигналу** | ✅ Автопереподключение, без потери кадров | ❌ Замороженный экран, задержка ввода | | **Энергопотребление** | Низкое (рендеринг текста) | Высокое (декодирование видео) | | **Адаптация разрешения** | Нативный текст любого размера | Масштабируемый битмап, размыто на телефоне | | **Взаимодействие** | Нативный тач, кастомная клавиатура | Симулированная мышь, крошечный десктопный UI | ## Ключевые возможности - **Серверный виртуальный терминал** — полный VTE-парсер, сервер знает точное состояние экрана, обеспечивает восстановление сессии и снимки экрана - **Сохранение сессии** — PTY-процессы переживают отключение, автопереподключение с экспоненциальной задержкой, обновление страницы для восстановления - **Разделение панелей и мульти-вкладки** — перетаскиваемое разделение, управление несколькими вкладками с серверным жизненным циклом панелей - **Управление рабочими пространствами** — изоляция нескольких пространств, обзор Mission Control, плагинные вкладки на уровне пространства - **Режим вещания** — ввод в одной панели, одновременное выполнение во всех панелях, бесплатно - **Закладки команд** — правый клик по тексту терминала для закладки, управление группами, запуск одним кликом - **Удалённое SSH-подключение** — встроенный SSH-клиент с аутентификацией по паролю/ключу, удалённые сессии ощущаются как локальные - **Удалённое управление файлами (SFTP)** — автоматически включается при SSH-подключении, полный обзор/редактирование/загрузка/скачивание файлов - **Управление несколькими серверами** — регистрируйте несколько серверов dinotty и переключайтесь между ними в Mission Control - **Адаптивная компоновка** — вертикальная ориентация ставит стопкой, горизонтальная — бок о бок; сенсорно-оптимизированные кнопки и изменение размеров панелей - **Настраиваемая клавиатура горячих клавиш** — добавление Ctrl/Esc/функциональных клавиш для мобильных, поддержка произвольных escape-последовательностей - **Встроенный файловый браузер** — подсветка кода, рендеринг Markdown, предпросмотр Office-документов, воспроизведение аудио/видео - **Индикаторы изменений Git** — отметки в поле для добавленных/изменённых/удалённых строк, inline diff, Stage/Revert - **Веб-предпросмотр** — встроенный обратный прокси для предпросмотра локальных dev-серверов в iframe - **Система уведомлений** — обнаружение terminal bell/OSC, push через WebSocket, настраиваемые звуковые оповещения - **Системный монитор** — графики CPU/памяти/сети в реальном времени - **Система плагинов** — JS-плагины + CLI-мост, горячая перезагрузка; поставляется с CC Switch, JSON Formatter, менеджером разговоров Claude Code и др. - **Open API** — HTTP-эндпоинт для управления с внешних устройств (Stream Deck, Shortcuts, скрипты автоматизации) - **Палитра команд** — быстрый запуск команд - **Десктопное приложение** — опциональный нативный клиент на базе Tauri ## Ключевые отличия - **Серверный виртуальный терминал** — не прокси для проброса WebSocket-в-PTY; PTY переживает отключение, обновите страницу для восстановления сессии - **Синхронизация между устройствами** — браузерная синхронизация, глубокая работа на десктопе, перехват с мобильного - **Легковесный текстовый транспорт** — ~1-10 КБ/с, плавно на 3G/4G, в 100-1000 раз меньше полосы, чем у удалённого рабочего стола - **Самодостаточное окружение** — встроенные файловый браузер, веб-предпросмотр, изменения Git, SSH/SFTP, система плагинов - **Бесплатно и открыто** — самохостинг, без подписки, без релейных сборов Подробнее см. [сравнение с другими решениями](getting-started/comparison.en.md). ## Установка Скачайте установщик или бинарник для вашей платформы из [GitHub Releases](https://github.com/xichan96/dinotty/releases): | Платформа | Формат | Примечания | |----------|--------|-------| | **macOS** | `.dmg` | Откройте и перетащите в Applications | | **Linux** | `.deb` | `sudo dpkg -i dinotty_*.deb` | | **Windows** | `.exe` / сборка из исходников | Запустите `dinotty-server.exe` из PowerShell или соберите из исходников | > Также можно собрать из исходников, см. «Быстрый старт» ниже. **Примечание для macOS**: Поскольку приложение не подписано, macOS может показать **«Dinotty» повреждён и не может быть открыт**. После установки выполните следующую команду для снятия ограничения: ```bash xattr -cr /Applications/Dinotty.app ``` **Установка в одну строку на Linux**: ```bash VERSION=$(curl -s https://api.github.com/repos/xichan96/dinotty/releases/latest | sed -n 's/.*"tag_name": *"\([^"]*\)".*/\1/p' | sed 's/^v//') && curl -LO "https://github.com/xichan96/dinotty/releases/download/v${VERSION}/dinotty-server_${VERSION}-1_amd64.deb" && sudo dpkg -i "dinotty-server_${VERSION}-1_amd64.deb" ``` **Запуск на Linux**: ```bash # systemd systemctl start dinotty systemctl enable dinotty # автозапуск при загрузке # Docker-контейнер nohup dinotty-server & ``` **Запуск на Windows**: ```powershell # PowerShell .\dinotty-server.exe -p 8999 # Опционально: переопределить shell по умолчанию перед автоопределением $env:DINOTTY_SHELL = "pwsh.exe" .\dinotty-server.exe ``` В Windows shell по умолчанию определяется в следующем порядке: `DINOTTY_SHELL` -> `pwsh.exe` -> `powershell.exe` -> `%ComSpec%` / `cmd.exe`. Порт по умолчанию — **8999**. После запуска откройте `http://:8999`. Используйте `-p` для указания другого порта: ```bash dinotty-server -p 3000 ``` ## Быстрый старт ```bash # Клонирование репозитория (рекомендуется shallow clone — быстрее и меньше) git clone --depth 1 --single-branch -b dev git@github.com:xichan96/dinotty.git cd dinotty # Сборка фронтенда cd frontend && pnpm install && pnpm run build && cd .. # Запуск сервера cargo run ``` Эквивалент для Windows PowerShell: ```powershell git clone --depth 1 --single-branch -b dev git@github.com:xichan96/dinotty.git cd dinotty cd frontend pnpm install pnpm run build cd .. cargo run ``` Откройте http://127.0.0.1:8999 в браузере. ```bash # Бэкенд с отладочным логированием RUST_LOG=debug cargo run # Тайп-чек фронтенда cd frontend && npx vue-tsc --noEmit ``` ```powershell # Отладочное логирование в Windows PowerShell $env:RUST_LOG = "debug" cargo run ``` ## Технологический стек | Слой | Технология | |-------|-----------| | Бэкенд | Rust, Axum 0.7, Tokio, portable-pty, vte, russh, russh-sftp | | Фронтенд | Vue 3, TypeScript, Vite, xterm.js 5 | | Десктоп | Tauri | **Написано на Rust · Один бинарник · Ноль зависимостей** — на сервере работает полноценная VT-машина состояний, а не просто прокси для проброса каналов, поэтому сессии переживают отключение. ## Дополнительная документация - [Сравнение](getting-started/comparison.en.md) — отличия от ttyd/gotty/Wetty и других удалённых решений для AI-кодинга - [Руководство по развёртыванию](getting-started/deployment.en.md) — systemd, Docker, нативный запуск на Windows, кроссплатформенная сборка, конфигурация - [Руководство по релизам](getting-started/releasing.en.md) — единое управление версиями, PR версий, продвижение из `dev` в `main`, теги и GitHub Releases - [Файловый редактор](features/file-editor.en.md) — разделение панелей, мультикурсорное редактирование, синхронизация Cursor Group между файлами - [Система уведомлений](features/notifications.en.md) — HTTP API, интеграция с Claude Code, Open API - [Система плагинов](plugins/plugins.en.md) — установка, манифест, API, встроенные плагины - [Разработка плагинов](plugins/plugin-development.md) — полное руководство по разработке плагинов - [API буфера обмена хоста](api/clipboard-api.md) — чувствительный аутентифицированный эндпоинт для мобильной вставки с хоста - [MCP-сервер](api/mcp-server.md) — встроенный MCP JSON-RPC сервер для AI-ассистентов, управляющих терминальными сессиями - [Система токенов и разрешений](internals/token-system.md) — управление доступом на основе capabilities с несколькими токенами - [Шина событий](internals/event-bus.md) — глобальная шина событий для диспетчеризации между модулями - [Журнал аудита и Webhook](internals/audit-webhook.md) — отслеживание использования API и внешние уведомления - [Контрибьюшн](getting-started/contributing.en.md) — стратегия ветвления, конвенция коммитов, стиль кода ## Контрибьюторы Спасибо всем, кто внёс вклад в Dinotty! ## Star History ![Star History](public/images/star-history.svg) ## Лицензия MIT