Skip to Content
Polyant is open source under AGPL-3.0 — star us on GitHub.
Admin PanelSettings

Tab: Settings

The Settings tab holds the per-instance configuration that is not prompts, tools, skills, or channels. Two groups of fields:

LLM provider and model selection

The Settings tab exposes one provider select and one model select per instance — not three separate model dropdowns. The provider list is populated at runtime from modelsData.providers (the engine’s /api/models endpoint), and the model dropdown is filtered by the provider’s available models.

The fast / standard / heavy tier → model mapping itself is global, defined in packages/engine/src/ai-gateway/config.ts. Picking a model on this tab sets the instance’s default; the tier selection inside the engine still routes each call to the appropriate model based on that global mapping.

The defaults match the Core Concepts tier table.

API keys (per instance, encrypted)

FieldUsed by
openai_api_keyChat completions when provider is openai. Always used for embeddings.
anthropic_api_keyChat completions when provider is anthropic.
aws_access_key_idBedrock chat completions (provider bedrock).
aws_secret_access_keyBedrock chat completions.
aws_regionBedrock chat completions.
LangSmithTracing — used when langsmithEnabled is on.
Auth API keyThe bearer token end users must send when calling /v1/chat/completions (only when authEnabled is on).
DeepgramSpeech-to-text for audio messages on WhatsApp/Telegram.
Tavily / SerpAPIWeb search (one of, selected by the search_provider setting).

The BRAND_NAMES table in settings-tab.tsx includes both aws (Amazon Transcribe / STT) and bedrock (chat completions) as distinct entries — they correspond to different providers even though they share the AWS credential rows above.

The secrets actually rendered in the UI are populated dynamically from the requiredEnv declared by each enabled tool/skill on the instance — so the visible list depends on what’s enabled. For example, serpapi_api_key only appears once a tool that requires it (such as web search with search_provider = serpapi) is enabled.

Every key is stored encrypted with AES-256-GCM. The admin panel never displays the value back; you can rotate or clear, but not “view”.

Feature flags

  • memoryEnabled — when on, the engine extracts facts from each conversation in the background and writes them to the memory store. Requires an OpenAI key even if the chat provider is Anthropic, because embeddings always go through OpenAI. Default: on.
  • knowledgeEnabled — when on, the per-instance knowledge base is active and the searchKnowledge / getKnowledge / writeKnowledge tools register in instance_tools. Default: off. See Knowledge tab.
  • langsmithEnabled — when on, every LLM call is mirrored to LangSmith for tracing. Requires the LangSmith API key field above.
  • authEnabled — when on, /v1/chat/completions requires Authorization: Bearer <auth-api-key>. Off by default; turn it on before exposing the engine to the public internet.

Speech-to-text provider

The sttProvider select (i18n key settings.tab.sttProvider) picks the STT backend for inbound voice notes on WhatsApp / Telegram. One of:

  • openai — Whisper via the OpenAI API key already configured above. The default.
  • aws — Amazon Transcribe, billed through the AWS credentials above.
  • deepgram — Deepgram Nova, requires the Deepgram API key field.

Thinking

The Thinking section (i18n keys settings.tab.thinking / settings.tab.thinkingHelp) exposes the per-instance thinkingEnabled flag (stored on the instances table). When on, the engine asks the LLM to use extended reasoning for standard and heavy calls — visible chain-of-thought tokens that improve quality on complex tasks at the cost of latency and token spend.

The toggle is gated by model capability: it is only writable when the currently selected standard/heavy model advertises a reasoning mode (Anthropic Claude with thinking, OpenAI o-series, etc.). Selecting a non-reasoning model disables the toggle and clears the flag.

Web search provider

The web-search provider select (search_provider) is rendered inline inside the secrets loop as one of the RequiredSecretSpec rows — not as a dedicated standalone section. It appears alongside the corresponding API key field. Pick one of:

  • Tavily — requires tavily_api_key in the instance secrets.
  • SerpAPI — requires serpapi_api_key.
  • DuckDuckGo — no API key; rate-limited public endpoint, best for development.

The webSearch tool routes through the selected provider transparently.

Embedding caveat

The single most common configuration mistake is enabling memory on an Anthropic-only instance and forgetting that embeddings always require OpenAI. The symptom is a runtime error in the engine logs every time the post-response extractor fires, while chat itself works fine. Fix: paste an OpenAI key in the OpenAI field even when provider = anthropic.

Last updated on