A web UI for supervisord.
Shows process state, CPU and memory usage, and lets you start, stop, and restart processes
from a browser. Also exposes a /metrics endpoint for Prometheus.
Single FastAPI server, single HTML file. No build step or frontend toolchain required.
/proc/<pid>/stat over a 10-second sliding window. RSS and swap are read from /proc/<pid>/status.tailProcessStdoutLog / tailProcessStderrLog via XML-RPC.[program:] config fetched via getAllConfigInfo — command, working directory, user, log paths, and stop signal.reloadConfig and optionally addProcessGroup / removeProcessGroup to apply changes. Reports which groups were added, changed, or removed./metrics endpoint returns per-process gauges in Prometheus text format. See the metrics reference below for the full list.The /metrics endpoint returns Prometheus text format. All gauges carry a name label in group:process form.
/proc/<pid>/status in bytes./proc/<pid>/status in bytes.name="group:process" label. For processes not in a group, name is just the process name.# HELP supervisor_process_up 1 if the process is in RUNNING state, 0 otherwise
# TYPE supervisor_process_up gauge
supervisor_process_up{name="worker:celery",state="RUNNING"} 1
supervisor_process_up{name="beat",state="FATAL"} 0
# HELP supervisor_process_cpu_percent CPU usage of the process in percent
# TYPE supervisor_process_cpu_percent gauge
supervisor_process_cpu_percent{name="worker:celery"} 12.4
supervisor_process_cpu_percent{name="beat"} 0.0
# HELP supervisor_process_rss_bytes Resident set size of the process in bytes
# TYPE supervisor_process_rss_bytes gauge
supervisor_process_rss_bytes{name="worker:celery"} 183500800
Requires Python 3.10+ and uv. supervisord must be running and configured with a Unix socket (see below).
$ git clone https://github.com/torpedro/overseer
$ cd overseer
$ uv sync
$ python main.py --port 8000 --socket /var/run/supervisor.sock
--socket /tmp/supervisor.sock # path to supervisor Unix socket
--port 8000 # port to listen on
--host 0.0.0.0 # host to bind to
--cpu-interval 1.0 # CPU sampling interval in seconds
[unix_http_server]
file = /var/run/supervisor.sock
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface