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.