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.

Fleet13 apps · 22 servicesrefreshed just now
AppRoleProcessPortPIDCPU · 60 minHealth
atlasAPIonline6100305532.5%healthyp95 15 ms
beaconAPIonline6200306710.5%healthyp95 7 ms
atlasFRONTonline3000306120.5%healthyp95 31 ms
cinderAPIonline6300307891.0%healthyp95 11 ms
dovetailFRONTonline3100309071.5%healthyp95 32 ms
galeAPIonline6800312021.5%healthyp95 18 ms
ivoryAPIonline70007855449.5%healthyp95 11 ms
beaconAPIonlinerestartstopmove port

Port

6200

PID

30671

Uptime

6h

Restarts

0

health: unreachable
  • pm2 restart beacon-api
  • Health check · /health
  • Audit · process.restart

Load · 8 vCPU

0.005m 2.89 · 15m 3.22

−30 minpeak 4.12 · 18 min ago

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

Schedules18 crons
cinder-metrics-synccinder · every 30 minutes UTC9h agook
link-health-checkbeacon · every hour UTC11 min agofailed
scan-index-refreshgale · every 30 minutes UTC12 min agook
session-sweepdovetail · every hour UTC12 min agook
db-backupatlas · at 00:30 and 12:30 UTC42 min agook
external-call-prunekeystone · at 03:10 UTC6h agoskipped
Deploy feed
13h agofathomFRONTed5fd1asuccess5 commits
22h agokeystoneAPI2fd23f2success2 commits
yesterdayfathomAPIf51e9f0failed1 commit
yesterdayjuniperFRONTfc87a6esuccess5 commits
The console

Seven screens. One fleet.

Each screen answers one question about your server, from what Zeus measures itself and what your apps report to it.

AppRoleRestarts · 14 dCPU · 60 minHealth
atlasAPI2.5%healthyp95 15 ms
atlasFRONT0.5%healthyp95 31 ms
cinderAPI1.0%healthyp95 11 ms
ivoryAPI49.5%healthyp95 11 ms
AppRoleCPU · 60 minHealth
atlasAPI2.5%healthyp95 15 ms
atlasFRONT0.5%healthyp95 31 ms
cinderAPI1.0%healthyp95 11 ms
ivoryAPI49.5%healthyp95 11 ms
FleetEvery process live: CPU, memory, health and restarts.
API blocks 6N00–6N999 used · 1 free

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

API blocks 6N00–6N999 used · 1 free

6300–6399

cinder

6400–6499

dovetail

6500–6599

ember

6600–6699

free

6700–6799

fathom

6800–6899

gale

RegistryThe port map, block by block, and who owns each port.
cinder-metrics-synccinder9h agook
link-health-checkbeacon11 min agofailed
scan-index-refreshgale12 min agook
session-sweepdovetail12 min agook
CronEvery scheduled job, each judged against its own schedule.
fathomFRONTed5fd1asuccess
keystoneAPI2fd23f2success
fathomAPIf51e9f0failed
juniperFRONTfc87a6esuccess
DeploysThe build that is live, and the commits it shipped.
keystonekeystonedb6h ago1.9 MBDump now
fathomfathomdb6 days ago1.1 MBDump now
beaconbeacondb2 days ago828 KBDump now
galegaledb4 days ago365 KBDump now
DB dumpsA database dump in one click, pushed offsite.
beaconicons.example.net334failing
emberweather-grid600healthy
keystonegeo-lookup20healthy

Failure feed

beaconicons.example.net334failing
emberweather-grid600healthy
keystonegeo-lookup20healthy
atlasregistry.example.net50healthy
External callsWhat third-party APIs did when the apps called them.
ActorActionTargetResult
adminauth.login—ok
adminservice.reassignbeacon-apiok
adminprocess.restartbeacon-apiok
adminauth.login—ok
ActionTargetResult
auth.login—ok
service.reassignbeacon-apiok
process.restartbeacon-apiok
auth.login—ok
AuditEvery action Zeus took, its actor, its target, its result.
01 — Watch

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
beaconblock 6200–6299APIonline:6200

CPU · 60 min

Mem since restart

Restarts · 14 days

Health · every 30 s

Health: healthyRegistry: in sync
02 — Act

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
Move portbeacon-apiAPI

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;

Apply
  • Both files rewritten
  • pm2 restart beacon-api
  • Health on :6250
  • Moved · registry in sync
03 — Hear

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
Cron activitywhat the fleet's scheduled work reported
07:0008:0009:0010:00

cinder-metrics-sync

every 30 minutes

link-health-check

every hour

now
expectedranfailed
cinder-metrics-sync09:30 run expected · nothing reported
link-health-checkfetch failed: connect ETIMEDOUT 198.51.100.77:443 after 10 links
Preview

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.

Demo fleet · example.net
And the rest

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.

Guardrails

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.

Keeps itself upStop and port moves are refused on Zeus itself.
Locked to its ownerA single admin account, Redis sessions, recovery by passphrase.
Local reportsApps report over a shared-secret route, on loopback, rate-limited.
Every action writtenRestarts, moves and dumps all land in the audit log.

Every app,
on one screen.

Your whole server, watched and in reach.