Logotipo de Dinotty

Dinotty

Licencia Rust Vue 3 Estrellas en GitHub Descargas en GitHub Issues en GitHub Discord

中文 | 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

Ejecutando Claude Code en el móvil Distribución completa del teclado con htop Ajustes del tema

Teclado personalizado de accesos directos Monitor del sistema Sistema de notificaciones

Tablet en horizontal con diseño de nivel escritorio

## 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:

Demo de Split Broadcast

**Marcadores de comandos** - Clic derecho en el texto del terminal para marcar, gestión de grupos, ejecución con un clic:

Demo de marcadores de comandos

**Conexión SSH y explorador de archivos** - Cliente SSH integrado, sesiones remotas como si fueran locales, gestión completa de archivos por SFTP:

Demo de conexión SSH y explorador de archivos

**Gestión de workspaces y Mission Control** - Aislamiento multi-workspace, vista general de Mission Control, cambio rápido:

Demo de gestión de workspaces

**Sistema de plugins** - Plugins JS con recarga en caliente, incluye CC Switch, JSON Formatter y más:

Demo del sistema de plugins

**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:

Demo del sistema unificado de layout

## ¿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 ![Star History](public/images/star-history.svg) ## Licencia MIT