Skip to content

Configuration Reference

OpenPollen uses JSON5 format configuration files with support for comments and trailing commas. The config file is located at ~/.openpollen/openpollen.json, or can be placed as openpollen.json in the project root.

Environment variables can be referenced using ${VAR_NAME} syntax.

agent

Agent runtime configuration.

FieldTypeDefaultDescription
modelstringclaude-sonnet-4-20250514Primary model identifier
fallbackModelstringFallback model (used when primary fails)
maxTurnsnumber15Max turns per conversation (1-100)
maxBudgetUsdnumber1.0Budget limit per conversation (USD)
systemPromptstringCustom system prompt
defaultSkillsstring[][]Skills to load by default
defaultToolsstring[]["Read","Grep","Glob","WebSearch"]Default available tools

gateway

Gateway HTTP service configuration.

FieldTypeDefaultDescription
hoststring127.0.0.1Listen address
portnumber18800Listen port

gateway.auth

Authentication configuration.

FieldTypeDefaultDescription
modestringnoneAuth mode: api-key / jwt / none
backendUrlstringJWT verification backend URL

gateway.session

Session management configuration.

FieldTypeDefaultDescription
timeoutMinutesnumber30Session timeout (minutes)
maxConcurrentnumber50Max concurrent sessions

channels

Channel configuration. Each channel is an independent sub-object.

channels.webchat

Built-in WebChat web interface.

FieldTypeDefaultDescription
enabledbooleantrueEnable WebChat
portnumber3001WebChat service port
assistantNamestringOpenPollenAssistant name displayed in UI

channels.dingtalk

DingTalk Bot (implemented as plugin).

FieldTypeDefaultDescription
enabledbooleanfalseEnable DingTalk
clientIdstringDingTalk app Client ID
clientSecretstringDingTalk app Client Secret
robotCodestringRobot code (optional, defaults to clientId)
groupPolicystringmentionGroup message policy: mention / all

channels.wechat

WeCom (implemented as plugin).

FieldTypeDefaultDescription
enabledbooleanfalseEnable WeCom
corpIdstringCorp ID
agentIdstringApp Agent ID
secretstringApp Secret
tokenstringCallback Token
encodingAESKeystringCallback encryption key
callbackPortnumber3002Callback service port

providers

Model provider configuration. Multiple can be configured; the first enabled: true provider is used.

providers.beelive

Beelive cloud proxy (recommended for China users).

FieldTypeDefaultDescription
enabledbooleanfalseEnable
apiKeystringBeelive API Key
baseUrlstringhttps://lite.beebywork.com/api/v1/anthropic-proxyProxy URL

providers.anthropic

Anthropic official API.

FieldTypeDefaultDescription
enabledbooleanfalseEnable
apiKeystringAnthropic API Key

providers.openai

OpenAI-compatible API.

FieldTypeDefaultDescription
enabledbooleanfalseEnable
apiKeystringOpenAI API Key

providers.ollama

Local Ollama models.

FieldTypeDefaultDescription
enabledbooleanfalseEnable
baseUrlstringhttp://localhost:11434Ollama service URL
modelstringqwen3-coderModel name

skills

Skills system configuration.

FieldTypeDefaultDescription
directorystring~/.openpollen/skillsSkills storage directory
enabledstring[][]Enabled skills whitelist (empty = all enabled)

memory

Memory system configuration.

FieldTypeDefaultDescription
backendstringsqliteStorage backend: sqlite / file
sqlitePathstring~/.openpollen/memory.dbSQLite database path
fileDirectorystring~/.openpollen/memoryMarkdown file storage directory

logging

Logging configuration.

FieldTypeDefaultDescription
levelstringinfoLog level: trace / debug / info / warn / error / fatal
filestringLog file path

marketplace

Skills marketplace configuration.

FieldTypeDefaultDescription
apiUrlstringhttps://lite.beebywork.com/api/v1/skills-marketMarketplace API URL

Full Example

json5
{
  "agent": {
    "model": "claude-sonnet-4-20250514",
    "fallbackModel": "claude-haiku-4-20250514",
    "maxTurns": 15,
    "maxBudgetUsd": 1.0,
    "systemPrompt": "You are a helpful AI assistant.",
    "defaultSkills": [],
    "defaultTools": ["Read", "Grep", "Glob", "WebSearch"]
  },
  "gateway": {
    "host": "127.0.0.1",
    "port": 18800,
    "auth": { "mode": "none" },
    "session": { "timeoutMinutes": 30, "maxConcurrent": 50 }
  },
  "channels": {
    "webchat": { "enabled": true, "port": 3001 },
    "dingtalk": {
      "enabled": false,
      "clientId": "${DINGTALK_CLIENT_ID}",
      "clientSecret": "${DINGTALK_CLIENT_SECRET}"
    }
  },
  "providers": {
    "anthropic": {
      "enabled": true,
      "apiKey": "${ANTHROPIC_API_KEY}"
    }
  },
  "skills": { "directory": "~/.openpollen/skills", "enabled": [] },
  "memory": { "backend": "sqlite", "sqlitePath": "~/.openpollen/memory.db" },
  "logging": { "level": "info", "file": "~/.openpollen/logs/openpollen.log" }
}