CLI Tool

Your infrastructure
at your fingertips.

40+ commands. Six platforms. Browser-based OAuth login, interactive TUI dashboard, SSH with Tailscale/WireGuard preference, Docker management, and auto-updates — all without leaving the terminal. Install via Homebrew or curl.

$ curl -sSL https://install.hostatlas.app/install.sh | sudo bash -s -- --key=SERVER_KEY_

40+

Commands

6

Platforms

TLS 1.3

End-to-end encryption

<5 MB

Single binary

Quick Start

Three steps to full control.

Install via Homebrew or curl, authenticate with browser-based OAuth, and start managing your infrastructure in under a minute.

1

Install

# Homebrew (macOS / Linux) $ brew install hostatlas/tap/hostatlas hostatlas v2.4.0 installed # Or via curl $ curl -sSL https://install.hostatlas.app/install.sh | sudo bash Detected platform: darwin/arm64 Downloading hostatlas v2.4.0... Installed to /usr/local/bin/hostatlas (4.7 MB)
2

Login with browser-based OAuth

$ hostatlas login ! Opening browser for authentication... Authenticated as sascha@hostatlas.app Token saved to ~/.hostatlas/cli.json (mode 0600) Team: HostAtlas (3 members)
3

Use

$ hostatlas status Fleet Overview Servers 12 online 1 warning 0 offline Alerts 3 firing 1 pending Domains 47 healthy 0 expiring Monitors 8 up 0 down
lock

No API tokens to copy

Browser-based OAuth means no manual API key management. Your session token is stored in ~/.hostatlas/cli.json with 0600 permissions — readable only by your user. The CLI refuses to start if the config file has world-readable permissions.

Command Reference

40+ commands. Zero guesswork.

Every command follows a consistent pattern: hostatlas <noun> [flags]. Every command has auto-generated --help output.

Server Management

status Quick infrastructure overview
$ hostatlas status Fleet Overview Servers 12 online 1 warning 0 offline Alerts 3 firing 1 pending Domains 47 healthy 0 expiring Monitors 8 up 0 down
servers List all servers with status
$ hostatlas servers NAME STATUS CPU RAM DISK LOAD UPTIME web-prod-01 online 12% 64% 42% 0.82 47d 12h web-prod-02 online 8% 58% 38% 0.54 47d 12h db-primary warning 34% 89% 71% 2.14 123d 6h db-replica-01 online 22% 72% 68% 1.02 123d 6h redis-01 online 3% 45% 12% 0.11 89d 3h ───────────────────────────────────────────────────────────────────── Showing 5 of 13 servers. Use --all to show all.
server [hostname] Server details
$ hostatlas server db-primary Server: db-primary Status warning IP 159.69.42.117 OS Ubuntu 22.04.3 LTS (x86_64) Agent v2.4.0 Uptime 123d 6h 42m Current Metrics CPU 34.2% ████████░░░░░░░░░░░░ RAM 89.1% █████████████████░░░ Disk / 71.3% ██████████████░░░░░░ Load 1m 2.14 Load 5m 1.87 Load 15m 1.42
server add Add a new server
$ hostatlas server add Server Name: staging-01 Server created. Run this on your server to install the agent: curl -sSL https://install.hostatlas.app/install.sh | sudo bash -s -- --key=ha_srv_a1b2c3d4
ssh [hostname] Direct SSH connect (prefers Tailscale IP)
$ hostatlas ssh web-prod-01 Tailscale IP detected: 100.64.0.12 Connecting via WireGuard tunnel... root@web-prod-01:~# _
open-ssh [hostname] Open SSH in default terminal
$ hostatlas open-ssh web-prod-01 Opening SSH session in Terminal.app...

Domain Management

domains List all domains
$ hostatlas domains DOMAIN HTTP SSL EXPIRY REGISTRAR NAMESERVERS hostatlas.app 200 87d Cloudflare ns1.cf, ns2.cf my.hostatlas.app 200 87d Cloudflare ns1.cf, ns2.cf api.hostatlas.app 200 87d Cloudflare ns1.cf, ns2.cf docs.hostatlas.app 200 87d Cloudflare ns1.cf, ns2.cf ───────────────────────────────────────────────────────────────────────── 4 domains, all healthy
domain [domain] Domain details with SSL info
$ hostatlas domain hostatlas.app Domain: hostatlas.app HTTP 200 OK SSL Issuer Let's Encrypt R3 SSL Expiry 87 days (2026-07-07) Registrar Cloudflare, Inc. Nameservers ns1.cloudflare.com, ns2.cloudflare.com Server web-prod-01

Monitoring

