Skip to main content

đŸ–Ĩī¸ 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:

ColumnContent
NameProvider display name
FormatColor-coded badges showing API format(s) (OpenAI, Anthropic)
Base URLProvider API endpoint
API KeyMasked key (shown as ***)
ModelsModel count badge + expandable list
ActionsEdit / 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_ids list
  • 🔎 Fetch Models — Calls the provider's /models endpoint to auto-discover available models and add them with one click
  • đŸ—‘ī¸ Delete — Remove the downstream entirely (cascade: removes downstream ID from rule match_downstreams arrays, 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_order sequence; 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:

ColumnContent
NameRule display name
Pattern PathURL path pattern
Pattern ModelOptional model filter
MatchColor-coded badges showing format/downstream filters (e.g. in:openai, out:anthropic, ds:OpenAI)
PipelinePlugin chain (shown as plugin1 → plugin2)
EnabledON/OFF status badge
ActionsEdit / 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:

ColumnContent
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:

ColumnContent
TimeRequest timestamp
MethodHTTP method (GET, POST, etc.)
PathRequest path
ModelResolved model name (or input model if no alias)
DownstreamTarget provider name
AliasAlias group used (or "—")
StatusHTTP status code (color-coded: green < 400, amber 4xx, red 5xx)
DurationRequest latency
ErrorError 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:

  1. ⚡ Applied immediately to the running daemon (no restart needed)
  2. đŸ’ŋ Persisted to the SQLite database
  3. 📝 Written back to the YAML config file atomically