Web UI

The web UI is a browser-based view of controller state — functions, tenants, instances, events, configuration, and more. During local development it is served at http://127.0.0.1:8080 by the controller process.

Running in dev mode

dev up starts the web UI alongside the controller, router, and docs server. Because the web UI is served by the controller, any command that starts the controller also starts the web UI:

dev up                          # all components (controller, router, docs)
dev up --only=controller        # controller only (includes web UI)
dev up --only=controller,router # controller + router

Available routes

Path Purpose
/ Dashboard — cluster summary with ready/total instances and recent events
/functions List of all active functions
/functions/{key} Detail view for a single function (instances, scale history)
/controllers List of all controller peers and ring distribution
/controllers/{ip} Detail view for a single controller
/routers List of all router peers
/routers/{ip} Detail view for a single router
/instances/{name} Detail view for a single instance
/tenants List of all tenants
/tenants/{tenant} Detail view for a single tenant
/events Event log with function and severity filters
/config Current controller configuration

Each full-page route also has a corresponding /sse/* endpoint that streams live updates via Server-Sent Events (Datastar).

Template live-reload

When SKIPPER_WEB_TEMPLATE_DIR is set (done automatically by dev up), templates are read from disk on every request instead of using the copies embedded in the binary. This means you can edit any HTML template in internal/web/templates/ and see the result by refreshing the browser — no restart required.

Static assets

The stylesheet at internal/web/static/css/output.css is hand-authored vanilla CSS — there is no build step. Edit it directly and refresh the browser; in dev mode the controller serves static files from disk. In production the CSS is embedded in the binary at build time.