Back to feed
2026 • Engineering Work

Termuna: One Session, Every Screen

A fast, native terminal for Linux, macOS, and Windows whose live session keeps running on your machine and continues on the web or your phone, encrypted end to end. Born from maintaining a fleet of machines and Kubernetes clusters: whatever screen is closest becomes the terminal. The local terminal is free forever; cloud continuity is the product.

#Rust #Astro #React + TypeScript #Flutter #SQLite #xterm.js #X25519 + Argon2id E2E crypto #CBOR wire protocol #Stripe #GitHub Actions
Concept & Architecture

Termuna started as my own tool. I maintain a fleet of machines and Kubernetes clusters, and I wanted the session I left on my desk to be reachable from whatever device is in my hand. It grew into a full product, built in the open, milestone by milestone, with performance budgets enforced in CI.

What it is:

  • Native terminal: GPU-rendered, tabs and nested splits, first-class SSH with a connection vault, remappable hotkeys, indexed scrollback search.
  • Cloud continuity: the live session mirrors to the relay as it happens and resumes on the web or a phone exactly where it stopped, including the full split layout after a reboot.
  • End-to-end encrypted: session keys are generated on your devices and never leave them unwrapped; the relay stores and forwards only ciphertext (X25519, Argon2id, sealed CBOR frames). The server cannot read a single session.
  • Web dashboard and viewer: an Astro marketing site with React islands; the session viewer decrypts in the browser and renders one xterm.js per pane, with typing back into the live session.
  • Teams: roles and invitations, shared SSH vaults wrapped per member, per-seat Stripe billing.
  • Mobile: a native Flutter viewer for Android and iOS attaches to the relay like any other screen.

The stack spans a Rust engine and relay (a single binary with SQLite behind nginx), the Astro/React web, and the Flutter mobile client, all deployed by CI on every push.

© 2026 Kristijan Soldo