Every app,
on one screen.
Zeus runs beside your apps on your server. Every process live, the port each one owns, every cron run and every deploy, with restart, stop and port moves one click away.
Port
6200
PID
30671
Uptime
6h
Restarts
0
- pm2 restart beacon-api
- Health check · /health
- Audit · process.restart
Load · 8 vCPU
0.005m 2.89 · 15m 3.22
RAM
0.0GB / 16.0
70% used
- harbor1.4 GB
- gale1.2 GB
- atlas1.0 GB
- fathom0.8 GB
Disk
0.0GB free / 228.3 GB
32%used+0.4 GB/day · full in ~387 d
Fleet availability · 24 h
0.0%21 / 22 services up
2 incidents · worst gale-front 6m
Seven screens. One fleet.
Each screen answers one question about your server, from what Zeus measures itself and what your apps report to it.
6100–6199
atlas
6200–6299
beacon
6300–6399
cinder
6400–6499
dovetail
6500–6599
ember
6600–6699
free
6700–6799
fathom
6800–6899
gale
6900–6999
harbor
7000–7099
ivory
6300–6399
cinder
6400–6499
dovetail
6500–6599
ember
6600–6699
free
6700–6799
fathom
6800–6899
gale
Failure feed
See every service, live
Load, memory and disk from the server itself, and for each process its CPU minute by minute, its memory since the last restart and a health check every 30 seconds.
- Fourteen days of restarts in one band
- Health check latency, p95, per service
- The registry checked against what runs
CPU · 60 min
Mem since restart
Restarts · 14 days
Health · every 30 s
Move a port in one step
Pick a free port: Zeus rewrites the app's ecosystem file and its nginx block, restarts it and waits for the health check. If the new port stays silent, both files go back as they were.
- Restart, stop and start from the board
- Every file edit shown before it runs
- Rolled back on its own
Port
6200
New port
Plan
/var/www/beacon/ecosystem.config.js
−PORT: 6200,
+PORT: 6250,
/etc/nginx/conf.d/beacon.conf
−proxy_pass http://127.0.0.1:6200;
+proxy_pass http://127.0.0.1:6250;
- Both files rewritten
- pm2 restart beacon-api
- Health on :6250
- Moved · registry in sync
Hear the cron that went quiet
Each app reports its own runs. Zeus also reads every job's schedule, so the run that should have come shows up as overdue, right beside the ones that did.
- Runs reported by the apps themselves
- Each job judged on its own schedule
- The failing run's own message
cinder-metrics-sync
every 30 minutes
link-health-check
every hour
Your server at a glance.
Four of the console's screens, playing with a demo fleet: the board, the port map, the crons and the deploys.
The rest of the toolbox.
When a third-party API fails an app, the app says so. Zeus counts the calls, keeps each failure with its message and marks the dependency that is failing.
Dump any app's database on request, keep it on the server or push it offsite, and see every dump with its size and duration.
Logins, restarts, port moves, dumps: every action Zeus takes is written down with its actor, its target and its result.
For each app: its registry rows, its cron and deploy reports, its database. Where a piece is missing, the exact block to paste.
It runs your server.
And keeps itself running.
Zeus sits in its own registry like any other app, and it is built to stay standing while it works on the rest of the fleet.