Technical docs

Settings

Public reference generated from tech docs/settings.md.

Overview

Support reference for `/org-settings`.

Routes and tabs

- `/org-settings` redirects to `/org-settings/organization` - Tabs: - `Organization` - `Webchat` - `API Keys` - Shared shell: - layout title: `Settings` - description: `Manage your organization settings and customizations.`

Organization

- Page title: `Organization` - Description: `Manage your organization's general settings` - Current editable items: - `Organization Name` - `Debug Mode` - `Logo` upload is present but disabled with `Coming soon`. - Save button label: `Save` - Permission note: - the frontend enables editing only for org `admin` / `owner` users, plus developer users via `canAccessTool({ isOrgAdmin: true })` - the backend `PUT /api/organizations/{id}` independently checks org role and rejects non-admin members with `403` - Backend/data flow: - the page only sends `name` or `is_debug_mode` - the route is `PUT /api/organizations/{id}` - the broader update payload also supports provider API keys and `description`, but those fields are not exposed on this page - websocket refresh comes through `organization.updated`

Webchat

- Focus: appearance settings plus live preview. - Widget domain choices: - `alloy.cx` - `alloy.ws` - Theme choices: - `System` - `Light` - `Dark` - `Custom` - Section labels: - `Appearance` - `Widget domain` - `Theme` - `Live Preview` - Current UI controls: - minimized widget: `Bubble color`, `Icon color` - maximized widget: `Chat background`, `Primary color` - customer messages: `Bubble color`, `Text color` - agent messages: `Bubble color`, `Text color` - `Custom CSS` textarea - `System` mode preview tabs for `light` and `dark` - Footer actions: - `Reset to defaults` - `Save changes` - Confirmed backend values: - `mode`: `system`, `light`, `dark`, `custom` - `widgetDomain`: `default`, `proxy` - Permission note: - widget settings are organization-scoped and authorized by backend checks

- Backend/data flow: - `GET /api/organizations/{id}/settings/webchat-widget-settings` returns `{ settings, defaults }` - `POST /api/organizations/{id}/settings/webchat-widget-settings` upserts the stored delta and returns merged `{ settings, defaults }` - reset-to-defaults is implemented as `POST` with an empty body - defaults include additional runtime fields not currently editable in the page: - `opacity` - `primaryTextColor` - `secondaryTextColor` - `borderColor` - `systemMessageColor` - those extra fields are still part of the backend schema and are consumed by the widget runtime if present - Preview/runtime notes: - the preview loads `${NEXT_PUBLIC_API_URL}/widget/alloy-webchat-widget.js` - it initializes the widget with the org `public_api_key` - `widgetDomain: proxy` is used by backend snippet generation to switch from `API_DOMAIN` to `API_PROXY_DOMAIN`

API Keys

- Page title: `API Keys` - Description: `Manage your API keys and provider credentials` - Cards: - `Providers API Keys` - `Alloy API Keys` - Provider rows: - `OpenAI` - `OpenRouter` - `Google` - `DeepSeek` - `Anthropic` - Provider key actions: - type key - `Save API Key` - `Copy to clipboard` after save - `Clear API Key` - Saved provider keys stay masked in the input. - Alloy key rows: - `Public` - `Private` - Alloy key behavior: - public key is shown directly and can be copied - private key stays masked in the UI and is fetched only when the user clicks copy - Permission note: - there is no frontend role gate on this page - provider key save and clear still go through `PUT /api/organizations/{id}`, which requires org `owner` or `admin` - private Alloy key copy is available from the API Keys page for authorized organization users

- Backend/data flow: - provider credentials save and clear through `PUT /api/organizations/{id}`

- runtime uses a matching saved provider key before falling back to the Alloy system key for the same provider - usage with org-saved provider keys is still written to token history and cost reporting, but it does not reduce org `available_tokens` - org state on this page stays in sync through `organization.updated`

Not in this settings shell

- `models` and `voices` are separate tools, not `/org-settings/*` - `/system-settings` is separate from org settings

Start building your AI team