read-only · single binary · no agent

Your Droplets, in the terminal.

Watch your DigitalOcean Droplets from the terminal: live CPU, memory, and disk, sortable and searchable, with usage charts, SSH, and file uploads over SCP.

sailor — the Droplet list
Sailor list view: Droplets with CPU, memory and disk usage bars

#Features

The things you open the DigitalOcean console for, without leaving your terminal.

▸ Live usage

CPU, memory, and disk for every Droplet. The bars change color as load climbs, so a busy box is easy to spot.

▸ Search & sort

Filter by name and sort by any metric. Your cursor sticks to the same Droplet while the list reorders around it.

▸ Usage charts

Open any Droplet to see its CPU, memory, and disk history over the last hour, six hours, or day.

▸ SSH

Press s and you're in a real shell — Sailor just runs your system ssh. Login details stick per Droplet.

▸ SCP upload

Pick files or folders in a small browser and send them to the Droplet's home directory. A progress bar tracks the transfer.

▸ Kind to the rate limit

Sailor only polls the Droplets near your cursor, so it stays under DigitalOcean's API cap — five Droplets or five hundred.

▸ Quick to start

The list is cached, so it shows up right away while fresh numbers load behind it.

< 50% 50–75% 75–90% ≥ 90%

#Install

Grab a prebuilt binary, or build from source with Go 1.26+.

# macOS (Apple Silicon)
curl -L https://github.com/rohittp0/sailor/releases/latest/download/sailor-darwin-arm64.tar.gz | tar xz

# Linux (x86-64)
curl -L https://github.com/rohittp0/sailor/releases/latest/download/sailor-linux-amd64.tar.gz | tar xz

./sailor

Binaries are published for macOS and Linux on amd64 and arm64.

Or install with Go 1.26+:

go install github.com/rohittp0/sailor/cmd/sailor@latest

…or build from source:

git clone https://github.com/rohittp0/sailor.git
cd sailor
go build -o sailor ./cmd/sailor

#Usage

Sailor needs a DigitalOcean API token with the Monitoring read scope.

The token is resolved from the DIGITALOCEAN_ACCESS_TOKEN environment variable, falling back to your existing doctl configuration.

export DIGITALOCEAN_ACCESS_TOKEN=dop_v1_xxx
sailor

# …or, if doctl is already authenticated:
sailor
Why some cells show n/a: DigitalOcean always exposes CPU, but memory and disk usage require the metrics agent (do-agent) on the Droplet. Droplets without it show CPU only; powered-off Droplets show --.

Keybindings

KeyAction
j k ↑ ↓Move cursor
g / GJump to top / bottom
ctrl+d / ctrl+uPage down / up
/Filter by name (esc clears)
N C M DSort by name / CPU / memory / disk
enter / eExpand to charts
s / SSSH / edit SSH profile
uUpload files/folders (SCP)
rRefresh all
1 2 3Chart window 1h / 6h / 24h (expanded view)
escBack to the list
?Toggle help
qQuit

#Expanded view

Press enter on a Droplet for stacked CPU / memory / disk charts. The time window is global and persists across Droplets.

sailor — expanded charts
Sailor expanded view: stacked CPU, memory and disk time-series charts

SSH

Press s to connect. The first time, a prompt asks for the login user (default root) and identity-file path; the choice is saved per Droplet in ~/.config/sailor/hosts.toml — paths only, no secrets — and reused afterward. Sailor execs your system ssh, inheriting your keys, agent and ~/.ssh/config.

SCP upload

Press u to send local files or folders up to a Droplet. A file browser opens where you started Sailor: l and h move in and out of folders, space checks the things you want (from more than one folder if you like), and enter uploads them to the home directory while a progress bar tracks it. Check a folder and something inside it, and Sailor just sends the folder. It reuses your saved SSH login and runs your system scp.

#How it stays under the rate limit

DigitalOcean allows ~5,000 requests/hour, and each fully-populated row costs three metric calls.

Sailor fetches all stats once at launch so the initial sort is correct, then settles into a cursor-centered window of up to ~23 active Droplets per minute. Off-screen rows keep their last value (dimmed) and refresh as you scroll to them. The expanded view pauses the list and polls just that one Droplet every 5 seconds.

The full design — including why the list re-sorts live and how the budget is spent — is recorded in ADR-0002. Sailor is read-only against your DigitalOcean account by design: it observes and connects, but never powers off, reboots, resizes, or destroys Droplets through the API. The SSH and SCP hand-offs act inside a server you already control (an upload writes files there), not on the control plane.