故事的起源:从 1.5G 内存到“真香”与遗憾
作为每天泡在终端里的开发者,我之前一直是 Tabby 的重度用户——它好看、开箱即用,把 SSH 主机管理、串口调试和 SFTP 文件传输整合得很顺手。
但随着业务和开发工具(比如跑 Harness 等重型工具)越来越重,基于 Electron 的 Tabby 渲染进程开销直接失控:光是终端本身就吃了我将近 1.5G 内存,风扇狂转,CPU 居高不下。
后来我果断切到了最近大火的 GPU 加速终端 Ghostty。不得不说,现代原生终端是真的香:
- 内存瞬间降到了 500MB 以内;
- 渲染丝滑流畅,CPU 温度直接降下来了;
- 输入几乎零延迟。
但爽了没两天,新的痛苦又来了:Ghostty 是个纯粹的终端模拟器,我在 Tabby 里用得最顺手的那些工具全没了!
- 想要连多台服务器?只能手动敲
ssh user@ip或者硬背~/.ssh/config里的别名; - 临时调个串口设备?又得去找 Minicom / Picocom;
- 想传个文件?还得退出或者开第三方 GUI 软件;
- 换到 Windows 或 Linux 服务器上,又要重新配一套环境。
既然市面上没有一个既原生轻量、又能在任何终端里运行的全能连接管理工具,那我干脆自己写一个!
于是,ctty 诞生了。
什么是 ctty?
ctty 是一个用纯 Go 编写的全平台、一体化终端连接管理器(TUI)。
它把以前臃肿 GUI 客户端(如 Tabby / Termius / Xshell)里的核心功能,全部搬进了轻量级的终端交互界面里:
- 极度轻量:单个二进制文件仅 ~5MB,纯 Go 编写,0 Electron、0 浏览器引擎,启动毫秒级,几乎不占内存;
- 终端解耦(Terminal-Agnostic):无论你用的是 Ghostty、Alacritty、WezTerm、iTerm2、Windows Terminal 还是直接在 tmux / Zellij 分屏里,它都能完美运行;
- 全平台支持:Linux、macOS (Intel/Apple Silicon)、Windows 甚至 Android (Termux) 全覆盖;
- 三合一全功能:SSH 主机管理 + 串口设备调试 + SFTP 文件传输。
核心功能亮点
1. 终端里的 SSH 主机看板(键盘流驱动)
告别死记硬背服务器 IP 和别名,输入 ctty 即可唤起:
- 实时网络探测:异步 Ping 自动检查服务器连通性(正常 / 探测中 / 离线);
- 智能搜索与排序:按
/支持主机名、IP 和#tag即时过滤,按s/r按最近连接或字母排序; - 彩色 Tag 标签系统:自动对
#prod(红)、#dev(绿)、#db(紫)进行高亮配色,一目了然; - 安全密码保险库:内置 AES-256-GCM 本地加密存储,基于 OpenSSH 原生
SSH_ASKPASS协议实现免密秒连,绝不污染系统原生的~/.ssh/config。
ctty - Connection Manager
┌ Host ──────────┬ Address ────────┬ User ─────┬ Port ──┬ Tags ───────┬ Status ┐
│ > prod-api-01 │ 192.168.1.101 │ root │ 22 │ #prod #web │ OK │
│ dev-database │ 10.0.0.52 │ suroy │ 22 │ #dev #db │ OK │
│ hk-gateway │ 47.90.xx.xx │ ubuntu │ 2222 │ #gateway │ Down │
└────────────────┴─────────────────┴───────────┴────────┴─────────────┴────────┘2. 内置 SFTP 文件浏览器(选定主机按 o 唤起)
传文件再也不用切到 FileZilla 或手动敲 scp:
- 按
o即可在当前终端内唤起双栏/交互式 SFTP 浏览器; - 支持远程与本地目录快速切换(按
u切换浏览); - 支持远程文件搜索、一键下载至本地、上传与删除,带清晰的进度条与取消保护。
3. 串口设备自动识别与调试(按 t 一键进入)
做嵌入式、硬件调试或配交换机路由器的同学福音:
- 插入 USB 串口转接线后,按
t(或直接运行ctty serial)自动检测所有串口; - 预置常用波特率(9600 ~ 921600)、数据位、校验位自由切换;
- 终端直连桥接,按
Ctrl+]随时切回主界面。
4. 轻松配置 SSH 端口转发(按 f 唤起)
记不住复杂的 -L、-R、-D 参数?
- 本地端口转发(-L):一键把远程数据库映射到本地
localhost; - 远程端口转发(-R):把本地 Web 服务暴露给服务器;
- 动态代理(-D):一键开启 SOCKS5 代理隧道;
- 内置历史配置记录,常用端口转发一键复用。
5. 专为极小分屏打磨的 TUI 体验
在日常开发中,我经常在 Ghostty / tmux 里切出只有 8~10 行高的极小窗口。很多现有的 TUI 工具在小窗口下直接就爆栈或截断显示了。 ctty 实现了焦点跟随的动态视口滚动与固定头尾导航,哪怕在极小的分屏下,配置表单、帮助菜单也依然丝滑可用!
同时适配了 VS Code / JetBrains 内置终端体验。
⚡ 全平台一键安装
为了让大家在所有机器上都能无缝用上,安装做到了极简:
macOS(推荐 Homebrew):
brew install zsuroy/ctty/cttyLinux / macOS / Termux(一行脚本搞定):
curl -sSL https://raw.githubusercontent.com/zsuroy/ctty/master/install/unix.sh | bashWindows(PowerShell 一行命令):
irm https://raw.githubusercontent.com/zsuroy/ctty/master/install/windows.ps1 | iexGo 开发者源码安装:
go install github.com/zsuroy/ctty@latest
常用快捷键速查表
| 按键 | 功能说明 |
|---|---|
↑/↓ 或 j/k | 上下移动选择主机 |
Enter | 快速连接到选中的主机 |
a / e / d | 新增 / 编辑 / 删除主机配置 |
/ | 启动即时搜索(支持搜主机名、IP、#标签) |
p | 一键探测所有主机连通性(Ping 检测) |
o | 打开选中主机的 SFTP 文件传输 |
t | 打开 串口设备管理 (Serial) |
f | 打开 SSH 端口转发配置 |
S | 打开偏好设置(中英文切换、ESC 行为等) |
q | 退出程序 |
结语 & 开源欢迎体验
从 Tabby 的 1.5G 内存泥潭脱身,配合 Ghostty + ctty,现在的终端体验真正做到了兼具极速性能与极致便利。
这个项目现已完全开源,如果你也追求更轻量、高效的终端工作流,欢迎体验!
- GitHub 仓库:https://github.com/zsuroy/ctty
- 欢迎大家体验后在 GitHub 点个 Star,有任何需求、Bug 或建议,也欢迎随时提 Issue / PR!




Comments | NOTHING