SlimFaas User Interface
SlimFaas includes a web user interface that gives operators a live view of functions, jobs, queues, and network activity.
The user interface is available at the SlimFaas root address, for example:
http://<slimfaas>/
The UI is served by the SlimFaas application itself and uses the same backend endpoints as the API. It is intended for operational visibility and manual wake-up actions, not as a replacement for Kubernetes configuration.
1. What the Page Shows
The page is split into two main sections:
- Infrastructure Overview: shows all detected SlimFaas functions and their runtime state.
- Jobs Overview: shows configured jobs, running jobs, and scheduled executions.
When the live front features are enabled, the page also displays a network map that visualizes traffic between external callers, SlimFaas, queues, functions, and SlimFaas replicas.
2. Infrastructure Overview
The infrastructure section lists every deployment, statefulset, daemonset, or websocket function detected by SlimFaas.
For each function, the table shows:
- Name: function name and the sync/async route pattern.
- Visibility: public/private access and trust level.
- Scale: ready/requested replicas, minimum replicas, start replicas, scale-down timeout, parallel request limits, schedules, dependencies, and autoscaling triggers.
- Resources: CPU and memory requests/limits when available.
- Replicas: pod-level status, readiness, and pod IPs.
If a function has no ready replica, the UI shows it as down and allows it to be manually woken up.
3. Wake-Up Actions
The UI exposes two wake-up actions:
- Wake Up on one function calls
POST /wake-function/{functionName}. - Wake Up All Functions calls
POST /wake-functions.
SlimFaas coalesces repeated wake-up calls while a wake-up is already in progress for the same function. The UI also applies a short local cooldown to avoid accidental repeated clicks.
4. Live Status Stream
The UI connects to:
GET /status-functions-stream
This endpoint uses Server-Sent Events (SSE). It sends:
stateevents: periodic full snapshots containing functions, queue lengths, jobs, SlimFaas replicas, SlimFaas nodes, and front status.activityevents: single live network activity events.activity_batchevents: grouped live network activity events during bursts.
The browser reconnects automatically if the stream disconnects.
5. Network Map
When SlimFaas:EnableFront is enabled, the UI renders a live network map.
The map uses the activity stream to show messages moving between:
- external callers
- SlimFaas
- function pods
- async queues
- SlimFaas replicas in multi-node deployments
The map is live-only for animations. Historical activity is not replayed into the animation stream when a new browser session starts.
SlimFaas nodes also synchronize recent local activity through the internal endpoint:
GET /internal/activity-events?since=<unix-ms>
This endpoint is intended for peer SlimFaas nodes inside the namespace.
6. Jobs Overview
The jobs section uses the same SSE state payload as the function dashboard.
It shows:
- number of job configurations
- number of currently running jobs
- number of configured schedules
- image, visibility, dependencies, resources, schedules, and running job details when available
If no job configuration is loaded, the section displays an empty state.
7. Main Backend Endpoints Used by the UI
| Endpoint | Method | Used for |
|---|---|---|
/status-functions-stream |
GET |
Main SSE stream for the live dashboard |
/status-functions |
GET |
Function status list API |
/status-function/{functionName} |
GET |
Status for one function |
/wake-function/{functionName} |
POST |
Wake one function |
/wake-functions |
POST |
Wake all functions |
/internal/activity-events |
GET |
Internal peer activity synchronization |
8. Configuration in appsettings.json
SlimFaas configuration is read from the SlimFaas section in appsettings.json.
The same values can be overridden with environment variables. For .NET configuration, use __ to represent nested keys. For example:
SlimFaas__EnableFront=false
SlimFaas__StatusStream__StateIntervalMilliseconds=2000
SlimFaas UI and Dashboard Settings
| appsettings.json key | Environment variable | Default value | Description |
|---|---|---|---|
SlimFaas:EnableFront |
SlimFaas__EnableFront |
true |
Enables dashboard/network front features. When disabled, activity tracking and peer sync are disabled and the UI shows a disabled-front message. |
SlimFaas:StatusStream:StateIntervalMilliseconds |
SlimFaas__StatusStream__StateIntervalMilliseconds |
1000 |
Interval between periodic SSE state snapshots. Must be greater than 0. |
SlimFaas:StatusStream:QueueLengthsCacheMilliseconds |
SlimFaas__StatusStream__QueueLengthsCacheMilliseconds |
1000 |
Cache duration for queue length reads used by state snapshots. 0 disables this cache. |
SlimFaas:StatusStream:JobsCacheMilliseconds |
SlimFaas__StatusStream__JobsCacheMilliseconds |
1000 |
Cache duration for job status snapshots. 0 disables this cache. |
SlimFaas:StatusStream:PeerSyncIntervalMilliseconds |
SlimFaas__StatusStream__PeerSyncIntervalMilliseconds |
2000 |
Interval between activity scrapes from peer SlimFaas nodes. Must be greater than 0. |
SlimFaas:StatusStream:PeerSyncInitialDelayMilliseconds |
SlimFaas__StatusStream__PeerSyncInitialDelayMilliseconds |
5000 |
Initial delay before the first peer activity scrape. |
SlimFaas:StatusStream:MaxSseClients |
SlimFaas__StatusStream__MaxSseClients |
0 |
Maximum concurrent SSE clients per SlimFaas pod. 0 means unlimited. |
SlimFaas:StatusStream:SubscriberChannelCapacity |
SlimFaas__StatusStream__SubscriberChannelCapacity |
10000 |
Bounded channel capacity per SSE subscriber for live activity events. Must be greater than 0. |
SlimFaas:StatusStream:RecentActivityLimit |
SlimFaas__StatusStream__RecentActivityLimit |
1000 |
Maximum recent activity events retained in memory for snapshots and peer sync. Must be greater than 0. |
SlimFaas:StatusStream:KnownIdsLimit |
SlimFaas__StatusStream__KnownIdsLimit |
10000 |
Maximum event IDs retained for peer de-duplication. Must be greater than 0. |
SlimFaas:StatusStream:MaxLiveEventsPerSecond |
SlimFaas__StatusStream__MaxLiveEventsPerSecond |
0 |
Maximum live events broadcast per second per SlimFaas pod. 0 disables rate limiting. |
SlimFaas:StatusStream:LiveEventSamplingRatio |
SlimFaas__StatusStream__LiveEventSamplingRatio |
1.0 |
Ratio of live activity events broadcast to SSE clients. 1.0 sends all, 0 sends none. Stored events and peer sync are not sampled. |
SlimFaas:StatusStream:LiveActivityBatchSize |
SlimFaas__StatusStream__LiveActivityBatchSize |
100 |
Maximum live activity events grouped in one activity_batch SSE frame. Must be greater than 0. |
StatusStream is optional in appsettings.json. If the section is missing, SlimFaas uses the default values above.
9. Example Kubernetes Environment Overrides
env:
- name: SlimFaas__EnableFront
value: "true"
- name: SlimFaas__StatusStream__StateIntervalMilliseconds
value: "1000"
- name: SlimFaas__StatusStream__MaxSseClients
value: "100"
- name: SlimFaas__StatusStream__MaxLiveEventsPerSecond
value: "500"
- name: SlimFaas__StatusStream__LiveActivityBatchSize
value: "100"
Use lower intervals for more reactive dashboards and higher intervals for lower backend load. In high-traffic clusters, prefer setting MaxLiveEventsPerSecond, LiveEventSamplingRatio, and LiveActivityBatchSize instead of disabling the front entirely.