Settings UI
The Settings page (/settings) organizes all configuration in a sidebar-nav interface (the Settings Sanctum). Changes apply immediately without restarting the daemon. The active section is synced to the URL via ?section= query parameter.
Navigation
Section titled “Navigation”The settings sidebar has these sections:
| Section | What you configure |
|---|---|
| Profile | Display name, email, avatar, timezone, theme |
| Agent | Default agent settings and behavior |
| Providers | API keys and default models for each LLM provider |
| Package Credentials | API keys, tokens and passwords for marketplace packages, including custom ones you add |
| Proactive | Proactive behavior settings, idle triggers |
| Security | Approval policies, access controls, permissions |
| Strategy | Execution strategy, team orchestration settings |
| Interface | UI appearance, font size, animations, accessibility |
| Memory | Memory layer toggles, embedding settings |
| Voice | TTS provider and voice selection |
| Channels | Platform credentials, bindings, adapter settings |
| Browser | Browser profile, headless mode, proxy, tab limits |
| Features | What this install includes; install Chromium or the Memory Nebula pack; commands for extras |
| Marketplace | Marketplace account, publishing settings |
| Chat | Chat-specific settings and defaults |
| License | License key management and plan details |
Profile
Section titled “Profile”The profile section lets you set:
- Display name — shown in the UI header and agent history
- Email — used for notification delivery
- Avatar — upload a custom profile photo
- Timezone — affects scheduler time display and quiet hour calculation
- Theme — Aurora Dark (default), or light mode
Providers
Section titled “Providers”For each supported provider, enter your API key and select the default model:
| Provider | Models |
|---|---|
| Anthropic | Claude Opus 4.6, Claude Sonnet 4.6, Claude Sonnet 4.5, Claude Haiku 4.5 |
| OpenAI | GPT-5.3 Codex, GPT-5.2, GPT-4o, o3 (Reasoning), o4-mini (Fast Reasoning) |
| OpenRouter | Claude Opus 4.6, GPT-5.3 Codex, Gemini 2.5 Pro, Llama 4 Scout, DeepSeek V3.2, Grok 4 |
| Gemini | Gemini 2.5 Pro, Gemini 2.5 Flash, Gemini 3.1 Pro (Preview), Gemini 3 Flash (Preview) |
| DeepSeek | DeepSeek V3.2, DeepSeek R1 (Reasoner) |
| xAI Grok | Grok 4.20 (Reasoning), Grok 4, Grok 4 Fast, Grok 3 |
| Groq | GPT-OSS 120B, GPT-OSS 20B (Fast), Llama 4 Scout, Llama 3.3 70B |
| Mistral | Mistral Large 3, Mistral Small 4, Devstral 2 (Coding), Codestral |
API keys are stored in ~/.snippbot/config.toml and masked in the UI. Custom providers can be added via the Custom Provider Modal.
Backup providers
Section titled “Backup providers”A subscription provider (Claude through Claude (Native Tools), or OpenAI Codex (Native Tools)) can run out of its 5-hour or 7-day usage window. The Backup providers card on the Providers page moves work off a provider before that happens, and back after the window resets.
- Backup per provider. Each provider maps to a backup provider and model, or None. By default Claude backs up to Codex · GPT-5.5 and Codex backs up to Claude · Opus 5.5; API-key providers have no backup. Agents, swarms, loops and Snippbot’s internal jobs on a provider all follow its rule — a running swarm or loop switches on its next agent, without a restart.
- When it switches. At 80% of the 5-hour window or 90% of the 7-day window (both adjustable), or as soon as the provider reports it is out.
- When it switches back. After the limit resets (the Move back to the primary after its limit resets toggle, on by default), or earlier if fresh usage drops under the early-return floor (60% by default). It won’t flip back and forth while usage hovers around the threshold. With the toggle off, use Return to primary on the provider once its window has reset.
- When the backup is near its limit too. Swarms and loops pause until the earliest reset and then resume by themselves; tasks that were interrupted go back to To-do without counting as failures. Choose Keep going on whichever still has headroom to run until both providers are actually out. A chat turn always runs on whichever provider still works, and only when both are out does it stop with the time the earliest one resets.
Each subscription shows live 5-hour and 7-day usage meters with their reset times (the tick marks the switch threshold), and a Failed over → backup badge while its work is on the backup. The usage comes from the CLIs themselves: the Claude CLI reports it on every call, the Codex CLI after every turn.
Package Credentials
Section titled “Package Credentials”Marketplace packages list the environment variables they need in their manifest (permissions.environment.env_vars). Credential-style names such as *_API_KEY, *_TOKEN, *_SECRET and *_PASSWORD show up here as cards with Set key / Update / Remove. Values are stored encrypted in ~/.snippbot/secrets.db and are never shown again, only a masked preview.
Custom credentials
Section titled “Custom credentials”Add custom credential saves a key before any package asks for it. Enter:
-
Name: the environment-variable name a package reads, for example
FAL_KEY. Use capital letters, digits and underscores. Names Snippbot or the system rely on (PATH,HOME,PYTHON*,LD_*,SNIPPBOT_*, provider keys such asANTHROPIC_API_KEY) are refused. -
Type: API key, token, password, secret or other. The example chips fill in common ones:
Example Type Typical use FAL_KEYAPI key fal.ai image and video generation OPENWEATHER_API_KEYAPI key Weather lookups NOTION_TOKENToken Notion integration SMTP_PASSWORDPassword Sending mail STRIPE_WEBHOOK_SECRETSecret Verifying webhook signatures DATABASE_URLOther A database connection string -
Note (optional): what the key is for.
-
Value: the key itself.
A custom credential reaches a package’s tools only when that package declares the same name. Until then it’s listed under Custom credentials; once an installed package declares the name, the card moves to Used by installed packages and names the package. The value is never added to agents’ shell commands. Edit details changes the type and note; Update replaces the value; Delete removes it.
A key you set for a package stays after you uninstall the package. Keys set from this version on are listed under Left by removed packages so you can remove them, or add a custom credential with the same name to keep one. (Keys set before this version aren’t listed once their package is gone; remove them with snippbot secrets delete <name>.) A disabled package stays listed under its own name, marked disabled.
Who receives a key
Section titled “Who receives a key”A package’s tools receive only the keys its manifest declares, and only while its Environment permission is on (package details on Packages). Each declared key falls into one of three groups:
| Group | Examples | Who gets it |
|---|---|---|
| Package keys — set for packages | custom credentials, keys set on a package’s card, PIAPI_API_KEY | every package that declares the name |
| Shared keys — Snippbot uses them elsewhere | provider keys (OPENAI_API_KEY, GEMINI_API_KEY, custom providers’ keys), voice keys, GITHUB_TOKEN, and secrets that exist only in the environment Snippbot was started with (for example an exported DATABASE_URL) | only packages you Allow, one by one |
| Internal — Snippbot’s own | marketplace tokens, OAuth client secrets, signing keys, the daemon’s system token | never |
A shared key’s card is marked Shared · needs your permission and lists each package that asks for it: Allow… asks you to confirm, Revoke takes effect at once. A package with Environment off says so and links to its permissions. When a package’s Python tool fails while a key was held back, its error tells the agent which key and where to allow it. An HTTP tool whose request needs a held-back key doesn’t send the request at all; it returns the same explanation.
The marketplace Permission Request dialog (and Skill Builder’s install step, and the approval card when an agent asks in chat to install a package) lists every key a package asks for by name. Shared keys are unchecked checkboxes; check one to allow it for that package, or leave it unchecked to say no. On an update, keys you allowed before start checked, and unchecking one revokes it. Reinstalling a package from a different source (a file instead of the marketplace) clears its shared-key permissions.
Some installs never show that list: bundles, snippbot marketplace install, Snipp’s package installs and updates. When a package installed that way wants a shared key you have saved, a Waiting for your answer list at the top of Package Credentials offers Allow… or Not now (which records the no, so it isn’t asked again; you can still allow it later on the key’s card). Settings shows a count in the sidebar while any are waiting, and an install made while Snippbot is open also pops up a notice with Review.
Security
Section titled “Security”Configure approval policies, access controls, and permissions for agents and users.
Account & Access
Section titled “Account & Access”At the top of the Security section, the Account & Access card manages your login credentials:
- Change password — enter your current password plus a new one (minimum 8 characters). On success you are signed out on all devices and returned to the login screen, since changing the password revokes every active session. (An incorrect current password shows an inline error and keeps you on the page.)
- API keys — list, create, and revoke the
snip_…keys used by the CLI and automation. Creating a key shows the full value once in a dialog — copy it then, as it is never shown again; the list only shows a masked prefix. Revoking a key takes effect immediately and cannot be undone.
Strategy
Section titled “Strategy”Configure execution strategy for projects and team orchestration settings (Architect, Executor, Reviewer loop).
Interface
Section titled “Interface”Customize the UI appearance:
- Theme selection
- Font size
- Animation toggle
- Accessibility settings
Memory
Section titled “Memory”Configure memory layers:
- Episodic memory enable/disable
- Vector embedding settings
- Knowledge graph configuration
Configure TTS (text-to-speech) settings:
- Provider selection
- Voice selection per agent
Browser
Section titled “Browser”Configure how Snippbot connects to and manages browser instances for automation tasks:
- Profile: Choose between Managed Chromium (built-in), System Chrome (your installed Chrome), CDP (connect to an existing Chrome DevTools Protocol endpoint), or Browserless (remote browser service)
- Headless: Toggle headless mode on or off (default: on)
- CDP URL: When using the CDP profile, enter the DevTools Protocol URL to connect to
- Browserless Token: When using the Browserless profile, enter your API token
- Chrome Executable: When using System Chrome, specify the path to your Chrome binary
- Max Tabs: Maximum number of browser tabs the agent can open simultaneously (default: 10)
- Default Timeout: Page load and action timeout in seconds (default: 30)
- Proxy Settings: Optional proxy server URL, username, and password for routing browser traffic
Features
Section titled “Features”Shows what this Snippbot install includes and how to add the rest, grouped as:
- Install in the app: Chromium and the Memory visualization pack. Install… opens a dialog that lists exactly what will be installed, with sizes, before anything changes. The install runs in the background with a live log and needs no restart.
- Included with Snippbot: features every install has. A Missing one means the install is damaged; a banner at the top gives the repair command. Not available here means your OS or Python version can’t run that feature, with the reason.
- Optional extras: features added from a terminal, each with the exact command for your install and a Copy button.
Check again re-reads the list, for example after running a command in a terminal. See Optional features for details.
Channels
Section titled “Channels”The Channels section configures platform integrations:
Platform setup
Section titled “Platform setup”Click any platform to configure it. Each shows:
- Connection status (connected / not configured / error)
- Credential form (platform-specific fields)
- Bindings list
Bindings
Section titled “Bindings”Create and manage channel-to-agent bindings:
- Select a platform channel
- Select which agent handles messages
- Set access mode (open / allowlist / admin_only)
- Manage the user allowlist
Global settings
Section titled “Global settings”- Adapter port: port the channel adapter listens on (default: 18790)
- Public URL: your externally accessible URL (required for webhooks)
- Rate limits: messages per minute and per hour
- Proactivity: enable/disable and set quiet hours
- Echo app messages to channel threads (on by default): when you continue a Slack or Google Chat thread from the app or web, your message and the agent’s reply are posted in that thread too. Agents’ own updates in a channel conversation (check-ins, finished jobs) are posted either way.
Marketplace
Section titled “Marketplace”Configure marketplace account settings, publishing preferences, and manage your publisher dashboard.
Chat-specific settings including default conversation behavior, with a setup walkthrough for first-time configuration.
Export, import & reset
Section titled “Export, import & reset”The bottom of the settings sidebar has three bulk actions that cover every settings section (profile, agent, interface, memory, security, proactive, browser, voice, providers, channels, dispatcher, model routing, loops, and email/SMTP):
- Export Settings — downloads a single
snippbot-settings-<date>.json. Secrets are never included: provider/package API keys, the browser proxy password, the channel tunnel authtoken, and SMTP passwords are all stripped, and MCP server definitions are omitted entirely (their URLs, args, and env commonly embed tokens that can’t be safely exported). - Import Settings — upload a previously exported file. Each section is applied independently, so a malformed section is reported without aborting the rest. Custom tools and channel bindings are merged by name (existing entries are kept, not overwritten). Any secret the export omitted stays at its current value. Imported channel adapter settings (tunnel, autostart, port) only take effect after a daemon restart.
- Reset Settings — restores your preferences to their defaults. It does not delete your custom tools, MCP servers, or channel connections, and it leaves your channel tunnel and email/SMTP credentials untouched.
License
Section titled “License”Manage your license key and view current plan details.