Dinotty
中文 | English | Русский | Português | 한국어 | Español | Deutsch | Français
---
Терминал для кодинг-агентов.
Запускайте Claude Code, opencode, Codex или OpenClaw на любом устройстве -- простой, расширяемый, мультиплатформенный, никогда не теряет сессию.
**Одна сессия — телефон · iPad · десктоп**
Начали на компьютере, продолжили с телефона, вернулись за стол — всё на месте. Сессия переживает обрыв соединения и восстанавливается при обновлении страницы.
**Всё — это pane: собирайте терминал как из кубиков**
Терминал, плагины, файлы, SSH и веб-превью — каждая панель как кирпичик. Перетаскивайте и собирайте своё рабочее пространство.
## Скриншоты
## Демонстрация десктопа
Десктопный клиент обеспечивает профессиональный опыт, сопоставимый с iTerm2:
**Разделённое вещание** — перетаскиваемое разделение на несколько панелей, ввод в одной панели и одновременное выполнение во всех:
**Закладки команд** — правый клик по тексту терминала для закладки, управление группами, запуск одним кликом:
**SSH-подключение и файловый браузер** — встроенный SSH-клиент, удалённые сессии ощущаются как локальные, полное управление файлами по SFTP:
**Управление рабочими пространствами и 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

## Лицензия
MIT