Liu Terminal sessions. Full SSH client with file browser, SFTP, port forwarding, Mosh, and known-hosts TOFU.
Local PTYs run AI agents. The same Session abstraction also backs SSH, SFTP, Mosh, Telnet and serial, kept linked because plenty of people still need them, even though the product no longer headlines remote shells.
Every tab and split leaf in Liu is a session. Most of them are local PTYs running your login shell: that's the substrate the AI agents (Claude, Codex, Copilot, …) actually run in. Sessions can also be remote: SSH, SFTP, Mosh, Telnet, serial. They share one abstraction, one rendering pipeline, one scrollback.
New tabs (⌘ T) spawn a local PTY in the parent tab's cwd. When the inherited cwd is /, Liu silently chdir($HOME) in the child before exec so your prompt opens somewhere useful.
The shell's working directory is tracked via OSC 7. Plug printf '\\e]7;file://%s%s\\e\\\\' "$HOSTNAME" "$PWD" into PROMPT_COMMAND and Liu's sidebar, split-inheritance, and Agent History cwd-scope all light up.
libssh2-backed. Password, public-key, agent and keyboard-interactive auth. ~/.ssh/config is honoured for Host, Match, Include, ProxyJump, IdentityFile and related directives. Liu also multiplexes connections internally, but ControlMaster / GSSAPI lines from ssh config are not parsed into live sessions yet.
First connection prompts with the SHA-256 fingerprint plus a randomart preview. Accepted entries land in ~/.config/Liu/known_hosts in OpenSSH-compatible format. A changed host key blocks input until you re-acknowledge.
Each host carries a list of forward rules (local, remote and dynamic (SOCKS)) applied on connect. They show in the status bar with a green dot when bound and a red dot if the bind failed.
{ "type": "local", "from": "8080", "to": "localhost:80" }
{ "type": "remote", "from": "9000", "to": "127.0.0.1:9000" }
{ "type": "dynamic", "from": "1080" }
Türkçe · 简体中文 · 한국어 · Español · Deutsch · Italiano · Français · 日本語 · العربية