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:

  • state events: periodic full snapshots containing functions, queue lengths, jobs, SlimFaas replicas, SlimFaas nodes, and front status.
  • activity events: single live network activity events.
  • activity_batch events: 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.