alerts List active alerts
$ hostatlas alerts NAME SERVER STATE SINCE CPU > 90% worker-01 firing 2m ago RAM > 85% db-primary firing 14m ago Disk / > 70% db-primary warning 3h ago ───────────────────────────────────────────────────────────── 2 firing, 1 warning
incidents List incidents
$ hostatlas incidents --last 7d ID TITLE OPENED DURATION STATUS INC-0047 db-primary high memory 2h ago ongoing open INC-0046 worker-02 disk full 1d ago 42m resolved INC-0045 SSL cert renewal failed 3d ago 18m resolved
logs [hostname] Tail server logs
$ hostatlas logs web-prod-01 Select a log file: ▶ /var/log/nginx/access.log /var/log/nginx/error.log /var/log/syslog /var/log/auth.log /var/log/app/production.log [2026-04-11 09:14:22] 159.69.42.117 GET /api/v1/servers 200 14ms [2026-04-11 09:14:23] 159.69.42.117 POST /api/v1/metrics 201 8ms [2026-04-11 09:14:24] 10.0.0.5 GET /health 200 1ms
metrics [hostname] Live metrics
$ hostatlas metrics db-primary Live Metrics (Ctrl+C to stop) CPU 34.2% ████████░░░░░░░░░░░░ RAM 89.1% █████████████████░░░ Disk / 71.3% ██████████████░░░░░░ Net In 124 MB/s Net Out 89 MB/s Load 2.14 / 1.87 / 1.42

Operations

recipes List available recipes
$ hostatlas recipes NAME DESCRIPTION SERVERS update-packages apt update && apt upgrade -y all restart-nginx systemctl restart nginx web-* clear-cache redis-cli FLUSHDB redis-* deploy-latest git pull && systemctl restart app web-* rotate-logs logrotate -f /etc/logrotate.conf all
recipe run [name] Execute a recipe
$ hostatlas recipe run restart-nginx ! Running recipe restart-nginx on 2 servers... web-prod-01 nginx restarted (1.1s) web-prod-02 nginx restarted (0.9s) Recipe complete: 2/2 succeeded, 0 failed
backup [hostname] Trigger database backup
$ hostatlas backup db-primary ! Running pre-flight checks... Disk space: 48 GB free (sufficient) Database: MySQL 8.0 (3 databases, 2.4 GB total) ! Backing up... Backup complete: snap-20260411-1422 (2.4 GB, 34s)
deploy [hostname] Trigger deployment
$ hostatlas deploy web-prod-01 ! Deploying to web-prod-01... Git pull: 3 files changed Dependencies installed Build complete (12s) Services restarted Deployment complete in 28s

Docker

containers [hostname] List containers
$ hostatlas containers web-prod-01 NAME IMAGE STATUS CPU RAM PORTS app myapp:latest running 8% 256M 8080 redis redis:7-alpine running 1% 64M 6379 nginx nginx:1.25 running 2% 32M 80,443 worker myapp:latest running 24% 512M —
container restart [name] Restart container
$ hostatlas container restart app --server web-prod-01 ! Restarting container app on web-prod-01... Container restarted (took 2.1s)
container logs [name] Container logs
$ hostatlas container logs app --server web-prod-01 --tail 3 [2026-04-11 09:12:01] INFO Server started on :8080 [2026-04-11 09:12:02] INFO Connected to Redis at redis:6379 [2026-04-11 09:12:03] INFO Ready to accept connections

System

login Browser-based OAuth authentication
$ hostatlas login ! Opening browser for authentication... Authenticated as sascha@hostatlas.app Token saved to ~/.hostatlas/cli.json (mode 0600) Team: HostAtlas (3 members)
logout Clear credentials
$ hostatlas logout Credentials removed from ~/.hostatlas/cli.json Logged out successfully
version Show version
$ hostatlas version hostatlas v2.4.0 (darwin/arm64) built 2026-04-10
update Self-update to latest version
$ hostatlas update ! Current: v2.3.1 → Latest: v2.4.0 Downloaded hostatlas v2.4.0 (4.8 MB) Updated successfully. Restart your terminal to use the new version.
completion [shell] Shell completion (bash/zsh/fish/powershell)
# Bash $ hostatlas completion bash > /etc/bash_completion.d/hostatlas # Zsh $ hostatlas completion zsh > "${fpath[1]}/_hostatlas" # Fish $ hostatlas completion fish > ~/.config/fish/completions/hostatlas.fish # PowerShell $ hostatlas completion powershell | Out-String | Invoke-Expression
dashboard Interactive TUI dashboard (Bubbletea)
$ hostatlas dashboard HostAtlas Dashboard Tab: [Servers] [Alerts] [Domains] NAME STATUS CPU RAM DISK UPTIME ▶ web-prod-01 online 12% 64% 42% 47d 12h web-prod-02 online 8% 58% 38% 47d 12h db-primary warning 34% 89% 71% 123d 6h redis-01 online 3% 45% 12% 89d 3h ↑/↓ navigate Tab switch view Enter details q quit

Terminal Experience

Designed for operators who live in the terminal.

Every detail of the CLI output is intentional — from colored status indicators to ANSI-safe table formatting that looks right on any terminal emulator.

open_in_browser

