Skip to content

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.

The settings sidebar has these sections:

SectionWhat you configure
ProfileDisplay name, email, avatar, timezone, theme
AgentDefault agent settings and behavior
ProvidersAPI keys and default models for each LLM provider
Package CredentialsAPI keys, tokens and passwords for marketplace packages, including custom ones you add
ProactiveProactive behavior settings, idle triggers
SecurityApproval policies, access controls, permissions
StrategyExecution strategy, team orchestration settings
InterfaceUI appearance, font size, animations, accessibility
MemoryMemory layer toggles, embedding settings
VoiceTTS provider and voice selection
ChannelsPlatform credentials, bindings, adapter settings
BrowserBrowser profile, headless mode, proxy, tab limits
FeaturesWhat this install includes; install Chromium or the Memory Nebula pack; commands for extras
MarketplaceMarketplace account, publishing settings
ChatChat-specific settings and defaults
LicenseLicense key management and plan details

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

For each supported provider, enter your API key and select the default model:

ProviderModels
AnthropicClaude Opus 4.6, Claude Sonnet 4.6, Claude Sonnet 4.5, Claude Haiku 4.5
OpenAIGPT-5.3 Codex, GPT-5.2, GPT-4o, o3 (Reasoning), o4-mini (Fast Reasoning)
OpenRouterClaude Opus 4.6, GPT-5.3 Codex, Gemini 2.5 Pro, Llama 4 Scout, DeepSeek V3.2, Grok 4
GeminiGemini 2.5 Pro, Gemini 2.5 Flash, Gemini 3.1 Pro (Preview), Gemini 3 Flash (Preview)
DeepSeekDeepSeek V3.2, DeepSeek R1 (Reasoner)
xAI GrokGrok 4.20 (Reasoning), Grok 4, Grok 4 Fast, Grok 3
GroqGPT-OSS 120B, GPT-OSS 20B (Fast), Llama 4 Scout, Llama 3.3 70B
MistralMistral 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.

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.

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.

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 as ANTHROPIC_API_KEY) are refused.

  • Type: API key, token, password, secret or other. The example chips fill in common ones:

    ExampleTypeTypical use
    FAL_KEYAPI keyfal.ai image and video generation
    OPENWEATHER_API_KEYAPI keyWeather lookups
    NOTION_TOKENTokenNotion integration
    SMTP_PASSWORDPasswordSending mail
    STRIPE_WEBHOOK_SECRETSecretVerifying webhook signatures
    DATABASE_URLOtherA 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.

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:

GroupExamplesWho gets it
Package keys — set for packagescustom credentials, keys set on a package’s card, PIAPI_API_KEYevery package that declares the name
Shared keys — Snippbot uses them elsewhereprovider 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 ownmarketplace tokens, OAuth client secrets, signing keys, the daemon’s system tokennever

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.

Configure approval policies, access controls, and permissions for agents and users.

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.

Configure execution strategy for projects and team orchestration settings (Architect, Executor, Reviewer loop).

Customize the UI appearance:

  • Theme selection
  • Font size
  • Animation toggle
  • Accessibility settings

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

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

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.

The Channels section configures platform integrations:

Click any platform to configure it. Each shows:

  • Connection status (connected / not configured / error)
  • Credential form (platform-specific fields)
  • Bindings list

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
  • 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.

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.

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.

Manage your license key and view current plan details.