Discover
The Discover tab is the Web UI's landing page. It scans your local network for Saturn-compatible AI services and displays them alongside an animated 3D visualization.
Layout
The tab uses a two-column layout:
- Left column — animated 3D Saturn scene (Three.js)
- Right column — Discover button, service checklist, and admin controls
Saturn Visualization
The left panel renders an interactive Saturn planet using Three.js:
- Planet — particle-based surface, rotated 45° with ring system
- Stars — 50 background stars with sine-wave brightness animation
- Moons — one orbiting moon per online service. Moons turn green when you check their corresponding service in the checklist
- Scan animation — pressing Discover triggers faster star pulsing, ring glow, and a vertical green scan line sweep
The scene renders at the browser's native refresh rate and resizes responsively.
Scanning for Services
Press the Discover button to trigger an mDNS scan (GET /api/discover). Saturn broadcasts a query for _saturn._tcp.local and collects responses from any service advertising on the network.
After the scan completes, a service checklist appears in the right column. Each entry shows:
| Element | Description |
|---|---|
| Checkbox | Select this service for use in Chat |
| Service name | The advertised hostname (e.g., derrick-LLMBuffet, OLLAMA-local) |
| Status badge | Online (green) or Offline (gray) |
Check a service to make it available in the Chat tab's service selector. The corresponding moon in the visualization turns green.
Tip
You can run Discover multiple times. New services appear automatically; previously discovered services update their status.
Admin Authentication
Service management controls are gated behind admin authentication. Click the lock icon or attempt to configure a service to trigger the password prompt.
There is no default. Set SATURN_ADMIN_PASSWORD (for the Web-UI login form) and SATURN_ADMIN_TOKEN (for programmatic /api/* calls) before starting Saturn — Saturn refuses to start if either is missing, and rejects passwords that are empty, equal to saturn, or shorter than 12 characters (CONFIG_FIELDS §A.2):
SATURN_ADMIN_PASSWORD=correct-horse-battery-staple-9 \
SATURN_ADMIN_TOKEN=$(openssl rand -hex 32) \
saturn web
After authenticating, you gain access to:
- The server management panel
- The service configuration form
- The Configure New Service button
Warning
The admin password gates the Web-UI login form. Programmatic API access requires SATURN_ADMIN_TOKEN as a Bearer header on every /api/* call. The chat interface remains open by default — for secure external exposure, see Remote Access and the TLS-posture recommendations in docs/reference/protocol/security.md.
Server Management
After admin authentication, a Current Running Servers panel shows all configured services with toggles to start or stop each one.
Each server entry displays:
| Element | Description |
|---|---|
| Checkbox | Whether the server is currently running |
| Server name | Configuration name (e.g., derrickLLM_buffet, OLLAMA) |
| Status | Running or stopped |
Toggle a checkbox to start (POST /api/services/{name}/start) or stop (POST /api/services/{name}/stop) a backend.
Service Configuration
Click Configure New Service to open the configuration form. The left column switches to a starfield background with the form title, while the right column displays the form fields.
The form mirrors the structure of Saturn's TOML service configs (stored in ~/.saturn/services/). Saving a service here creates or updates the corresponding TOML file.
Core Fields
| Field | Type | Description |
|---|---|---|
| Name | text | Service identifier. Becomes the TOML filename |
| Deployment | select | Cloud or Network — controls which conditional fields appear |
| API Type | select | OpenAI-compatible or Ollama-native |
| Enabled | toggle | Whether the service is active (default: on) |
| Priority | number | 0–100, lower = preferred by the router (default: 10) |
| Base URL | text | API endpoint (e.g., https://openrouter.ai/api/v1) |
Cloud Deployment Fields
When Deployment is set to Cloud, these additional fields appear:
| Field | Type | Description |
|---|---|---|
| API Key | password | Secret key for the cloud provider |
| Advertise Port | number | Port to broadcast on mDNS so LAN clients can discover this cloud service |
| Ephemeral Keys | toggle | Enable rotating short-lived keys for secure sharing |
Ephemeral Keys
When the Ephemeral Keys toggle is enabled, additional fields expand:
| Field | Type | Description |
|---|---|---|
| Key Generation Endpoint | text | URL that issues temporary API keys |
| Spending Limit | number | Maximum spend per ephemeral key (USD) |
| Rotation Interval | duration | How often keys rotate (e.g., 5m) |
| Expiration | duration | How long each key remains valid (e.g., 10m) |
Ephemeral keys let administrators share cloud API access without exposing the master key. Each generated key has a spending cap and automatically expires.
Network Deployment Fields
When Deployment is set to Network, these fields appear instead:
| Field | Type | Description |
|---|---|---|
| Host | text | Hostname or IP of the service (e.g., 192.168.1.50) |
| Port | number | Port the service listens on (e.g., 11434 for Ollama) |
Status Badges
Each configured service shows a status badge:
| Badge | Color | Meaning |
|---|---|---|
| UP | Green | Service is reachable and responding |
| DOWN | Red | Service is unreachable or returning errors |
| DISABLED | Gray | Service is configured but not enabled |
| UNKNOWN | Yellow | Status has not been checked yet |
Actions
| Button | Action |
|---|---|
| Test Connection | Hits GET /health on the configured endpoint to verify connectivity |
| Save | Writes the configuration to ~/.saturn/services/{name}.toml |
| Back | Returns to the server management panel |
Tip
The configuration form is modeled after LuCI (the OpenWrt router admin interface) — if you've configured a router, this should feel familiar.