Description
< #SSH #Serial #Telnet #SFTP #TUI #Terminal #Cross-Platform #Open Source
ctty is a connection manager that lives in the terminal. Written in Go, it handles SSH, serial, Telnet and SFTP from one TUI, and ships as a single binary of about 5MB — no Electron, no browser engine, nothing to configure before the first connection.
Think of it as Tabby without the desktop app: a host list with search, tags and live reachability, where pressing Enter connects. It reads and writes your existing ~/.ssh/config, while passwords are kept in a separate encrypted store so standard SSH configs stay clean. It runs on Linux, macOS (Intel and Apple Silicon), Windows and Android via Termux, under the MIT licence.
TUI host management: Browse hosts with arrows or vim-style keys, and add, edit, delete or move entries between config files without leaving the interface.
Tags and live status: Tags are colour-coded automatically (#prod red, #dev green), and a special hidden tag keeps a host out of the list while leaving it connectable. Asynchronous pings report online, connecting, offline or unknown.
Serial connections: Press t for the serial manager, where available ports are detected and listed for you. Baud rate, data bits, parity and stop bits are all configurable (115200 8N1 by default), and the terminal bridges straight to the port until Ctrl+] brings you back.
Built-in Telnet client: A native RFC 854 implementation that does not need the system telnet binary (macOS dropped it), aimed at lab equipment, console servers and legacy gear, with a one-key reachability probe.
SFTP transfers: Press o on a host to open a two-pane browser with remote and local trees side by side. Uploads and downloads show progress and can be cancelled, and search, mkdir and delete are all there.
Port forwarding: Local, remote and dynamic (SOCKS) forwards are set up through a form, with the history kept so a tunnel can be brought back quickly.
Password vault and touchless login: SSH passwords sit in a local AES-256-GCM encrypted vault with 0600 permissions, and auto-login works through OpenSSH’s own SSH_ASKPASS protocol rather than any third-party helper.
Works with your SSH setup: Full support for Include directives, ProxyJump and ProxyCommand bastions and arbitrary SSH options, with automatic backups and validation before changes — plus
CLI and agent access: Every operation is available from the command line without the TUI and can emit JSON, and the repository ships an agent skill so Cursor, Claude Code or Codex can query hosts and run remote commands directly.
Small terminals and two languages: Forms and dialogs scroll with focus, so they stay usable down to 8-12 lines in tmux/Zellij splits or an editor’s embedded terminal; the interface comes in English and Simplified Chinese, switchable from the settings menu.
Open source project: The source code is hosted on GitHub, so developers can study the implementation, contribute, or customize it for their own needs.
ctty is a connection manager that lives in the terminal. Written in Go, it handles SSH, serial, Telnet and SFTP from one TUI, and ships as a single binary of about 5MB — no Electron, no browser engine, nothing to configure before the first connection.
Think of it as Tabby without the desktop app: a host list with search, tags and live reachability, where pressing Enter connects. It reads and writes your existing ~/.ssh/config, while passwords are kept in a separate encrypted store so standard SSH configs stay clean. It runs on Linux, macOS (Intel and Apple Silicon), Windows and Android via Termux, under the MIT licence.
Features
TUI host management: Browse hosts with arrows or vim-style keys, and add, edit, delete or move entries between config files without leaving the interface.
/ filters as you type, and sorting covers name, hostname, tags and last login.Tags and live status: Tags are colour-coded automatically (#prod red, #dev green), and a special hidden tag keeps a host out of the list while leaving it connectable. Asynchronous pings report online, connecting, offline or unknown.
Serial connections: Press t for the serial manager, where available ports are detected and listed for you. Baud rate, data bits, parity and stop bits are all configurable (115200 8N1 by default), and the terminal bridges straight to the port until Ctrl+] brings you back.
Built-in Telnet client: A native RFC 854 implementation that does not need the system telnet binary (macOS dropped it), aimed at lab equipment, console servers and legacy gear, with a one-key reachability probe.
SFTP transfers: Press o on a host to open a two-pane browser with remote and local trees side by side. Uploads and downloads show progress and can be cancelled, and search, mkdir and delete are all there.
Port forwarding: Local, remote and dynamic (SOCKS) forwards are set up through a form, with the history kept so a tunnel can be brought back quickly.
Password vault and touchless login: SSH passwords sit in a local AES-256-GCM encrypted vault with 0600 permissions, and auto-login works through OpenSSH’s own SSH_ASKPASS protocol rather than any third-party helper.
Works with your SSH setup: Full support for Include directives, ProxyJump and ProxyCommand bastions and arbitrary SSH options, with automatic backups and validation before changes — plus
ctty import --from tabby to bring Tabby profiles across.CLI and agent access: Every operation is available from the command line without the TUI and can emit JSON, and the repository ships an agent skill so Cursor, Claude Code or Codex can query hosts and run remote commands directly.
Small terminals and two languages: Forms and dialogs scroll with focus, so they stay usable down to 8-12 lines in tmux/Zellij splits or an editor’s embedded terminal; the interface comes in English and Simplified Chinese, switchable from the settings menu.
Open source project: The source code is hosted on GitHub, so developers can study the implementation, contribute, or customize it for their own needs.
