termal.in

Docs & Help

Everything you need to get productive with Termalin — the fast SSH client for you and your agents. New here? Download it and start with the first two sections.

Onboard your agents to Termalin

Copy a ready-made prompt that teaches your AI agent how to reach your servers through Termalin — safely, never holding your keys, with every action audited. It covers both paths: AI apps and remote agents reaching your servers through Connectors with no desktop app running, or an agent on your machine driving the desktop app. Paste it into Claude, ChatGPT, Claude Code, Codex, Cursor or any MCP-capable agent.

Install & first run

Grab the installer for your OS from the download page — Windows .exe, macOS .dmg or Linux .AppImage (x86_64). On Windows you can also install from the Microsoft Store or with winget install Termalin.Termalin; on macOS with Homebrew, brew install --cask termalinapp/termalin/termalin; on Windows with Scoop, scoop bucket add termalin https://github.com/termalinapp/scoop-termalin then scoop install termalin. The Windows build installs per-user (no admin prompt) into your local app folder, the same way Chrome or VS Code does, so auto-updates stay silent.

First launch. The macOS app is signed and notarized by Apple, so it opens normally. On Windows, the Microsoft Store build is signed and installs with no warning; the standalone .exe isn't code-signed yet, so SmartScreen may say "unknown publisher" — click More info → Run anyway. On Linux, chmod +x the AppImage.

On first launch you'll land on an empty hosts list. Termalin runs on Windows, macOS and Linux, has native iPhone, iPad and Apple Watch apps, and there's a browser cabinet for Android and anything else — a Pro feature, with a free browser demo to try it.

Your first connection

  1. Click Add host and fill in the address, port and username.
  2. Pick an auth method: password, a private key, or the built-in key agent. For a server you reach through a bastion, set a jump host on the form; for one behind a firewall or NAT, pick the Connector type and run one command on it (see Connectors).
  3. Save, then click the host to open a terminal tab. On first connect Termalin pins the server's host key (TOFU) so future connections detect tampering.

Every open host is a browser-style tab; sessions stay alive when you switch between them. Settings → Terminal → "Restore Sessions" (on by default) brings your tabs back after a restart — hosts that authenticate without a prompt reconnect on their own, the rest wait for a click.

Hosts & folders

A host can be SSH, SFTP, FTP, Telnet, Serial/COM, a database, S3, an RDP or VNC remote desktop, a Local shell on this computer, or a Connector — pick the type on the host form and it opens in the same tabbed workspace. (Serial and Local are desktop-only; both are hidden on phones.) Organise hosts into folders (drag & drop), give them tags and colours, and reach them from the sidebar inside any terminal. Reusable commands live in Snippets; run one into the focused session with a click, or flip the broadcast toggle to run it on every connected host at once.

Import & export. From the toolbar above the hosts list, bring hosts in from an ~/.ssh/config, a CSV, a Termalin JSON backup, PuTTY (read saved sessions on Windows in one click, or paste a .reg export) or MobaXterm (a .mxtsessions export or MobaXterm.ini bookmarks, folders and all). Passwords are never imported — re-enter them or use a key. Export any time to a Termalin backup (JSON), an SSH config or a CSV. No lock-in, either direction.

Recently deleted. Deleting a host moves it to a recycle bin — restore it for up to 30 days from the trash icon in the hosts toolbar (desktop and the browser cabinet). Your encrypted cloud vault is also versioned server-side, so an accidental overwrite can be rolled back.

Tunnels & port forwarding

Save port forwards per host — local (-L), remote (-R) and SOCKS (dynamic) — and reconnect them on demand. Create and manage them in the app: right-click a host → Tunnels. The browser cabinet shows your saved tunnels read-only. An agent can open a forward itself with tunnel_open on the local MCP server.

Connectors

