Skip to content

Ternimal v1.1.0 — remote layer, soft keyboard, open-source readiness

Choose a tag to compare

@eathard eathard released this 09 Sep 04:18
· 81 commits to main since this release

Ternimal v1.1.0 — first stable release

A multi-tab terminal that shares its sessions with any browser on your LAN:
scan a QR code and your phone is attached to the same tabs the desktop
window shows — sessions survive every disconnect.

Built for the AI-agent era: run Claude Code (or any CLI) on the desktop,
supervise it from the couch.

Highlights

  • Scan-to-sign-in — per-launch 192-bit access token carried in the URL
    fragment (never sent to the server, never logged); tray shows the QR code;
    rotating the token kills all sessions instantly
  • Shared sessions, zero client install — local Electron window and LAN
    browsers attach to the same PTY sessions over HTTPS; ring-buffer replay
    rehydrates scrollback on re-attach
  • Mobile soft keyboard — draggable floating bar: sticky Ctrl/Alt/Shift
    (arbitrary combos, one-shot), Esc/Tab, ↑↓←→ following the terminal's
    cursor mode — Ctrl+C, readline meta-jumps and vim navigation from a phone
  • Privacy-first networking — self-signed TLS with SHA-256 fingerprint on
    both the sign-in page and the tray (anti-MITM), LAN/VPN only by design,
    per-IP rate limiting, hardened cookies
  • i18n zh/en following system locale (TERNIMAL_LOCALE override)

Install (Linux)

  • AppImage Ternimal-1.1.0.AppImage — chmod +x and run
  • deb ternimal_1.1.0_amd64.deb — sudo apt install ./ternimal_1.1.0_amd64.deb

From source:

npm install --include=dev && npm run rebuild && npm run dev

Security note

Ternimal serves a shell over the network — LAN/VPN only, do not
port-forward it to the internet. Sessions/auth are in-memory; restarting
revokes everything.

Verification

  • npm run verify umbrella: 53/53 (ring buffer, registry, auth+cert+config,
    WS protocol, reconnect, soft-keys + i18n)
  • smoke-e2e (real Electron + real bash + TLS): ALL PASS
  • browser-e2e (real Chrome): 21/21 — login → tabs → typing → real Ctrl+C
    interrupt → arrow navigation → drag persistence → reload semantics