đĨī¸ Web UI Guide
Tresor includes an embedded single-page application accessible through any web browser. The web UI is served by the daemon itself on the configured bind_addr â no separate frontend deployment needed.
Access it at http://127.0.0.1:11510 (or whatever bind_addr you configured).
đ Authenticationâ
If you set admin_password in the config, the web UI shows a login screen with a password input field. Enter the password to obtain a session token. All dashboard operations require authentication.
The login screen features the Tresor logo and brand name. If no password is configured, the dashboard opens directly.
đ¨ Themeâ
The web UI supports dark and light themes. A theme toggle button in the sidebar lets you switch between modes. By default, the UI follows your browser's prefers-color-scheme setting. Theme preference is session-only (not persisted).
đ Dashboard Tabsâ
đ Downstreamsâ
The Downstreams tab displays all configured LLM provider endpoints in a table.
Table columns:
| Column | Content |
|---|---|
| Name | Provider display name |
| Format | Color-coded badges showing API format(s) (OpenAI, Anthropic) |
| Base URL | Provider API endpoint |
| API Key | Masked key (shown as ***) |
| Models | Model count badge + expandable list |
| Actions | Edit / Delete buttons |
Actions:
- â Add Downstream â Create a new provider endpoint with name, base URL, API key, and format selection (OpenAI/Anthropic checkboxes)
- âī¸ Edit â Modify any downstream's settings including format checkboxes
- đĸ Add Model â Manually add model IDs to the downstream's
output_model_idslist - đ Fetch Models â Calls the provider's
/modelsendpoint to auto-discover available models and add them with one click - đī¸ Delete â Remove the downstream entirely (cascade: removes downstream ID from rule
match_downstreamsarrays, deletes pointing aliases)
đˇī¸ Aliasesâ
The Aliases tab organizes model mappings into group cards. Each card represents an input model and shows all its alias options as clickable cards in a grid layout.
Actions:
- â Create Group â Define a new input model with its first alias option. Uses a tag-based model multi-select populated from the selected downstream's known models, plus a custom text input for arbitrary model IDs. A Regex checkbox lets you define the input model as a regular expression pattern (e.g.,
^claude-.*to match all Claude models). - đ Add Option â Add another provider/model mapping to an existing group. Includes a Regex checkbox for pattern-based matching.
- ⥠Activate â Click on any inactive option card to hot-switch and make it the active one for its group (deactivates siblings)
- đī¸ Delete Option â Remove an individual alias option (auto-promotes sibling if deleting the active one)
- đĨ Delete Group â Remove all aliases for an input model at once
- đ Drag-and-Drop Reorder â Drag a group's header to reorder groups vertically. Groups are displayed in
group_ordersequence; dragging a header to a new position updates the ordering on the server immediately. Groups with regex options show a purple "regex" badge in the header.
đ Rulesâ
The Rules tab shows all routing rules in a table with enable/disable toggle switches.
Table columns:
| Column | Content |
|---|---|
| Name | Rule display name |
| Pattern Path | URL path pattern |
| Pattern Model | Optional model filter |
| Match | Color-coded badges showing format/downstream filters (e.g. in:openai, out:anthropic, ds:OpenAI) |
| Pipeline | Plugin chain (shown as plugin1 â plugin2) |
| Enabled | ON/OFF status badge |
| Actions | Edit / Toggle / Delete buttons |
Actions:
- â Create Rule â Define a new rule with name, path pattern, optional model filter, format filters (input format checkboxes, downstream format checkboxes, downstream multi-select)
- âī¸ Edit â Modify rule settings including format filters and a visual pipeline builder:
- Format checkboxes for input and downstream format filters
- Multi-select for matching downstreams
- Select a plugin from a dropdown list
- Configure plugin-specific options through dynamically generated fields (e.g., header key-value pairs for
custom_header) - Each pipeline step is rendered as a card with the plugin description and config form
- Add/remove steps with buttons
- đ Toggle Enable/Disable â Activate or deactivate a rule without deleting it
- đī¸ Delete â Remove the rule
đ Pluginsâ
The Plugins tab is a read-only reference showing all available built-in plugins:
| Column | Content |
|---|---|
| ID | đ Plugin identifier (used in pipeline_config) |
| Description | đ What the plugin does |
| Config Schema | đ JSON schema for valid configuration options |
Use this tab to look up plugin IDs and configuration options when building pipeline configs.
âī¸ Settingsâ
The Settings tab configures global gateway behavior. Changes take effect immediately (no restart needed) and are persisted to the YAML config file automatically. â¨
Outbound Proxy:
- Proxy Mode dropdown:
auto,env,windows,none - Contextual help text explains each mode's behavior
Proxy Authentication:
- Add/remove API keys that client applications must present (
Authorization: Bearer <key>) - Visual key editor with add/remove buttons
- Leave empty to allow all traffic
Admin Password:
- Change the admin password (enter new password + confirm)
- Clear password to disable authentication entirely
- Changing the password logs out the current session
Dashboard:
- Default Tab selector:
downstreams,aliases,rules,plugins,settings,logs,about - Controls which tab is shown on page load or refresh
đ Logsâ
The Logs tab shows real-time gateway request logs via Server-Sent Events (SSE). Entries are sorted newest first, so the most recent request appears at the top.
Table columns:
| Column | Content |
|---|---|
| Time | Request timestamp |
| Method | HTTP method (GET, POST, etc.) |
| Path | Request path |
| Model | Resolved model name (or input model if no alias) |
| Downstream | Target provider name |
| Alias | Alias group used (or "â") |
| Status | HTTP status code (color-coded: green < 400, amber 4xx, red 5xx) |
| Duration | Request latency |
| Error | Error message (if any) |
Actions:
- đ Filter â A text input at the top of the logs table filters visible rows in real-time. Matches against model, path, downstream, status, error, alias group, and method.
- ⸠Pause â Temporarily stops rendering new log rows (keeps the SSE connection alive). Click âļ Resume to continue rendering.
- đī¸ Clear â Removes all entries from the table and in-memory buffer.
- đ´ Live indicator â Shows connection status: "Live" (green), "Paused" (amber), "Offline" (red), "Disconnected" (grey).
The SSE connection is only active while the Logs tab is visible; switching to another tab automatically disconnects it to save resources.
âšī¸ Aboutâ
The About tab displays:
- Tresor logo and tagline
- Current binary version and build time
- Links to the GitHub repository and documentation
- Brief project description
đž Persistenceâ
All changes made in the web UI are:
- ⥠Applied immediately to the running daemon (no restart needed)
- đŋ Persisted to the SQLite database
- đ Written back to the YAML config file atomically