A Connector is a small agent you install with one command on a Linux, macOS or Windows server. It dials out to Termalin, so there's no inbound port to open and no SSH key on your device — it authenticates with a short-lived SSH certificate. A Connector is what lets the web terminal, remote desktops, AI apps and API keys, server monitoring and backups reach a server. Full guide on the Connector page.

  • Add one — in the cabinet, Add Connector (or Hosts → + → Connector); on the desktop, the host form's Connector type; or hit "Make it available" when you open a plain server in the web terminal. Get install command gives a one-time line under the tabs Linux / macOS and Windows — single-use, good for an hour:
    curl -fsSL https://termal.in/i/<token> | sudo sh      # Linux / macOS
    irm https://termal.in/i/<token>.ps1 | iex            # Windows PowerShell
    On Windows the installer asks for administrator rights itself (a UAC prompt).
  • Platforms — Linux (x86_64 and aarch64; a termalin-agent.service systemd unit, or termalin-agent run where there's no systemd), macOS (Apple Silicon or Intel; Remote Login is switched on and a launchd daemon installed) and Windows (x64 or ARM64; Windows 10/11 and Windows Server — it adds the built-in OpenSSH Server if missing, keeps sshd on automatic start, runs as the TermalinAgent service and gives SSH sessions PowerShell; when it added OpenSSH, sshd listens on the machine only and port 22 stays closed — see Windows servers). Remove a Connector with termalin-agent uninstall on macOS, or & "$env:ProgramFiles\Termalin\termalin-agent.exe" uninstall on Windows.
  • Settings — a Name (what AI apps see too), a Login user (AI apps use root if it's empty), an AI access switch, and a Note for AI the apps read before working on that server.
Connectors are a Pro feature; Free has none. There's no cap on how many you add.

Windows servers

Run the Windows install line (irm https://termal.in/i/<token>.ps1 | iex, then approve the UAC prompt) on Windows 10/11 or Windows Server, and the Connector sets the machine up:

  • installs the built-in OpenSSH Server if it's missing and keeps sshd on automatic start; an OpenSSH Server that was already there is left as it was;
  • makes PowerShell the SSH login shell;
  • when it added OpenSSH, sshd listens on the machine itself only and port 22 stays closed — the firewall rule for it stays off;
  • runs as the TermalinAgent Windows service. Remove it later with & "$env:ProgramFiles\Termalin\termalin-agent.exe" uninstall.

You then get a PowerShell terminal in the browser cabinet or the app, an SFTP file browser, an RDP desktop to the machine with the Files button, and monitoring and alerts. For AI apps, ssh_exec and the background job tools run in PowerShell on a Windows server; the hosted SFTP and database tools are for Linux servers for now. Full setup on Windows Server over SSH.

Remote desktops (RDP / VNC)

A Windows desktop over RDP, or any VNC desktop, opens in a tab in the desktop app or in the web cabinet — through the server's Connector (no inbound port, same path as the web terminal) or directly, when the desktop is reachable from the internet. In the cabinet, right-click a Connector or a host → Remote desktop…; in the app, add a host of type RDP or VNC. Either way you choose Through a Connector (an address on the Connector's network; an empty address or 127.0.0.1 is the machine the Connector runs on) or Direct (the desktop's public address). Then protocol, port, and the VNC password or the Windows user, password and domain. Saved as a host, the Connect choice is Directly (the desktop has a public address) or Through Connector {name}; the desktop app needs 0.1.48 or newer.

  • Reach. RDP on port 3389, VNC on 5900–5999. Through a Connector: private addresses only (the Connector's own machine, or 10.x / 192.168.x / 172.16–31.x on its network). Direct: public addresses only — termal.in connects to the desktop itself, so the port must be open to the internet; a computer on a private network needs a Connector. 4 open desktops at once on Pro, 10 on Team; a session idle for 30 minutes closes.
  • In the viewer. Tabs for several desktops, Ctrl+Alt+Del, fit to window or actual size, and hide the pane to come back later. Clipboard: in the browser you paste your clipboard into the desktop (paste in only); the desktop app syncs it both ways, with a per-host switch.
  • Files beside the desktop. A desktop opened through a Connector on the Connector's own machine (empty address, 127.0.0.1, localhost or ::1) gets a Files button that browses that machine's files through the same Connector, no key — docked on the right in the cabinet, beside the desktop in the app. Windows drive paths work (C:\Users…). Direct desktops and other addresses get no button.
  • Windows settings to check. Remote Desktop enabled, the user in the Remote Desktop Users group, and Network Level Authentication on (the default) — with it the password is never sent in the clear. A domain account signed in with Kerberos cannot work through the relay: use a local account, or NTLM.
  • Brakes against guessing. Three failed sign-ins in a row to the same desktop pause it for 30 minutes; each later pause doubles, up to a day, and the count is forgotten after a quiet day. Direct mode allows at most 30 new sessions and 5 different addresses an hour.
  • What passes where. The RDP stream is relayed by termal.in in memory and nothing of it is stored; with NLA the password is never in the clear; the RDP certificate is pinned on first use, and a change stops the session with both fingerprints and a trust button. The VNC password goes straight to the server; direct VNC is not encrypted between termal.in and the server — prefer a Connector for VNC. A direct session from the desktop app doesn't touch our servers at all. Sessions show in the gateway log like web-terminal sessions.
Direct from the desktop app is free — your own computer dials the desktop and our servers aren't involved. Opening a desktop through a Connector, and anything in the browser cabinet, needs a paid plan (Pro, Team or the trial). On the Connector path the app runs the encrypted session itself; termal.in only passes bytes along. Agent tools for desktops are on the list.

SSH keys & the key agent

Generate Ed25519 or RSA (2048 or 4096-bit) keys, or import existing ones — including ECDSA, which is import-only (passphrase-protected keys are supported). View the public key and fingerprint any time from the Keys screen.

Termalin ships its own SSH key agent. Unlock a key once and it authenticates your sessions — and your agents — without re-typing the passphrase. Keys are never written back to disk in plaintext, and a per-key timeout re-locks them after a while. Settings → Security → "Agent Keys" chooses which keys the agent may hand to an AI agent.

Under the hood: the agent speaks the standard SSH agent protocol — a named pipe (\\.\pipe\termalin-ssh-agent) on Windows, and a Unix socket in a private per-user directory on macOS and Linux — so other tools that speak the protocol can use it too.

Master password & locks

Set a master password to encrypt your vault. It's verified with PBKDF2-HMAC-SHA256 (600,000 iterations) and used to derive the key that seals everything before sync. There is no reset by email: if you set up a recovery code (Settings → Security → "Recovery code"), you can use it on the lock screen or "Forgot password" to choose a new master password. Setting one needs cloud sync, because the code is stored on your Termalin account. Without a recovery code, lost means lost.

  • Auto-lock — lock after a period of inactivity (Settings → Security).
  • Lock on minimize — lock whenever the window is hidden.
  • Unlock with biometrics — Touch ID on macOS, Windows Hello on Windows, the platform equivalent elsewhere.
  • Remember master password — optional, off by default, stored in your OS keystore (Windows DPAPI, macOS Keychain or Linux Secret Service) and bound to your OS user. It's set by a number of days, and anyone signed into your OS account can then open Termalin.
  • Also lock SSH keys — while locked, stop handing keys to agents (MCP).
  • Pause AI agents while locked — refuse agents' requests until you unlock.

Locking shows an overlay over the running app — your sessions stay connected underneath, so unlocking picks up exactly where you left off. By default, agents you connected keep working behind the lock; turn on "Pause AI agents while locked" to stop them until you're back.

Sync & your account

Create an account to sync across devices. Your hosts, keys, snippets and recordings are encrypted on the device with your master-password key before upload — the server only ever stores encrypted blobs. See how security works for the full model.

From Settings → Account you manage devices, verify your email, change your account password or delete your account, see Activity & devices and your synced Command history (the commands you ran, by host — 90 days on Pro, a year on Team), and Refer a friend. There's also a full browser cabinet — a real terminal on your hosts plus SFTP, FTP and S3 file browsers, snippets and recording replay, all from any device and adapting to a phone. The cabinet also adds two-factor sign-in (TOTP + backup codes), passkeys, and sign-in with GitHub, Google or Apple, and keeps an Activity log of who did what. Right-click the web terminal for "Copy screen" or "Select text…" (the last 2,000 lines, with Copy selected / Copy all). Recordings are decrypted client-side, so the server never sees plaintext.

The app works fully offline, and the full local desktop app is free forever. Sync, cloud recordings, the web cabinet and web terminal, Connectors, the hosted MCP and API keys, server monitoring, encrypted backups and remote desktops through a Connector or the browser are Pro — there's a free browser demo to try the cabinet. Opening a remote desktop directly from the desktop app is free.

Recording & replay

Termalin can record sessions (asciicast format) and replay them with a scrubbable timeline. Recordings capture terminal output and event markers — never raw keystrokes — so a password typed at a hidden prompt (sudo and the like) is never echoed and never lands in a recording. Anything the terminal prints is part of the tape, so output that displays a secret still shows up.

  • Toggle recording globally, or per host (Settings → Terminal, or the host form).
  • The timeline is marked: green for agent commands, amber for your commands and system events. Click a marker to jump.
  • Set a retention window so old recordings prune automatically.

Recordings sync to your account on Pro (kept 90 days) and Team (kept a year), sharing one cloud storage pool with backups — 25 GB on Pro, 100 GB on Team; when recordings alone fill it the oldest go first. Free keeps recordings locally. "Summarize with AI" on a recording hands it to your AI assistant — it's decrypted on your device only when you ask.

Backups

Encrypted backups of folders on a Linux server that has a Connector, taken by Termalin's cloud on a schedule — nothing to install on the server. In the cabinet (Account → Backups) or in the desktop app (Settings → Account → Backups; a job's key made in one opens in the other): + Add backup: the server, the paths (one per line, absolute), optional exclude patterns, a schedule (hourly, daily at an hour UTC — 03:00 by default, weekly on Sunday, or manual), how many copies to keep (1–365, default 7), a Read speed limit, MB/s (20 by default, 0 = no limit), and where to store them. File backups run on Linux, Windows and macOS servers; database backups (below) on Linux and macOS.

  • Light on the server. tar runs there at the lowest CPU and disk priority (nice and ionice), and the archive is read back at the capped speed above.
  • Databases, not just files. A job can also dump PostgreSQL and MySQL/MariaDB — on the server or inside a Docker container, one database or all — into the same encrypted archive, with a README inside on how to restore. No database password is kept at Termalin: it uses the server's own local trust (a credentials file like .pgpass or my.cnf, or the container's own settings). Linux and macOS servers; a dump needs free disk on the server about its own size while it runs.
  • Encrypted before it is stored. Adding a backup creates a key pair in your browser or the app; the public half goes with the job, the private half is encrypted with your master password (a key made in one client opens the other's archives). Termalin's storage, an S3 bucket and your own server hold ciphertext only. Download gives you the raw archive; Decrypt & save opens it and hands you a .tar.gz (needs your master password). While an archive is being encrypted the stream passes through our backend in memory — the same trust model as the web terminal.
  • Where it goes. Three destinations under Your storage:
    • Termalin storage — one pool with your recordings, 25 GB on Pro and 100 GB on Team; recordings keep priority, so a backup that would not fit does not start.
    • + Add S3 bucket — your own S3-compatible bucket (AWS, Backblaze B2, Cloudflare R2, Hetzner, MinIO…), added with a test write; doesn't count against the pool.
    • + Add my server — My server (via Connector): over SFTP to another of your servers that has a Connector (a second VPS, a home NAS). Default folder termalin-backups in the sign-in user's home, or a folder you give (relative to the home folder, or an absolute path; created if missing). Doesn't count against the pool.
    Archive lists show where each file lives — the server and full path, or the bucket and key.
  • Rotation. The newest keep copies of a job stay; older ones are removed after each run.
  • When it fails. A scheduled run that fails reaches you like an alert (email, push, Telegram, webhook). Run now shows the error directly.
  • For agents. Over the hosted MCP, backup_create takes a backup before a risky change, backup_list checks the last ones, and backup_job_create drafts a new job for you to confirm in the cabinet — for full-access connections and keys.
Limits and storage. Backup jobs per account: 20 on Pro, 100 on Team. Largest single archive: 5 GB on Pro, 20 GB on Team. Need more room? Extra storage adds +100 GB for $2.99/mo or +1 TB for $19.99/mo from your balance (paid plans; shared by recordings and backups). Restore: decrypt & save, then copy the .tar.gz to the server over SFTP and unpack it — a one-click restore is on the list.

Watch grid

Toggle the grid icon in the tab bar to mirror every open session at once, side by side. Tiles are live and read-only until you tap one to select it — the selected tile takes your keystrokes while the rest stay read-only. Sessions an agent is driving are highlighted. Type into the "send to all sessions" bar to run a command across every connected host at once.

SFTP & the editor

Open the SFTP browser from any connected session to move files around. It's an all-in-one viewer:

  • Built-in editor with syntax highlighting, line numbers and find & replace.
  • Viewers for images, video & audio, PDF, SVG, Markdown (rendered), CSV (as a table) and archives (browse and extract).
  • Large media streams over a range request instead of loading into memory.

Database client

Termalin is a database client too — 13 engines in the same host picker: PostgreSQL, MySQL/MariaDB, SQLite, ClickHouse, MongoDB/DocumentDB, Redis, Elasticsearch/OpenSearch, RabbitMQ, Cassandra/ScyllaDB, Neo4j, InfluxDB, SQL Server and Cloudflare D1. Connect directly, through an SSH host (Termalin opens the port forward for you), or through a Connector to a database with no inbound port.

Pick a TLS mode (prefer, require or disable), browse tables and run queries with a results grid. Agents get read-only access by default through the data_* MCP tools. More on the database client page.

Server metrics & alerts

Every server with a Connector is monitored, in the web cabinet and in the desktop app (Settings → Account → Monitoring: an overview of every Connector server, collection switches, 1h / 24h / 7d charts, and the alert list and settings; the rarer panels open the web cabinet). Once a minute Termalin reads a few numbers over the Connector's existing connection — on Linux from /proc, df, ps and the like; on Windows through CIM/WMI (CPU, memory, page file, fixed drives, network, disk traffic, processes, uptime); on macOS from the system's own tools (load, CPU, memory, swap, volumes, network, processes, uptime). Nothing extra is installed, and containers, failed systemd services and PSI pressure are read on Linux only. Open the web cabinet → Server metrics for the list of servers, then a server for its dashboards and tables, over any range from 15 minutes to your plan's history (90 days on Pro, two years on Team). Part of Pro and Team. Overview →

  • Switches — monitoring is on by default for every Connector. There is one switch for all servers and one for each server. Switching it off erases what was collected for that server, and alerts only work for servers with monitoring on.
  • Alerts work with nothing set up: every monitored server is watched with default thresholds. Open Alert settings to change them.
  • Where to send — email (the default), push to the iOS app, Telegram (one tap to connect the bot), or a webhook that Slack and Discord accept as is. Webhook requests are signed (HMAC-SHA256).
  • Thresholds — the defaults (disk at 90% and 95%, a certificate 14 and 3 days before expiry, and the rest) can be changed.
  • Tell me when a problem clears — a second message when the problem is over.
  • Repeat — tell you again each time the same problem comes back, and remind you once a day while a critical one stays open. With repeat off, a problem that comes back the same day is not sent again unless it is critical and lasts.
  • Mute — on an alert, mute that kind of alert on that server (for a day, or until you unmute it); on a server's page, Mute alerts for the whole server. Muted alerts stay in the list; only the messages stop.
  • Send a test / Pause all alerts — fire a test notification to each channel, or pause every alert while you work. On the desktop, Settings → Security → "Server alerts" pings this device when one of your Connectors drops off or comes back.

The most recent two weeks are kept minute-by-minute; older history rolls into 5-minute averages (up to three months) and then hourly averages, with each interval's peak preserved. AI apps read the same numbers through server_metrics and open alerts through alerts_list. No Connector yet? Add one from Hosts → + → Connector in the cabinet.

These numbers are not end-to-end encrypted — the service has to read them to draw charts and raise alerts. What is read is listed under "Server metrics and alerts" in the privacy policy.

AI assistant

Termalin has a built-in AI assistant (Settings → Security → "AI assistant") for session summaries, explanations of what you're looking at, turning a request into a command, and describing a Connector's server. It's optional and stays off until you set a provider.

  • Summarize with AI on a recording.
  • Explain with AI on selected terminal output — it returns what it means, the likely cause and what to do, plus a "Check:" block of read-only commands.
  • Ask AI for a command from a plain-language request, and describe a Connector's server.

Providers. Use Termalin's built-in (Anthropic) allowance — 400 requests a month on Pro, 1,000 on Team, 40 on the trial (plus 80 a day), none on Free — or plug in your own Anthropic key (no allowance, any plan). Or point it at your own endpoint: any OpenAI-compatible API (OpenAI, Gemini, OpenRouter, Groq, DeepSeek) or a local model through Ollama or LM Studio, in which case requests go straight from your device and Termalin's server never sees them.

On the built-in path the text goes through Termalin's server to Anthropic and is not stored or logged — only request counts are kept. Recordings are decrypted on your device only when you ask. Free has no bundled allowance, so it works with your own key or a local model.

AI apps & hosted MCP

Chat apps and remote agents reach your servers through the hosted MCP server, with no desktop app running. They reach only servers that run a Connector — a host saved only in the app is invisible here — and this path is Pro (or the trial). There are 23 tools; see the MCP overview or the full tool reference.

Connect

  • claude.ai and ChatGPT — add Termalin from their connector / apps directory and sign in with your Termalin account (OAuth 2.1 + PKCE). Then enable Termalin in the conversation's tools (+) menu.
  • Claude Code — claude mcp add --transport http termalin https://termal.in/mcp
  • Codex — codex mcp add termalin --url https://termal.in/mcp
  • Cursor — add "url": "https://termal.in/mcp" under mcpServers in mcp.json.
  • Anything without OAuth — create an API key in the cabinet ("API keys & MCP") and point the client at https://termal.in/mcp with Authorization: Bearer tk_live_…. Up to 10 keys on Pro, 25 on Team; a key needs a verified email (7-day grace).

Termalin for Chrome. A browser extension adds a Run on server button to code blocks on ChatGPT, Claude, GitHub and Stack Overflow — pick a server, check the command, run, and send the output back into the chat. A side panel shows your servers, open alerts and metrics with a command box; the toolbar badge counts open alerts. It signs in like any AI app and follows the same command rules, in nine languages. Install it from the Chrome Web Store.

Control

  • Each AI-app connection and each API key carries a command rule: Full access, Only listed commands, or Read-only — no commands or file writes. In the key form you also scope which servers it reaches and set an expiry (In 90 days by default, 30 days, 1 year, or Never). A Test key button and per-client setup snippets (Claude Code, Cursor, VS Code, Claude Desktop, Manus and others, curl) appear after you create one.
  • A server is reachable only while its Connector's AI access is on; its Note for AI rides along as ownerNote in hosts_list.
  • Every action is written to the cabinet's audit log ("Ran a command"), and — if you turn on "Keep command output" — to a log sealed with your master password. Disconnecting an app cuts it off immediately.
  • Runs are rate-limited per account (about 60 a minute) and each call is time-boxed (60 seconds by default, up to 300 with timeout; some chat apps stop waiting sooner); use job_start for anything longer.

Tools at a glance

hosts_list, ssh_exec, ssh_exec_many (up to 10 servers), job_start / job_status / job_stop / job_list, server_metrics, alerts_list, backup_create / backup_list / backup_job_create, sftp_list / sftp_read / sftp_write (text, 512 KB), data_tables / data_schema / data_query (read-only unless the key or connection grants writes), and generate_password.

Agents & MCP — the local server

On your own machine, agents reach your hosts through a real MCP server bundled with the app, using your key agent — so agents never touch your keys — while you watch and review every move. The local server has 22 tools; the hosted endpoint has 23, and the two sets differ. For chat apps and remote agents with no app running, use AI apps & hosted MCP instead.

Point your agent's MCP client at the bundled termalin-mcp binary. With Claude Code, for example:

claude mcp add termalin -- <path>/termalin-mcp

It reaches the hosts you tick in Settings → Security → "Agent Access (MCP)" — there's a "Connect an assistant" button with Copy command / Run it for me for Claude Code and a ready config for Claude Desktop, Cursor, Windsurf, Cline and more. Each host (written with agent-only auth, no passwords on disk) carries an agent access level — full, an allowlist of commands, or blocked. The tools cover the whole workflow: list hosts, run one-off commands, open and reuse persistent SSH sessions, read and write files over SFTP, open port forwards, and — while the app is running with the consent toggles on — open live terminal tabs, step into a session you already have open, run a shell on this computer, or query your saved database connections. The local server is free on every plan.

The two paths reach different hosts: the local server works the inventory you export from the app; the hosted endpoint works your Connector servers. Pick whichever matches where your agent runs.

Staying in control

  • On your machine, every agent toggle in Settings → Security is off until you turn it on — "Agent in Terminal", "Let agents run commands", "Let agents use the local terminal" and "Let agents query your databases" are each separate — and only the hosts you tick are exported.
  • On the hosted side, you choose by connecting an AI app or creating a key; a server's AI access is on by default, so switch it off on any Connector you don't want reached.
  • Local agent commands are marked in the recording (green) and visible live in the watch grid. Hosted commands don't run in a desktop tab — they land in the cabinet audit log and, if you turn it on, the "Keep command output" log.
  • Access is granular — per host on the desktop (full / allowlist / blocked), and per AI-app connection or API key on the hosted side (Full / Only listed commands / Read-only).
  • Hosted runs are rate-limited per account (about 60 a minute) and time-boxed (60 s a call by default, up to 300 s with timeout); use job_start for longer work.

Plans at a glance

The whole local desktop app is free forever — SSH/SFTP, the database client, RDP and VNC desktops opened directly from the app, recording and replay, the watch grid, and the local MCP server (an agent stepping into a session you already have open costs nothing). Free has no sync, no web cabinet, no Connectors, no API keys and no bundled AI requests (it works with your own key).

Pro ($10/mo, or $96/year) and Team add the hosted side: cloud sync, the web cabinet and web terminal, Connectors, the hosted MCP (OAuth + API keys), encrypted server backups, remote desktops (RDP/VNC) through a Connector or the browser, cloud storage for recordings and backups, monitoring and the AI assistant's monthly allowance. Every new account gets a 14-day Pro trial (28 days if referred; one trial per device or server). See pricing for the Team price, the Lifetime offer and the full table.

Cancelling. A card subscription: open the cabinet → your plan → Manage subscription to cancel or change the card (the payment receipt email has the same link). Pro stays on until the end of the period you paid for. A plan paid from your balance: switch off Auto-renew plans from balance in the cabinet. Bought in the iPhone app: cancel in iPhone Settings → Apple ID → Subscriptions.

Updates

Termalin updates itself silently. Each release is signed with an offline key; the app verifies the signature and the installer's checksum before installing, so a compromised update server can withhold an update but never inject one. Check manually from Settings → About → "Check for updates".

Troubleshooting

SmartScreen blocks the installer

The standalone Windows .exe isn't code-signed yet — More info → Run anyway, or install the signed build from the Microsoft Store.

An agent can't connect (local)

Check that the app is running, "Agent in Terminal" (and "Let agents run commands" for injection) are on, and the host allows headless connection (no interactive passphrase needed, or the key is already unlocked in the agent).

A chat app sees no servers

Hosts saved in the app or cabinet are not visible to AI apps — only servers running a Connector are. Install one (termal.in/account, or "Make it available" in the web terminal). If servers are connected but still hidden, turn on AI access in the Connector's settings. If the chat says the plan doesn't include it, the trial ended — the hosted MCP is Pro.

An API key is refused

Check the reason shown next to the key in the cabinet — copy cut off, expired, plan, unverified email, or revoked — and use Test key. If the chat never calls Termalin, enable it in the conversation's tools (+) menu. If a command was cut off, it ran past its time limit (60 s by default, timeout up to 300 s) or the chat app stopped waiting — use job_start / job_status.

I forgot my master password

There's no reset by email. If you set a recovery code beforehand, use it on the lock screen or "Forgot password" to choose a new one. Without one, you can reset the app and start fresh, but locally encrypted data tied to that password is unrecoverable.

Someone's server was hit by a Termalin user? See report abuse. Still stuck? Open a support request or email hello@termal.in — we read everything.