← 开源
xichan96

dinotty

Multi-device terminal server for AI coding agents. Server-side VTE, session persistence, file browser, web preview, plugin system. Self-hosted.

InfrastructureMake world agent-readyTypeScript
在 GitHub 打开
增长势头
+024 小时新增 Star0.0%
718
Star
75
Fork
+5
本周
15
贡献者
创建于 2026-05-12 · 更新于 2026-10-15 · 今日第 14609 名
主要开发者

xichan96/dinotty 排名第 14,609,有 718 个星标。

同类别比较

xichan96/dinotty 排名第 14,609,此处有 8 个同类条目;pnnx/pnnx 排名第 14,606。

同类别比较
名称排名指标
iterative/mlem14,589
语言:
Python
星标数:
719
分叉数:
42
简介:
🐶 A tool to package, serve, and deploy any ML model on any platform. Archived to be resurrected one day🤞
mit-han-lab/mcunet14,592
语言:
Python
星标数:
719
分叉数:
112
简介:
[NeurIPS 2020] MCUNet: Tiny Deep Learning on IoT Devices; [NeurIPS 2021] MCUNetV2: Memory-Efficient Patch-based Inference for Tiny Deep Learning
aurorax-neo/chat2api14,598
语言:
Go
星标数:
718
分叉数:
140
简介:
chat2api
pnnx/pnnx14,606
语言:
Python
星标数:
718
分叉数:
44
简介:
PyTorch Neural Network eXchange
peters/horizon14,618
语言:
Rust
星标数:
717
分叉数:
30
简介:
GPU-accelerated terminal board that puts all your sessions on an infinite canvas
Meesho/BharatMLStack14,631
语言:
Go
星标数:
715
分叉数:
85
简介:
BharatMLStack is an open-source, end-to-end machine learning infrastructure stack built at Meesho to support real-time and batch ML workloads at Bharat scale
oracle/graphpipe14,641
语言:
Makefile
星标数:
715
分叉数:
102
简介:
Machine Learning Model Deployment Made Simple
openclaw/nix-openclaw14,655
语言:
Nix
星标数:
714
分叉数:
231
简介:
Packages OpenClaw for nix.
关键参数与规格
关键参数与规格
参数值
语言TypeScript
类别Infrastructure
子类别Make world agent-ready
关键词Agent-ready APIs, DevOps, Terminal, Tool use
星标数718
分叉数75
贡献者15
创建日期2026-05-12
更新日期2026-10-15
1 天星标数0
7 天星标数5
排名14,609
上次排名4,319
排名变化-10,290
7 天星标排名5,722
上次 7 天星标排名5,741
7 天星标排名变化19
总星标排名14,601
上次总星标排名14,555
总星标排名变化-46
README 摘录

**One session across phone · iPad · desktop** Stop mid-task on your computer, continue on your phone, then return to your desktop and pick up exactly where you left off. Sessions survive disconnects and restore on refresh. Drag them around to assemble your own workspace. Sync everywhere Half-done on your laptop. Back to your laptop, exactly as you left it. Endless extensibility JS plugins with hot reload. CC Switch, JSON Formatter, Claude Code dialog management - built in. Custom commands, terminal

interaction, event subscriptions, CLI integration - the API is ready. Everything is a pane Terminal, files, web preview, Git changes, SSH remote. Refresh the page, you're back where you were. **macOS Note**: Since the app is unsigned, macOS may show **"Dinotty" is damaged and can't be opened**. Run the following command after installation to remove the restriction: **Linux one-liner install**: **Linux startup**: **Windows startup**: On Windows, the default shell is detected in this order: → → → / . Use to specify a custom port

