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 · 日本語 · العربية