Web Dashboard¶
Pypen's dashboard is a Quart application served by Uvicorn, with a Socket.IO layer wrapped around it for live log streaming. It is the primary way users interact with the supervisor.
Features¶
- Project list — every
[[project]]with status (running / stopped / crashed) and last-restart timestamp. - Live logs — per-project tail over WebSocket; opens instantly, no polling.
- Controls — start, stop, restart, redeploy, force
git pull. - Cron view — what is scheduled to restart, when.
- Auth — gated by
[defaults].username/password.
Stack¶
| Layer | Library |
|---|---|
| ASGI server | uvicorn[standard] |
| Web framework | quart |
| WebSocket | python-socketio + python-engineio |
| Templates | Jinja2 (built into Quart) |
| Logging | loguru + aiofiles |
| Process metrics | psutil |
Entry Point¶
The ASGI application is exposed as asgi_app in
app/__init__.py:
app = Quart(__name__) sio = socketio.AsyncServer(async_mode='asgi', cors_allowed_origins='*') asgi_app = socketio.ASGIApp(sio, app)
run.py imports asgi_app and hands it to
Uvicorn. You can also run it directly with:
$ uvicorn run:app --host 0.0.0.0 --port 5000
Extending the Dashboard¶
Routes live in app/routes/, templates in
app/templates/, static files in app/static/.
Add a new blueprint, register it, and you're done — no special
glue required.