TermDesk
api-service
web-app
infra
prod-eu-1
~/work/api-service claude "add rate limiting to /login"
● reading src/routes/auth.ts
● editing src/middleware/rateLimit.ts
✔ 2 files changed · tests green
~/work/web-app npm run dev
VITE v5.4.6 ready in 412 ms
➜ Local: http://localhost:5173/
~/work/web-app codex exec "run the test suite"
● 504 tests running…
✔ 504 passed · 3.2s
● host key SHA256:Xk9…c4H9x2X approved & pinned
● connected — SSH-2.0-OpenSSH_9.6
deploy@prod-eu-1
● restarting api.service…
✔ api.service active (running)
deploy@prod-eu-1 — journalctl -f
10:24:01 [api] GET /health 200 3ms
10:24:01 [api] POST /login 200 41ms
10:24:02 [db] pool acquire → ok
10:24:02 [api] GET /users/42 200 8ms
10:24:03 [web] hmr update /App.tsx
10:24:03 [api] POST /login 429 rate-limited
10:24:04 [api] GET /metrics 200 2ms
10:24:04 [job] nightly-report queued
pro
Hosts
prod-eu-1 deploy@10.20.4.11
prod-us-1 deploy@10.30.7.4
Files on prod-eu-1
Commands
New local terminal
New tunnel / port forward
AI Activity
Verify host key — prod-eu-1

First connection to this host. Approve the SHA256 fingerprint to pin it — any future mismatch is blocked.

ED25519 key fingerprint:
SHA256:Xk9r2Lp+7aQvN0mZ7f1oQe…c4H9x2X
Approve AI action?

An AI agent (Claude) wants to run a command on prod-eu-1. Review it before allowing.

host: prod-eu-1  (deploy@10.20.4.11)
$ systemctl restart api.service

Secrets are redacted in this preview. Only allow commands you understand.

approved · ran once · logged to AI Activity
One window for every session
Local shells, remote machines, and the AI agents working across them — all in one place.
SSH · SFTP · VNC · RDP · MCP
The desk for every session.
Multi-project terminals, remote desktops, and AI agents with hands — never keys. Local-first, host-key verified, fully logged.
TermDesk
Press ⌘K
Fuzzy-jump to any host, command, or file — without leaving the keyboard.