Dinotty
中文 | English | Русский | Português | 한국어 | Español | Deutsch | Français
---
Un terminal para agentes de código.
Ejecuta Claude Code, opencode, Codex u OpenClaw en cualquier dispositivo -- simple, extensible, multidispositivo, nunca pierde una sesión.
**Una sesión en móvil · iPad · escritorio**
Empiezas en el ordenador, continúas en el móvil y vuelves al escritorio — todo sigue exactamente donde lo dejaste. La sesión sobrevive a las desconexiones y se restaura al recargar la página.
**Todo es un panel — monta tu terminal como bloques de construcción**
Terminal, plugins, archivos, SSH y vista previa web son todos paneles. Arrastra para armar tu propio espacio de trabajo.
## Capturas de pantalla
## Demostración de escritorio
El cliente de escritorio ofrece una experiencia profesional comparable a iTerm2:
**Split Broadcast** - División multinpanel arrastrable, escribe en un panel y ejecuta en todos simultáneamente:
**Marcadores de comandos** - Clic derecho en el texto del terminal para marcar, gestión de grupos, ejecución con un clic:
**Conexión SSH y explorador de archivos** - Cliente SSH integrado, sesiones remotas como si fueran locales, gestión completa de archivos por SFTP:
**Gestión de workspaces y Mission Control** - Aislamiento multi-workspace, vista general de Mission Control, cambio rápido:
**Sistema de plugins** - Plugins JS con recarga en caliente, incluye CC Switch, JSON Formatter y más:
**Sistema unificado de layout** - Terminal, plugin, explorador de archivos y vista previa web son todos paneles; división arrastrable, movimiento entre pestañas, extracción como nueva pestaña:
## ¿Por qué Dinotty?
Los agentes de código basados en terminal (Claude Code, opencode, Codex, OpenClaw, etc.) son potentes, pero están encerrados en una sola ventana de terminal. Dinotty te permite:
- **Gestionar agentes desde cualquier dispositivo** - trabajo profundo en escritorio, escanea un código QR en tu móvil al salir del escritorio para seguir monitorizando y gestionando el trabajo de tu agente sin interrupciones
- **Sincronización multidispositivo, cambio sin interrupciones** - empieza en el portátil, continúa en el móvil; vuelve al portátil y retoma exactamente donde lo dejaste
- **Verificar la salida del agente directamente** - diffs de código, páginas renderizadas, archivos generados, todo visible en el navegador integrado
- **Nunca pierdas tu sesión** - desconexión, bloqueo de pantalla, cambio de dispositivo - vuelve y todo está exactamente donde lo dejaste
### Ligero - no es un escritorio remoto
| | Dinotty | Escritorio remoto (VNC/RDP/Parsec) |
|---|---|---|
| **Datos transmitidos** | Solo texto (JSON, bytes) | Píxeles completos de pantalla a 30-60 fps |
| **Ancho de banda** | ~1–10 KB/s típico | ~1–10 MB/s (100–1000x más) |
| **Compatible con datos móviles** | ✅ Funciona en 3G/4G sin lag | ❌ Entrecortado, alta latencia, consume datos |
| **Tolerancia a señal débil** | ✅ Reconexión automática, sin pérdida de frames | ❌ Pantalla congelada, lag de entrada |
| **Consumo de batería** | Bajo (renderizado de texto) | Alto (decodificación de video) |
| **Adaptación de resolución** | Texto nativo a cualquier tamaño | Bitmap escalado, borroso en móvil |
| **Interacción** | Touch nativo, teclado personalizado | Ratón simulado, UI de escritorio diminuta |
## Características principales
- **Terminal virtual en servidor** - parser VTE completo, el servidor conoce el estado exacto de la pantalla, permite recuperación de sesión e instantáneas de pantalla
- **Persistencia de sesión** - los procesos PTY sobreviven a desconexiones, reconexión automática con backoff exponencial, refresca la página para restaurar
- **División de paneles y multi-pestañas** - división arrastrable, gestión multi-pestaña con ciclo de vida de panel liderado por servidor
- **Gestión de workspaces** - aislamiento multi-workspace, vista general de Mission Control, pestañas de plugin con scope de workspace
- **Modo broadcast** - entrada en un panel, ejecución simultánea en todos los paneles, gratis
- **Marcadores de comandos** - clic derecho en texto del terminal para marcar, gestión de grupos, ejecución con un clic
- **Conexión SSH remota** - cliente SSH integrado con auth por contraseña/clave, sesiones remotas como locales
- **Gestión remota de archivos (SFTP)** - se activa automáticamente en conexiones SSH, navegación/edición/subida/descarga completa de archivos
- **Gestión multiservidor** - registra varios servidores dinotty y cambia entre ellos desde Mission Control
- **Diseño responsivo** - vertical apila en pilas, horizontal lado a lado; botones optimizados para touch y redimensionado de paneles
- **Teclado personalizable de atajos** - añade Ctrl/Esc/teclas de función para móvil, soporta secuencias escape arbitrarias
- **Explorador de archivos integrado** - resaltado de código, renderizado Markdown, vista previa de documentos Office, reproducción de audio/vídeo
- **Indicadores de cambios Git** - marcas en el gutter para líneas añadidas/modificadas/eliminadas, diff inline, Stage/Revert
- **Vista previa web** - proxy inverso integrado para previsualizar servidores de desarrollo locales en iframe
- **Sistema de notificaciones** - detección de terminal bell/OSC, push por WebSocket, alertas sonoras configurables
- **Monitor del sistema** - gráficas en tiempo real de CPU/memoria/red
- **Sistema de plugins** - plugins JS + puente CLI, recarga en caliente; incluye CC Switch, JSON Formatter, gestor de conversaciones de Claude Code, etc.
- **Open API** - endpoint HTTP para control desde dispositivos externos (Stream Deck, Shortcuts, scripts de automatización)
- **Paleta de comandos** - lanzador de comandos de acceso rápido
- **App de escritorio** - cliente nativo opcional basado en Tauri
## Diferenciadores clave
- **Terminal virtual en servidor** - no es un pipe WebSocket-a-PTY; el PTY sobrevive a la desconexión, refresca la página para restaurar la sesión
- **Sincronización multidispositivo** - sincronización basada en navegador, trabajo profundo en escritorio, toma el control desde el móvil
- **Transporte ligero solo texto** - ~1-10 KB/s, fluido en 3G/4G, 100-1000x menos ancho de banda que escritorio remoto
- **Entorno autónomo** - explorador de archivos integrado, vista previa web, cambios Git, SSH/SFTP, sistema de plugins
- **Gratis y de código abierto** - autohospedado, sin suscripción, sin tasas de relay
Ver [comparación con otras soluciones](getting-started/comparison.en.md) para más detalles.
## Instalación
Descarga el instalador o binario para tu plataforma desde [GitHub Releases](https://github.com/xichan96/dinotty/releases):
| Plataforma | Formato | Notas |
|----------|--------|-------|
| **macOS** | `.dmg` | Abrir y arrastrar a Applications |
| **Linux** | `.deb` | `sudo dpkg -i dinotty_*.deb` |
| **Windows** | `.exe` / build desde fuente | Ejecuta `dinotty-server.exe` desde PowerShell, o compila desde fuente |
> También puedes compilar desde fuente, ver "Inicio rápido" más abajo.
**Nota para macOS**: Como la app no está firmada, macOS puede mostrar **"Dinotty" está dañado y no se puede abrir**. Ejecuta el siguiente comando después de la instalación para quitar la restricción:
```bash
xattr -cr /Applications/Dinotty.app
```
**Instalación en una línea en 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"
```
**Inicio en Linux**:
```bash
# systemd
systemctl start dinotty
systemctl enable dinotty # auto-inicio en arranque
# Contenedor Docker
nohup dinotty-server &
```
**Inicio en Windows**:
```powershell
# PowerShell
.\dinotty-server.exe -p 8999
# Opcional: sobreescribir el shell por defecto antes de la autodetección
$env:DINOTTY_SHELL = "pwsh.exe"
.\dinotty-server.exe
```
En Windows, el shell por defecto se detecta en este orden: `DINOTTY_SHELL` -> `pwsh.exe` -> `powershell.exe` -> `%ComSpec%` / `cmd.exe`.
El puerto por defecto es **8999**. Después de iniciar, visita `http://:8999`. Usa `-p` para especificar un puerto personalizado:
```bash
dinotty-server -p 3000
```
## Inicio rápido
```bash
# Clonar repo (shallow clone recomendado - más rápido y pequeño)
git clone --depth 1 --single-branch -b dev git@github.com:xichan96/dinotty.git
cd dinotty
# Compilar frontend
cd frontend && pnpm install && pnpm run build && cd ..
# Ejecutar servidor
cargo run
```
Equivalente en 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
```
Abre http://127.0.0.1:8999 en tu navegador.
```bash
# Backend con logging de depuración
RUST_LOG=debug cargo run
# Type-check del frontend
cd frontend && npx vue-tsc --noEmit
```
```powershell
# Logging de depuración en Windows PowerShell
$env:RUST_LOG = "debug"
cargo run
```
## Stack tecnológico
| Capa | Tecnología |
|-------|-----------|
| Backend | Rust, Axum 0.7, Tokio, portable-pty, vte, russh, russh-sftp |
| Frontend | Vue 3, TypeScript, Vite, xterm.js 5 |
| Escritorio | Tauri |
**Escrito en Rust · Un solo binario · Cero dependencias** - Ejecuta una máquina de estados VT completa en el servidor, no un proxy que reenvía pipes, así las sesiones sobreviven a la desconexión.
## Más documentación
- [Comparación](getting-started/comparison.en.md) - diferencias vs ttyd/gotty/Wetty y otras soluciones remotas de AI coding
- [Guía de despliegue](getting-started/deployment.en.md) - systemd, Docker, ejecución nativa en Windows, build multiplataforma, configuración
- [Guía de release](getting-started/releasing.en.md) - gestión unificada de versiones, PRs de versión, promoción de `dev` a `main`, tags y GitHub Releases
- [Editor de archivos](features/file-editor.en.md) - paneles divididos, edición multicursor, sincronización cross-file de Cursor Group
- [Sistema de notificaciones](features/notifications.en.md) - HTTP API, integración con Claude Code, Open API
- [Sistema de plugins](plugins/plugins.en.md) - instalación, manifiesto, API, plugins integrados
- [Desarrollo de plugins](plugins/plugin-development.md) - guía completa de desarrollo de plugins
- [API del portapapeles del host](api/clipboard-api.md) - endpoint sensible autenticado usado por el pegado desde host móvil
- [MCP Server](api/mcp-server.md) - servidor MCP JSON-RPC integrado para que asistentes IA operen sesiones de terminal
- [Sistema de permisos por token](internals/token-system.md) - control de acceso fine-grained multi-token basado en capabilities
- [Event Bus](internals/event-bus.md) - bus de eventos global para dispatch entre módulos
- [Audit Log y Webhook](internals/audit-webhook.md) - tracking de uso de API y notificaciones externas
- [Contribuir](getting-started/contributing.en.md) - estrategia de ramas, convención de commits, estilo de código
## Contribuidores
¡Gracias a todas las personas que han contribuido a Dinotty!
## Star History

## Licencia
MIT