The CLI is not a wrapper bolted onto a dashboard. The same backend that serves the UI also serves the CLI and the MCP server — one source of truth, three surfaces over it. Whatever you script from the terminal today is the same action you click in the UI tomorrow.
jq, completes like git.The dashboard isn’t where the work happens. It’s where the interruptions happen.
The platform decides what’s easy. You learn its left-rail order, its keyboard quirks, its modal hierarchy. CLI-first inverts that — you script the thing you do twice, and the UI is one of several ways to trigger it.
"Open the UI to ack one alert" pulls you out of the editor for thirty seconds; the editor cache is cold for the next ten minutes. From the terminal it’s a single keystroke — and the cursor never left.
"Why did the API spike?" is a great question for an AI — if the AI can read your metrics, logs, deploys and incidents. Most platforms make this a custom integration. MCP makes it the wire format.
An SDK in your language feels nice on day one. By month six it’s missing the three endpoints you actually want, and the bug-fix PR has been open for a quarter. Better to keep a CLI + MCP that the platform team uses daily, and a future generate-your-own client off an OpenAPI spec — than to commit to half-a-dozen SDKs we can’t keep current.
Same auth, same audit log, same fleet. Pick the surface that matches the moment — the verb is identical.
40+ verbs in one binary. hostatlas hosts list pipes into jq; hostatlas ssh keywest picks the right user and key; hostatlas logs @prod --grep '5\d\d ' -f tails multi-host with server-side filter.
brew install hostatlas-app/hostatlas/cli, apt install hostatlas-cli, or curl-pipe.22+ MCP tools across hosts, alerts, monitors, backups, recipes — read-mostly by default, writes gated by explicit scope. Claude, Cursor, Windsurf, ChatGPT and the small custom agents you build yourself all speak the same wire format.
Per-server hide-from-AI toggle stays web-auth-only so a leaked AI token can’t reveal a hidden host. Every tool call lands in the same audit log as UI / CLI / API.
Each cron job, backup script or scheduled task gets a slug ping URL. curl https://hb.hostatlas.app/<slug> from your job; the platform alerts when the ping doesn’t come. Late and dead are different events — late is a warning, dead is a page. No SDK, no API key required — the slug is the auth.
Start / success / fail variants for jobs that want to report duration or capture error context.
Alerts, incidents, deploys, agent state changes, backup runs — HMAC-SHA256 signed JSON to your endpoint. Retried with backoff + jitter for up to 24 hours, then DLQ. Replay any delivery from the webhook log; useful when you change your handler.
Generic enough to point at your CI, your bug tracker, your billing pipeline. No "Linear integration" / "Jira integration" stack pile — one webhook does it.
Inside the UI when you do need it. Search hosts, alerts, settings; jump or act without a mouse. Fuzzy-matched, recents-pinned. Ack, snooze, run a recipe, open a maintenance window — same actions as the CLI, three keystrokes away.
Four small MIT-licensed tools we built for ourselves, released without an account requirement:
Same workflow as before HostAtlas. The shape of your day stays the same. The number of context switches doesn’t.
hostatlas hosts list --status warn -o table in your scrollback. Three warn, no crit. ⌘K without leaving the editor. hostatlas why "api p95 spike since 14:30" in a sidebar terminal. Answer cites the deploy from 14:08 + a slow query from pg_stat_statements. hostatlas recipe rollback-api --version 1.42.3. Three minutes from spike to recovery. Recipe run logged + signed. hostatlas audit --since 09:00. Everything you did has a receipt. Most platforms ship a UI first and bolt an API on later. The API never quite catches up. We did it the other way around.
Brew, apt, scoop, or a curl-pipe. Tab-completion installs with the binary. hostatlas login opens a browser, stores the token in your keyring.
Pick one event — alert fired, deploy completed, backup finished — point it at your endpoint. HMAC-signed, retried with jitter, replayable from the log. Bridges your stack to the platform without a custom integration.
Webhooks →One config line in Claude / Cursor / Windsurf. The assistant gets read-mostly access to your fleet immediately, write actions only after you opt in.
MCP server →hostatlas from the box. If you have a strong opinion on the provider shape, tell us early.
Every area is built on the same agent and the same catalogue. Follow any of them to see what it covers.
Free tier covers a single host forever. The CLI is the fastest path in.