Browser-based OAuth Login

No API tokens to copy-paste. Run hostatlas login and authenticate in your browser. The CLI receives a secure token automatically via a local callback server.

dashboard

Interactive TUI Dashboard

A full interactive terminal dashboard built with Bubbletea. Three tabs — Servers, Alerts, and Domains — with keyboard navigation, real-time updates, and detail views.

vpn_lock

SSH with Tailscale/WireGuard

The ssh command automatically detects and prefers Tailscale or WireGuard IPs for private, encrypted connections. Falls back to public IP when no tunnel is available.

system_update_alt

Auto-update Mechanism

Run hostatlas update to self-update to the latest version. The CLI checks for updates, downloads the new binary, and replaces itself in place. No package manager needed.

local_cafe

Homebrew Support

Install with brew install hostatlas/tap/hostatlas. Official Homebrew tap with automatic formula updates on every release. Also available via curl for Linux and Windows.

devices

macOS, Linux, Windows

Pre-built binaries for macOS (arm64/amd64), Linux (arm64/amd64), and Windows. Single binary, zero dependencies, under 5 MB. Works on Apple Silicon, Graviton, and x86.

palette

Colored Status Indicators

Green for healthy, yellow for warnings, red for critical. Every status field uses semantic colors that map directly to severity levels. Supports NO_COLOR and --no-color for piping to files.

keyboard_tab

Shell Completion

Full tab-completion for bash, zsh, fish, and PowerShell. Completes command names, flag names, server hostnames, and recipe names dynamically from the API.

data_object

JSON Output Mode

Every command supports --json for machine-readable output. Pipe to jq, feed into scripts, or integrate with your existing automation tooling.

Security

Zero-trust from your terminal to our API.

Every request is authenticated, encrypted, and audited. The CLI enforces the same security standards as the web dashboard.

key

Browser-based OAuth

Authenticate via your browser — no API tokens to copy. The CLI opens a local callback server, receives a secure token, and stores it with 0600 permissions. Every request includes a Bearer token in the Authorization header.

Authorization: Bearer ha_tok_a1b2c3d4e5f6...
encrypted

TLS 1.3 Enforced

The CLI enforces a minimum TLS version of 1.3 for all API communication. Older protocols are rejected at the transport layer. Certificate pinning is optional via --pin-cert.

TLS_ECDHE_X25519_AES_256_GCM_SHA384
folder_supervised

Config File Protection

The config file at ~/.hostatlas/cli.json is created with 0600 permissions. The CLI checks file permissions on every invocation and refuses to start if the config is world-readable.

-rw------- 1 sascha staff 142 Apr 2 09:00 ~/.hostatlas/cli.json
history

Full Audit Trail

Every CLI action — server restarts, recipe executions, backup operations, alert acknowledgements — is logged in the team audit trail with timestamp, user, and IP address.

09:14 sascha (CLI) recipe.executed restart-nginx

Cross-platform

One binary. Six build targets.

Pre-built for every major OS and architecture. No interpreters, no dependencies, no containers. Download and run.

linux/amd64

Debian, Ubuntu, RHEL, Alpine

linux/arm64

Raspberry Pi, Graviton, Ampere

darwin/amd64

macOS Intel

darwin/arm64

macOS Apple Silicon

windows/amd64

Windows 10/11, Server 2019+

windows/arm64

Windows on ARM

Self-documenting

Self-documenting by design.

Every command generates its own help page, usage examples, and flag documentation automatically.

Auto-generated --help for every command and subcommand
Typo suggestions: Did you mean "servers"?
Flag parsing with short and long forms (-a / --all)
Shell completion for commands, flags, and dynamic values
Grouped command categories in help output
$ hostatlas --help HostAtlas CLI — Manage your infrastructure from the terminal. Usage: hostatlas [command] Server Management: status Quick infrastructure overview servers List all servers with status server Server details server add Add a new server ssh Direct SSH connect (prefers Tailscale) open-ssh Open SSH in default terminal Domain Management: domains List all domains domain Domain details with SSL info Monitoring: alerts List active alerts incidents List incidents logs Tail server logs metrics Live metrics Operations: recipes List available recipes recipe run Execute a recipe backup Trigger database backup deploy Trigger deployment Docker: containers List containers container restart Restart container container logs Container logs System: login Browser-based OAuth authentication logout Clear credentials version Show version update Self-update to latest version completion Shell completion (bash/zsh/fish/powershell) dashboard Interactive TUI dashboard Flags: -h, --help help for hostatlas --json output as JSON --no-color disable colored output -v, --version version for hostatlas Use "hostatlas [command] --help" for more info.

Your entire fleet, one keystroke away.

Install via Homebrew or curl in under 30 seconds. A single binary, zero dependencies, and 40+ commands that give you full control over your infrastructure without leaving the terminal.

$ curl -sSL https://install.hostatlas.app/install.sh | sudo bash -s -- --key=SERVER_KEY_