The dashboard that
reads the truth.
A fleet dashboard and uptime monitor for the teploy CLI, in one 17 MB Go binary. It has no database of its own: it reads the state files the CLI writes and shells out to the CLI for every action, so what you see is what is running.
Dokploy and Coolify keep their own record of what is deployed. Change anything over SSH and the record is wrong, and now you have two truths. Dash keeps none. The server is the record, and Dash is a window onto it.
Terminal, UI and webhook all land in the same file
The CLI writes /deployments/<app>/state.json on every deploy, whoever triggered it. Dash reads those files, read-only, and when you press a button it runs the same CLI on that server. There is no second database to fall out of sync, because there is no second database.
- A deploy from your laptop shows up in Dash immediately
- A rollback from Dash is a real teploy rollback on the box
- Delete Dash and nothing about your deployments changes
Operations, not a control plane
The things you would otherwise open a terminal for, and the monitoring you would otherwise pay someone for.
teploy-dash
Fleet view
Every app on every server: state, image hash, domain, container status. Refreshed without hammering SSH.
app restart · rollback
App and accessory control
Start, stop, restart, rollback, lock, maintenance mode. Each one is the CLI binary on that server, invoked for you.
logs api -f
Streamed logs
WebSocket tailing per app with an SSE fallback. The deploy in flight streams too.
env set · secret set
Env and secrets
List, set and unset from the UI. Delegated to the CLI; Dash never stores a value itself.
template install
One-click templates
Install from the community catalog into any server in the fleet, with the accessories it needs.
kv
Key-value panel
List by pattern, reveal, set, remove. Keys the panel cannot drive render read-only instead of offering buttons that fail.
monitor add
Uptime monitors
HTTP, TCP and ping checks with per-monitor interval and timeout. 24h stats, response-time history, test-now.
alerts
Alerts on transitions
Webhook and SMTP on up, down and recovered. Per-monitor thresholds. Cron heartbeats catch a job that never ran.
--public-status
Public status page
Opt-in, unauthenticated /status for your users: name, state, 24h uptime. No targets, IPs or server names leak.
restore-test
Scheduled restore tests
Dash restores real backups into scratch containers on a schedule and proves they open. A backup you have not restored is a hope.
--bind 100.x
Tailnet-only by default
Bind to your Tailscale address and the dashboard is unreachable from the public internet, no reverse proxy required.
--nucleus-url
Nucleus or JSONL
Store monitor history in Nucleus over pgwire, or in rolling JSONL files with no extra dependency at all.
Every backup gets restored. On a schedule. By a machine.
The CLI takes S3 backups with retention and cron. Dash takes the next step nobody does by hand: it restores each one into a scratch container, checks that it opens, and tears it down. A restore that fails pages you the same way a monitor does.
One binary.
17 MB.
Port 3456.
The frontend is embedded. Copy the binary anywhere and run it.
First launch is a setup page for your username and password, stored as bcrypt hashes. The install script verifies the release checksum before it runs, installs a systemd unit, and prints the generated admin password once. Bind to your tailnet and it never touches the public internet.
Point it at /deployments
Dash reads the directory the CLI already writes to. Run it on the server, or mount the directory into the container. Monitor history goes to Nucleus if you have one, or to a JSONL file if you do not.
How Dash compares
| Dash | Dokploy | Coolify | Uptime Kuma | |
|---|---|---|---|---|
| Own deployment database | None, reads CLI state | Yes | Yes | n/a |
| Can drift from what is on the server | No | Yes, after SSH changes | Yes, after SSH changes | n/a |
| Uptime monitors | HTTP, TCP, ping, cron | No | No | Yes |
| Public status page | Yes | No | No | Yes |
| Scheduled restore tests | Yes | No | No | No |
| Streamed logs | WebSocket + SSE | Yes | Yes | No |
| Footprint | One binary, ~17 MB | Node + Postgres + Redis | Node + Postgres + Redis | Node + SQLite |
Already running the CLI?
Dash reads the state files your CLI already writes. Install it on any server in the fleet.