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.tomlpaths 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.