Security & transparency.
Termal OS holds the keys to your servers, so trust is the product. Here is exactly what it does with your credentials and your data - and what you can verify for yourself.
The model, in one line
Local-first and agentless. Termal OS is a desktop app that runs on your machine and connects to your servers over plain SSH. There is no cloud in the middle: your server credentials are encrypted locally and never sent to us, and nothing is installed on your servers. A termalos.com account is used only to issue and validate your license.
Your credentials never leave your machine
SSH passwords, private keys and passphrases - and your AI provider's API key - are encrypted at rest with AES-256-GCM, in a local SQLite database that lives on your computer. None of it is stored on, or transmitted to, our servers.
The encryption key works in one of two modes:
- Default (device key). A random 256-bit key is generated the first time you launch the app, written to your user-data folder with owner-only permissions, and never transmitted. It encrypts the credential store on that machine.
- Optional master password. Turn it on and the key is derived from your password with scrypt and held in memory only - it never touches the disk. The app starts locked and stays locked until you unlock it.
In the default mode, the device key sits on the same machine as the database (protected by file permissions) - which guards against someone reading the database file alone, not against an attacker who already controls your OS session. The master-password mode closes that case: with no key at rest, the store is unreadable without your password.
What actually leaves your machine
Toward our infrastructure, the app makes exactly three kinds of request - and nothing else:
- Account sign-in - your email and password, sent once to log in.
- License refresh - roughly once a day: a session token plus an install id, your OS name and the app version. The server returns a cryptographically signed license token (RSA-2048 / SHA-256), which the app can verify offline for up to 14 days.
- Version check - a plain read of a small version manifest on our CDN, to tell you when a new build ships. No personal data is sent.
The install id is a random identifier stored locally - not a hardware fingerprint of your machine. Everything else the app talks to is yours: your servers (over SSH) and, if you enable the copilot, your own AI provider.
The AI copilot: your key, your provider
The copilot is off by default. When you enable it, your question and a compact snapshot of the server go straight to the AI provider you chose (Anthropic, or any OpenAI-compatible endpoint), authenticated with your own API key. We are never in the middle and resell nothing.
So you know exactly what is shared, that snapshot contains: the OS and detected runtimes, live metrics, the names of hosted sites, and any active alerts - plus your recent messages in that conversation. It does not include your credentials.
And nothing runs on its own: the copilot proposes commands, each with a Run button, and a command executes over SSH only when you click it. The system prompt steers it toward read-only diagnostics and makes it flag any destructive command first.
Agentless by design
Termal OS installs nothing on your servers - no agent, no daemon, no background process, no cron job. Monitoring works by running ordinary read-only shell commands over SSH (the same ones you would type: ps, df, free...). The only time anything is written to a server is a file transfer you start yourself in the file manager. No root is required - the app works with your own SSH user's permissions.
The local server is not an open door
Under the hood the app runs a small server on your own machine. It is guarded by a secret that is regenerated on every launch and handed only to the desktop app: any request that lacks it - from another browser, or another process on your computer - is refused. The local server is for the app, not for the network.
Updates and code-signing
The app tells you in-app when a new version is available, and you install it when it suits you. There are no silent updates.
Being candid: the Windows and macOS builds are not code-signed yet - and because of that, automatic binary updates are deliberately disabled on those platforms. Pushing an unsigned auto-update to an app that holds your SSH credentials is a risk we will not take; you download signed-or-not builds knowingly, from this site, and update on your own action. On Linux, the Snap is reviewed by the Snap Store and runs sandboxed.
Closed source, honestly
Termal OS is a paid, proprietary product, so the app itself is closed source - we are not going to pretend otherwise. What that means, plainly:
- What is open: the Termal Studio SDK is MIT-licensed - see termalos-sdk.
- What you can verify anyway: put the app behind a proxy and watch its traffic - you will see only the calls listed above. Check your servers - you will find no agent. It is plain SSH, and it needs no root.
Trust in a closed app is earned by behaviour you can observe, not by a promise. This page lists the behaviour; the rest is checkable.
Report a security issue
Found something? Please report it privately, not in a public issue. See our security policy, or write to hello@termalos.com. Reports are welcome and answered.