: Quick Start Windows PowerShell equivalent: Open in your browser. Verification Code Login In addition to the default "Token" login, dinotty supports "Verification Code" login as a **mutually exclusive** alternative: when selected in "Security & Access", remote users receive a 6-digit code generated server-side and pushed to you via a notifier plugin (e. Entering the code on the login page creates a session. Codes are valid for 5 minutes, single-use, and invalidated after 5 wrong attempts. This removes the

static token from the remote login path, mitigating XSS / screenshot / device theft / social engineering risks to the token itself. Before enabling, install a messaging notifier plugin and keep it subscribed to the event - otherwise the option is disabled in the UI. While , uninstalling a plugin currently subscribed to that event is rejected with 409 to prevent accidental lockout. Emergency Recovery If verification code login is stuck (notifier plugin uninstalled, subscription lost, or IM/email not arriving), edit (Windows: ) on the

server host, set back to , and restart the dinotty service. This path is only writable by the server host's local user; remote login users cannot modify it. 7, Tokio, portable-pty, vte, russh, russh-sftp | | Frontend | Vue 3, TypeScript, Vite, xterm.

常见问题

记录了多少星标和分叉?

xichan96/dinotty 有 718 个星标和 75 个分叉。

仓库排名是多少?

xichan96/dinotty 排名第 14,609。

记录的语言和类别是什么?

xichan96/dinotty 有 718 个星标,语言为 TypeScript,类别为 Infrastructure。

哪个仓库排名最接近?

xichan96/dinotty 与 pnnx/pnnx 比较,后者排名第 14,606,有 718 个星标。

README

Dinotty

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


A terminal built for coding agents.

Run Claude Code, opencode, Codex, or OpenClaw on any device -- simple, extensible, multi-device, never lose a session.

One session across phone · iPad · desktop

Stop mid-task on your computer, continue on your phone, then return to your desktop and pick up exactly where you left off. Sessions survive disconnects and restore on refresh.

Everything is a pane — build your terminal like building blocks

Terminals, plugins, files, SSH, and web previews are all panes. Drag them around to assemble your own workspace.

Screenshots

Desktop Demo

The desktop client delivers a professional experience comparable to iTerm2:

Split Broadcast — Draggable multi-pane split, type in one pane and execute in all panes simultaneously:

Command Bookmarks — Right-click terminal text to bookmark, group management, one-click execution:

SSH Connection & File Browser — Built-in SSH client, remote sessions feel just like local, full SFTP file management:

Workspace Management & Mission Control — Multi-workspace isolation, Mission Control overview, quick switching:

Plugin System — Hot-reloadable JS plugins with built-in CC Switch, JSON Formatter, and more:

Unified Layout System - Terminal, plugin, file browser, and web preview are all panes; draggable split, cross-tab move, extract as new tab:

Philosophy

Terminal coding agents - Claude Code, opencode, Codex, OpenClaw - are powerful, yet confined to a single window. Dinotty sets them free. One terminal. Every device. Every possibility.

Sync everywhere

Half-done on your laptop. Pick up your phone, keep going. Back to your laptop, exactly as you left it.

Endless extensibility

JS plugins with hot reload. CC Switch, JSON Formatter, Claude Code dialog management - built in. Custom commands, terminal interaction, event subscriptions, CLI integration - the API is ready.

Everything is a pane

Terminal, files, web preview, Git changes, SSH remote. Drag to split, move across tabs. All in one flow.

Never drops

Server-side VTE. PTY survives disconnects. Refresh the page, you're back where you were.

Free and open

Self-hosted. No subscriptions. No relay. Your data stays on your machine.

Lightweight — Not a Remote Desktop

Dinotty Remote Desktop (VNC/RDP/Parsec)
Data transmitted Text only (JSON, bytes) Full screen pixels at 30-60 fps
Bandwidth ~1–10 KB/s typical ~1–10 MB/s (100–1000x more)
Mobile data friendly ✅ Works on 3G/4G without lag ❌ Choppy, high latency, burns data
Weak signal tolerance ✅ Auto-reconnect, no frame loss ❌ Frozen screen, input lag
Battery consumption Low (text rendering) High (video decoding)
Resolution adaptation Native text at any size Scaled bitmap, blurry on phone
Interaction Native touch, custom keyboard Simulated mouse, tiny desktop UI

Key Features

  • Server-side virtual terminal — full VTE parser, server knows exact screen state, enables session recovery & screen snapshots
  • Session persistence — PTY processes survive disconnection, auto-reconnect with exponential backoff, refresh page to restore
  • Split pane & multi-tab — draggable split, multi-tab management with server-led pane lifecycle
  • Workspace management — multi-workspace isolation, Mission Control overview, workspace-scoped plugin tabs
  • Broadcast mode — input in one pane, execute in all panes simultaneously, free
  • Command bookmarks — right-click terminal text to bookmark, group management, one-click execution
  • SSH remote connection — built-in SSH client with password/key auth, remote sessions feel just like local
  • Remote file management (SFTP) — auto-enabled over SSH connections, full file browse/edit/upload/download
  • Multi-server management — register multiple dinotty servers and switch between them from Mission Control
  • Responsive layout — portrait stacks vertically, landscape side-by-side; touch-optimized buttons & pane resizing
  • Customizable shortcut keyboard — add Ctrl/Esc/function keys for mobile, supports arbitrary escape sequences
  • Built-in file browser — code highlighting, Markdown rendering, Office document preview, audio/video playback
  • Git change indicators — gutter marks for added/modified/deleted lines, inline diff, Stage/Revert
  • Web preview — built-in reverse proxy to preview local dev servers in iframe
  • Notification system — terminal bell/OSC detection, WebSocket push, configurable sound alerts
  • System monitor — real-time CPU/memory/network charts
  • Plugin system — JS plugins + CLI bridge, hot-reload; ships with CC Switch, JSON Formatter, Claude Code conversation manager, etc.
  • Open API — HTTP endpoint for external device control (Stream Deck, Shortcuts, automation scripts)
  • Command palette — quick-access command launcher
  • Desktop app — optional Tauri-based native client

Key Differentiators

  • Server-side virtual terminal - Not a WebSocket-to-PTY pipe; PTY survives disconnect, refresh page to restore session
  • Multi-device sync - Browser-based sync, deep coding on desktop, take over from mobile
  • Lightweight text-only transport - ~1-10 KB/s, smooth on 3G/4G, 100-1000x less bandwidth than remote desktop
  • Self-contained environment - Built-in file browser, web preview, Git changes, SSH/SFTP, plugin system
  • Free & open source - Self-hosted, no subscription, no relay fees

See comparison with other solutions for details.

Installation

Download the installer or binary for your platform from GitHub Releases:

Platform Format Notes
macOS .dmg Open and drag to Applications
Linux .deb sudo dpkg -i dinotty_*.deb
Windows .exe / source build Run dinotty-server.exe from PowerShell, or build from source

You can also build from source, see "Quick Start" below.

macOS Note: Since the app is unsigned, macOS may show "Dinotty" is damaged and can't be opened. Run the following command after installation to remove the restriction:

xattr -cr /Applications/Dinotty.app

Linux one-liner install:

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

# systemd
systemctl start dinotty
systemctl enable dinotty  # auto-start on boot

# Docker container
nohup dinotty-server &

Windows startup:

# PowerShell
.\dinotty-server.exe -p 8999

# Optional: override the default shell before auto-detection
$env:DINOTTY_SHELL = "pwsh.exe"
.\dinotty-server.exe

On Windows, the default shell is detected in this order: DINOTTY_SHELL → pwsh.exe → powershell.exe → %ComSpec% / cmd.exe.

Default port is 8999. After starting, visit http://:8999. Use -p to specify a custom port:

dinotty-server -p 3000

Quick Start

# Clone repo (shallow clone recommended — faster and smaller)
git clone --depth 1 --single-branch -b dev git@github.com:xichan96/dinotty.git
cd dinotty

# Build frontend
cd frontend && pnpm install && pnpm run build && cd ..

# Run server
cargo run

Windows PowerShell equivalent:

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

Open http://127.0.0.1:8999 in your browser.

# Backend with debug logging
RUST_LOG=debug cargo run

# Frontend type-check
cd frontend && npx vue-tsc --noEmit
# Windows PowerShell debug logging
$env:RUST_LOG = "debug"
cargo run

Verification Code Login

In addition to the default "Token" login, dinotty supports "Verification Code" login as a mutually exclusive alternative: when selected in "Security & Access", remote users receive a 6-digit code generated server-side and pushed to you via a notifier plugin (e.g. feishu-notify). Entering the code on the login page creates a session. Codes are valid for 5 minutes, single-use, and invalidated after 5 wrong attempts. This removes the static token from the remote login path, mitigating XSS / screenshot / device theft / social engineering risks to the token itself.

Before enabling, install a messaging notifier plugin and keep it subscribed to the auth.verification_code event - otherwise the option is disabled in the UI. While login_method=verification_code, uninstalling a plugin currently subscribed to that event is rejected with 409 to prevent accidental lockout.

Emergency Recovery

If verification code login is stuck (notifier plugin uninstalled, subscription lost, or IM/email not arriving), edit ~/.dinotty/settings.json (Windows: %APPDATA%\dinotty\settings.json) on the server host, set auth.login_method back to "token", and restart the dinotty service. This path is only writable by the server host's local user; remote login users cannot modify it.

Tech Stack

Layer Technology
Backend Rust, Axum 0.7, Tokio, portable-pty, vte, russh, russh-sftp
Frontend Vue 3, TypeScript, Vite, xterm.js 5
Desktop Tauri

Written in Rust · Single binary · Zero dependencies — Runs a full VT state machine on the server, not a pipe-forwarding proxy, so sessions survive disconnection.

More Documentation

  • Comparison — differences vs ttyd/gotty/Wetty and other AI coding remote solutions
  • Deployment Guide — systemd, Docker, Windows native run, cross-platform build, configuration
  • Release Guide — unified version management, version PRs, dev to main promotion, tags, and GitHub Releases
  • File Editor — split panes, multi-cursor editing, Cursor Group cross-file sync
  • Notification System — HTTP API, Claude Code integration, Open API
  • Plugin System — installation, manifest, API, built-in plugins
  • Plugin Development — full plugin development guide (Chinese)
  • Host Clipboard API — sensitive authenticated endpoint used by mobile host paste
  • MCP Server — built-in MCP JSON-RPC server for AI assistants to operate terminal sessions
  • Token Permission System — capability-based multi-token fine-grained access control (Chinese)
  • Event Bus — global event bus for inter-module event dispatch (Chinese)
  • Audit Log & Webhook — API usage tracking and external notifications (Chinese)
  • Contributing — branch strategy, commit convention, code style

Contributors

Thanks to all the people who have contributed to Dinotty!

Star History

License

MIT

排名相邻
同类项目