The desktop core is a sitting's work: a host list, saved keys, terminals in tabs, an SFTP pane and snippets, all over the ssh2 library, with an encrypted vault on your own disk. What stays hard is what Termius sells on top: native iOS and Android apps with hardware-backed keys and Face ID, and sync that merges edits from several devices. A web app on a home server reaches your phone, but typing into a browser terminal on glass is a poor substitute. Open-source Termix already covers much of this for free.
Before you buildTermius Starter is free, including commercial use, with a local vault, SSH and SFTP. If you only need a client on one computer, you may not need to pay or build anything.
Build me a self-hosted SSH workspace to replace Termius. Requirements:
- Node.js 22 + TypeScript: a Fastify server (`@fastify/websocket`) and a React UI built with Vite, with
`@xterm/xterm` and `@xterm/addon-fit` for the terminals. `npm start` serves http://localhost:4830.
- SSH: the `ssh2` package on the server opens the shell and the browser only sees a websocket stream.
Support password, private key (with passphrase) and ssh-agent auth, jump hosts (ProxyJump) and
keepalives. Verify host keys: store the fingerprint on first connect and refuse any change.
- Storage: better-sqlite3 in ./data/vault.db: hosts in nested folders with tags, saved credentials, keys
and snippets. Secrets are encrypted with AES-256-GCM under a key derived from one master passphrase
(`argon2`), and the server never writes secrets to its logs.
- Workspace: tabs and split panes, a quick-connect box (user@host:port), fuzzy search across hosts
(`fuse.js`), and snippets that paste or run with variables such as {{service}}.
- SFTP: a two-pane browser over the same ssh2 connection: upload and download through the browser, rename,
delete, chmod and drag-and-drop upload.
- Port forwarding: local and remote forwards per host, started and stopped from the UI.
- Import and export: read ~/.ssh/config (Host, HostName, User, Port, IdentityFile, ProxyJump) into hosts,
write hosts back out as an ssh_config file, and export the vault as an encrypted JSON file.
- Single user, bound to 127.0.0.1 unless HOST is set in .env. No accounts, no telemetry, local-first.
- Out of scope: team vaults, session recording, a native phone app, Mosh, hardware keys.
- README: reaching it from a phone through a tunnel with HTTPS, and a warning that anyone who can open
the page and knows the passphrase gets every saved credential.Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Termius.
Extend the SSH workspace in this folder for phones. Requirements: - Make the UI an installable PWA: manifest, icons and a service worker that caches only the app shell, never terminal data. - Add a key bar above the keyboard with Esc, Tab, Ctrl, Alt, the arrow keys, |, ~ and /, where Ctrl and Alt latch for one keypress. - Pinch to change the terminal font size; keep it between 10 and 22 px and remember it. - Reconnect the websocket after the phone sleeps and reattach to the same shell if it is still alive on the server, using a session id kept in memory for 10 minutes. - Update the README with how to serve it over HTTPS.
Add session logs to the SSH workspace in this folder. Requirements: - Per host, an opt-in switch records terminal output and the commands typed to a session table with start and end times. - Mask any input typed while the terminal reports echo off, so passwords never reach the log. - Search across sessions with SQLite FTS5, showing the host, the date and a snippet around each match; open a session as read-only replay text. - Delete a session, or all sessions older than N days from settings. - Update the README with what is stored and where.
Add vault sync to the SSH workspace in this folder. Requirements: - Store every change to hosts, credentials and snippets as an encrypted, timestamped record in ./data/sync/<device-id>/ as one file per change. - When the folder is shared by Syncthing or any file sync, each instance reads the other devices' records and merges them with last-write-wins per field, showing a conflict list for review. - Records are encrypted with the key derived from the master passphrase; show a clear error when a record can't be decrypted. - A page that lists devices and the last change seen from each. - Update the README.
A phone and a laptop that share the same hosts, keys and snippets without any setup is worth $10 a month to people who log into servers daily. Teams add shared vaults and access control on top, which is the part a home-grown tool rarely gets right.
Estimate · Runs on your own computer; a $5 VPS or a tunnel only matters if you want to open it from a phone. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Starter | $0/user | $0/user | Local vault, SSH and SFTP, AI-powered autocomplete, port forwarding. The page states no host or device limits. |
| Pro | — | $10/user | Everything in Starter plus a personal cloud vault, sync across mobile and desktop, session logs and snippets automation. |
| Team | — | $20 | Everything in Pro plus one team vault, real-time collaboration, shared session logs and consolidated billing. |
| Business | — | $30 | Everything in Team plus multiple team vaults and granular vault access control; SAML SSO is an add-on. |
| Enterprise | custom | — | Everything in Business plus SAML SSO, a SOC 2 Type II report, custom billing, priority support, a dedicated manager and migration help. |
Starter is free, including for commercial use: a local vault, SSH and SFTP, AI-powered autocomplete and port forwarding.
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: Native iOS and Android apps, with biometric and Secure Enclave keys, Sync that merges edits made on several devices.
About $10 a month on the Pro plan, $120 a year (checked 2026-10-19).
Native iOS and Android apps, with biometric and Secure Enclave keys; Sync that merges edits made on several devices; Team vaults, shared logs and role-based access; Session logs that record what was run on each host; AI-powered autocomplete in the terminal. If any of those matter to you, keep paying.
Yes: Termix (open source), Tabby (open source), Wave Terminal (open source).