Configuration Parameters 🟡 BETA
Complete reference of all available parameters in config.csv.
Server Parameters
Web Server
| Parameter | Description | Default | Type |
|---|---|---|---|
server-host | Server bind address | 0.0.0.0 | IP address |
server-port | Server listen port | 8080 | Number (1-65535) |
sites-root | Generated sites directory | /tmp | Path |
MCP Server
| Parameter | Description | Default | Type |
|---|---|---|---|
mcp-server | Enable MCP protocol server | false | Boolean |
LLM Parameters
Core LLM Settings
| Parameter | Description | Default | Type |
|---|---|---|---|
llm-key | API key for LLM service | none | String |
llm-url | LLM service endpoint | http://localhost:8081 | URL |
llm-model | Model path or identifier | Required | Path/String |
llm-models | Available model aliases for routing | default | Semicolon-separated |
LLM Cache
| Parameter | Description | Default | Type |
|---|---|---|---|
llm-cache | Enable response caching | false | Boolean |
llm-cache-ttl | Cache time-to-live | 3600 | Seconds |
llm-cache-semantic | Semantic similarity cache | true | Boolean |
llm-cache-threshold | Similarity threshold | 0.95 | Float (0-1) |
Embedded LLM Server
| Parameter | Description | Default | Type |
|---|---|---|---|
llm-server | Run embedded server | false | Boolean |
llm-server-path | Server binary path | botserver-stack/bin/llm/build/bin | Path |
llm-server-path | Server binary directory | botserver-stack/bin/llm/build/bin | Path |
llm-server-gpu-layers | GPU offload layers | 0 | Number |
llm-server-n-moe | MoE experts count | 0 | Number |
llm-server-ctx-size | Context size | 4096 | Tokens |
llm-server-n-predict | Max predictions | 1024 | Tokens |
llm-server-parallel | Parallel requests | 6 | Number |
llm-server-cont-batching | Continuous batching | true | Boolean |
llm-server-mlock | Lock in memory | false | Boolean |
llm-server-no-mmap | Disable mmap | false | Boolean |
llm-server-reasoning-format | Reasoning output format for llama.cpp | none | String |
Hardware-Specific LLM Tuning
For RTX 3090 (24GB VRAM)
You can run impressive models with proper configuration:
- DeepSeek-R3-Distill-Qwen-7B: Set
llm-server-gpu-layersto 35-40 - Qwen2.5-32B-Instruct (Q4_K_M): Fits with
llm-server-gpu-layersto 40-45 - DeepSeek-V3 (with MoE): Set
llm-server-n-moeto 2-4 to run even 120B models! MoE only loads active experts - Optimization: Use
llm-server-ctx-sizeof 8192 for longer contexts
For RTX 4070/4070Ti (12-16GB VRAM)
Mid-range cards work great with quantized models:
- Qwen2.5-14B (Q4_K_M): Set
llm-server-gpu-layersto 25-30 - DeepSeek-R3-Distill-Llama-8B: Fully fits with layers at 32
- Tips: Keep
llm-server-ctx-sizeat 4096 to save VRAM
For CPU-Only (No GPU)
Modern CPUs can still run capable models:
- DeepSeek-R3-Distill-Qwen-1.5B: Fast on CPU, great for testing
- Phi-3-mini (3.8B): Excellent CPU performance
- Settings: Set
llm-server-mlocktotrueto prevent swapping - Parallel: Increase
llm-server-parallelto CPU cores -2
Recommended Models (GGUF Format)
- Best Overall: DeepSeek-R3-Distill series (1.5B to 70B)
- Best Small: Qwen2.5-3B-Instruct-Q5_K_M
- Best Medium: DeepSeek-R3-Distill-Qwen-14B-Q4_K_M
- Best Large: DeepSeek-V3, Qwen2.5-32B, or GPT2-120B-GGUF (with MoE enabled)
Pro Tip: The llm-server-n-moe parameter is magic for large models - it enables Mixture of Experts, letting you run 120B+ models on consumer hardware by only loading the experts needed for each token!
Local vs Cloud: A Practical Note
General Bots excels at local deployment - you own your hardware, your data stays private, and there are no recurring costs. However, if you need cloud inference:
Groq is the speed champion - They use custom LPU (Language Processing Unit) chips instead of GPUs, delivering 10x faster inference than traditional cloud providers. Their hardware is purpose-built for transformers, avoiding the general-purpose overhead of NVIDIA GPUs.
This isn’t about market competition - it’s about architecture. NVIDIA GPUs are designed for many tasks, while Groq’s chips do one thing incredibly well: transformer inference. If speed matters and you’re using cloud, Groq is currently the fastest option available.
For local deployment, stick with General Bots and the configurations above. For cloud bursts or when you need extreme speed, consider Groq’s API with these settings:
llm-url,https://api.groq.com/openai/v1
llm-key,your-groq-api-key
llm-model,mixtral-8x7b-32768
Embedding Parameters
| Parameter | Description | Default | Type |
|---|---|---|---|
embedding-url | Embedding service endpoint | http://localhost:8082 | URL |
embedding-model | Embedding model path | Required for KB | Path |
Email Parameters
There are no email-* delivery settings. Outbound mail is handed to the
bundled mail server, which owns the relay configuration; the platform does not
read SMTP host, port, user or password from bot configuration. An earlier
revision of this page listed email-from, email-server, email-port,
email-user, email-pass, email-username and email-password — none of them
are read by the server, and setting them has no effect. SMTP credentials belong to
the mail server’s own configuration, and secrets live in Vault.
| Parameter | Description | Default | Type |
|---|---|---|---|
email-read-pixel | Enable read tracking pixel in HTML emails | false | Boolean |
Email Read Tracking
When email-read-pixel is enabled, a 1x1 transparent tracking pixel is automatically injected into HTML emails sent via the API. This allows you to:
- Track when emails are opened
- See how many times an email was opened
- Get the approximate location (IP) and device (user agent) of the reader
API Endpoints for tracking:
| Endpoint | Method | Description |
|---|---|---|
/api/email/tracking/pixel/{tracking_id} | GET | Serves the tracking pixel (called by email client) |
/api/email/tracking/status/{tracking_id} | GET | Get read status for a specific email |
/api/email/tracking/list | GET | List all sent emails with tracking status |
/api/email/tracking/stats | GET | Get overall tracking statistics |
Example configuration:
email-read-pixel,true
server-url,https://yourdomain.com
Note: The server-url parameter is used to generate the tracking pixel URL. Make sure it’s accessible from the recipient’s email client.
Privacy considerations: Email tracking should be used responsibly. Consider disclosing tracking in your email footer for transparency.
Theme Parameters
| Parameter | Description | Default | Type |
|---|---|---|---|
theme-color1 | Primary color | Not set | Hex color |
theme-color2 | Secondary color | Not set | Hex color |
theme-logo | Logo URL | Not set | URL |
theme-title | Bot display title | Not set | String |
bot-name | Bot display name | Not set | String |
welcome-message | Initial greeting message | Not set | String |
Custom Database Parameters
These parameters configure external database connections for use with BASIC keywords like MariaDB/MySQL connections.
| Parameter | Description | Default | Type |
|---|---|---|---|
custom-server | Database server hostname | localhost | Hostname |
custom-port | Database port | 5432 | Number |
custom-database | Database name | Not set | String |
custom-username | Database user | Not set | String |
custom-password | Database password | Not set | String |
Website Crawling Parameters
| Parameter | Description | Default | Type |
|---|---|---|---|
website-expires | Cache expiration for crawled content | 1d | Duration |
website-max-depth | Maximum crawl depth | 3 | Number |
website-max-pages | Maximum pages to crawl | 100 | Number |
Image Generator Parameters
| Parameter | Description | Default | Type |
|---|---|---|---|
image-generator-model | Diffusion model path | Not set | Path |
image-generator-steps | Inference steps | 4 | Number |
image-generator-width | Output width | 512 | Pixels |
image-generator-height | Output height | 512 | Pixels |
image-generator-gpu-layers | GPU offload layers | 20 | Number |
image-generator-batch-size | Batch size | 1 | Number |
Video Generator Parameters
| Parameter | Description | Default | Type |
|---|---|---|---|
video-generator-model | Video model path | Not set | Path |
video-generator-frames | Frames to generate | 24 | Number |
video-generator-fps | Frames per second | 8 | Number |
video-generator-width | Output width | 320 | Pixels |
video-generator-height | Output height | 576 | Pixels |
video-generator-gpu-layers | GPU offload layers | 15 | Number |
video-generator-batch-size | Batch size | 1 | Number |
BotModels Service Parameters
| Parameter | Description | Default | Type |
|---|---|---|---|
botmodels-enabled | Enable BotModels service | true | Boolean |
botmodels-host | BotModels bind address | 0.0.0.0 | IP address |
botmodels-port | BotModels port | 8085 | Number |
Generator Parameters
| Parameter | Description | Default | Type |
|---|---|---|---|
default-generator | Default content generator | all | String |
Teams Channel Parameters
| Parameter | Description | Default | Type |
|---|---|---|---|
teams-app-id | Microsoft Teams App ID | Not set | String |
teams-app-password | Microsoft Teams App Password | Not set | String |
teams-tenant-id | Microsoft Teams Tenant ID | Not set | String |
teams-bot-id | Microsoft Teams Bot ID | Not set | String |
SMS Parameters
| Parameter | Description | Default | Type |
|---|---|---|---|
sms-provider | SMS provider (twilio, aws, vonage, messagebird) | Not set | String |
sms-default-priority | Default priority applied to outbound messages | Not set | String |
There is no fallback-provider setting: a failed send fails, and it is not retried against a second provider.
Twilio Parameters
| Parameter | Description | Default | Type |
|---|---|---|---|
twilio-account-sid | Twilio Account SID | Not set | String |
twilio-auth-token | Twilio Auth Token | Not set | String |
twilio-phone-number | Twilio phone number (E.164 format) | Not set | String |
twilio-messaging-service-sid | Messaging Service SID for routing | Not set | String |
twilio-status-callback | Webhook URL for delivery status | Not set | URL |
AWS SNS Parameters
| Parameter | Description | Default | Type |
|---|---|---|---|
aws-access-key-id | AWS Access Key ID | Not set | String |
aws-secret-access-key | AWS Secret Access Key | Not set | String |
aws-region | AWS Region (e.g., us-east-1) | Not set | String |
aws-sns-sender-id | Sender ID (alphanumeric) | Not set | String |
aws-sns-message-type | Promotional or Transactional | Transactional | String |
Vonage (Nexmo) Parameters
| Parameter | Description | Default | Type |
|---|---|---|---|
vonage-api-key | Vonage API Key | Not set | String |
vonage-api-secret | Vonage API Secret | Not set | String |
vonage-from | Sender number or alphanumeric ID | Not set | String |
vonage-callback-url | Delivery receipt webhook | Not set | URL |
MessageBird Parameters
| Parameter | Description | Default | Type |
|---|---|---|---|
messagebird-access-key | MessageBird Access Key | Not set | String |
messagebird-originator | Sender number or name | Not set | String |
messagebird-report-url | Status report webhook | Not set | URL |
Custom Provider Parameters
Not implemented. A custom provider value and the sms-custom-* keys
(sms-custom-url, sms-custom-method, sms-custom-body-template,
sms-custom-auth-header, sms-custom-from) do not exist in the code. Use one of
the supported providers above.
Example: Twilio Configuration
sms-provider,twilio
twilio-account-sid,ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
twilio-auth-token,your_auth_token
twilio-phone-number,+15551234567
Example: AWS SNS Configuration
sms-provider,aws
aws-access-key-id,AKIAIOSFODNN7EXAMPLE
aws-secret-access-key,wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
aws-region,us-east-1
aws-sns-message-type,Transactional
See SMS Provider Configuration for detailed setup instructions.
WhatsApp Parameters
| Parameter | Description | Default | Type |
|---|---|---|---|
whatsapp-api-key | Access token from Meta Business | Not set | String |
whatsapp-phone-number-id | Phone number ID from WhatsApp Business | Not set | String |
whatsapp-verify-token | Token for webhook verification | Not set | String |
whatsapp-business-account-id | WhatsApp Business Account ID | Not set | String |
The Graph API version is not configurable — it is set by the client, not by a bot setting.
Example: WhatsApp Configuration
whatsapp-api-key,EAABs...your_access_token
whatsapp-phone-number-id,123456789012345
whatsapp-verify-token,my-secret-verify-token
whatsapp-business-account-id,987654321098765
See WhatsApp Channel Configuration for detailed setup instructions.
Multi-Agent Parameters
Agent-to-Agent (A2A) Communication
The A2A keywords exist (botbasic_system/src/keywords/a2a_protocol.rs), but
there are no a2a-* configuration keys. Hop limits, timeouts, retry counts,
queue sizes, protocol version and message persistence are not settings; an
earlier revision of this page listed seven of them, and none are read by the
server. See Multi-Agent Keywords
for what the protocol does and how delegation depth is actually bounded.
Bot Reflection
| Parameter | Description | Default | Type |
|---|---|---|---|
bot-reflection-enabled | Enable bot self-analysis | true | Boolean |
bot-reflection-interval | Messages between reflections | 10 | Number |
bot-reflection-prompt | Custom reflection prompt | (none) | String |
bot-reflection-types | Reflection types to perform | ConversationQuality | Semicolon-separated |
bot-improvement-auto-apply | Auto-apply suggested improvements | false | Boolean |
bot-improvement-threshold | Score threshold for improvements (0-10) | 6.0 | Float |
Reflection Types
Available values for bot-reflection-types:
ConversationQuality- Analyze conversation quality and user satisfactionResponseAccuracy- Analyze response accuracy and relevanceToolUsage- Analyze tool usage effectivenessKnowledgeRetrieval- Analyze knowledge retrieval performancePerformance- Analyze overall bot performance
Example:
bot-reflection-enabled,true
bot-reflection-interval,10
bot-reflection-types,ConversationQuality;ResponseAccuracy;ToolUsage
bot-improvement-auto-apply,false
bot-improvement-threshold,7.0
Memory Parameters
User Memory (Cross-Bot)
SET USER MEMORY / GET USER MEMORY are implemented
(botbasic_data/src/keywords/user_memory.rs), but there are no
user-memory-* configuration keys. Memory is not enabled or sized by a bot
setting: entries are written as they are set and have no configurable expiry. The
user-memory-enabled, user-memory-max-keys and user-memory-default-ttl keys
listed here previously are not read by the server.
Episodic Memory (Context Compaction)
| Parameter | Description | Default | Type |
|---|---|---|---|
episodic-memory-enabled | Enable episodic memory system | true | Boolean |
episodic-memory-threshold | Exchanges before compaction triggers | 4 | Number |
episodic-memory-history | Recent exchanges to keep in full | 2 | Number |
episodic-memory-model | Model for summarization | fast | String |
episodic-memory-max-episodes | Maximum episodes per user | 100 | Number |
episodic-memory-retention-days | Days to retain episodes | 365 | Number |
episodic-memory-auto-summarize | Enable automatic summarization | true | Boolean |
Episodic memory automatically manages conversation context to stay within LLM token limits. When conversation exchanges exceed episodic-memory-threshold, older messages are summarized and only the last episodic-memory-history exchanges are kept in full. See Chapter 03 - Episodic Memory for details.
Model Routing Parameters
These parameters configure multi-model routing for different task types. Requires multiple llama.cpp server instances.
| Parameter | Description | Default | Type |
|---|---|---|---|
llm-models | Available model aliases | default | Semicolon-separated |
model-routing-strategy | Routing strategy (manual/auto/load-balanced/fallback) | auto | String |
model-default | Default model alias | default | String |
model-fast | Model for fast/simple tasks | (configured) | Path/String |
model-quality | Model for quality/complex tasks | (configured) | Path/String |
model-code | Model for code generation | (configured) | Path/String |
model-fallback-enabled | Enable automatic fallback | true | Boolean |
model-fallback-order | Order to try on failure | quality,fast,local | Comma-separated |
Multi-Model Example
llm-models,default;fast;quality;code
llm-url,http://localhost:8081
model-routing-strategy,auto
model-default,fast
model-fallback-enabled,true
model-fallback-order,quality,fast
Retrieval Parameters
Retrieval is selected per bot with one setting, rag-mode, which chooses among six
implemented strategies. Retrieval and RAG
describes what each mode actually does, and what retrieval does not yet do.
| Parameter | Description | Default | Type |
|---|---|---|---|
rag-mode | Retrieval strategy: standard, hybrid, corrective, graph, agentic, multimodal | standard | String |
rag-mode is read from the bot’s configuration row, falling back to the
environment variable RAG_MODE. It is not part of the Vault LLM secret block, and
it is not a config.csv key — setting it in either place has no effect.
Retrieval keys that have no effect
The keys below are read only by botqdrant/src/hybrid_search.rs and
botqdrant/src/bm25_config.rs — a retrieval implementation that nothing in the
server constructs. Setting them changes nothing about how documents are
retrieved. They are listed so that existing configuration is not mistaken for
working settings:
| Parameter | Would do | Status |
|---|---|---|
rag-hybrid-enabled | Toggle dense + sparse fusion | Inert |
rag-dense-weight, rag-sparse-weight | Fusion weights | Inert — fusion is fixed-weight RRF at k = 60 |
rag-reranker-enabled, rag-reranker-model, rag-reranker-top-n | Cross-encoder re-ranking | Inert — no re-ranker runs in the retrieval path |
rag-rrf-k | RRF smoothing constant | Inert |
rag-cache-enabled, rag-cache-ttl | Search-result caching | Inert |
bm25-enabled, bm25-k1, bm25-b, bm25-stemming, bm25-stopwords | A BM25 sparse index | Inert — there is no BM25 index, and no Tantivy dependency anywhere in the build |
Keyword matching in the live path is a term search over the vector store
(search_keyword_only), not BM25.
Selecting a mode
rag-mode,hybrid
| Mode | Use when |
|---|---|
standard | General questions over a clean knowledge base — the default |
hybrid | Documents full of exact terms: part numbers, codes, names |
corrective | Users ask vague or badly-phrased questions; costs one LLM call per candidate chunk |
graph | Questions naming several things at once (entity expansion, not a graph index) |
agentic | Complex questions spanning several documents (single decomposition step) |
multimodal | Knowledge base with diagrams and screenshots (visual-term expansion) |
Code Sandbox Parameters
| Parameter | Description | Default | Type |
|---|---|---|---|
sandbox-enabled | Enable code sandbox | true | Boolean |
sandbox-runtime | Isolation backend (lxc/docker/firecracker/process) | lxc | String |
sandbox-timeout | Maximum execution time | 30 | Seconds |
sandbox-memory-mb | Memory limit in megabytes | 256 | MB |
sandbox-cpu-percent | CPU usage limit | 50 | Percent |
sandbox-network | Allow network access | false | Boolean |
sandbox-python-packages | Pre-installed Python packages | (none) | Comma-separated |
sandbox-allowed-paths | Accessible filesystem paths | /data,/tmp | Comma-separated |
Example: Python Sandbox
sandbox-enabled,true
sandbox-runtime,lxc
sandbox-timeout,60
sandbox-memory-mb,512
sandbox-cpu-percent,75
sandbox-network,false
sandbox-python-packages,numpy,pandas,requests,matplotlib
sandbox-allowed-paths,/data,/tmp,/uploads
SSE Streaming Parameters
| Parameter | Description | Default | Type |
|---|---|---|---|
sse-enabled | Enable Server-Sent Events | true | Boolean |
sse-heartbeat | Heartbeat interval | 30 | Seconds |
sse-max-connections | Maximum concurrent connections | 1000 | Number |
Parameter Types
Boolean
Values: true or false (case-sensitive)
Number
Integer values, must be within valid ranges:
- Ports: 1-65535
- Tokens: Positive integers
- Percentages: 0-100
Float
Decimal values:
- Thresholds: 0.0 to 1.0
- Weights: 0.0 to 1.0
Path
File system paths:
- Relative:
../../../../data/model.gguf - Absolute:
/opt/models/model.gguf
URL
Valid URLs:
- HTTP:
http://localhost:8081 - HTTPS:
https://api.example.com
String
Any text value (no quotes needed in CSV)
Valid email format: user@domain.com
Hex Color
HTML color codes: #RRGGBB format
Semicolon-separated
Multiple values separated by semicolons: value1;value2;value3
Comma-separated
Multiple values separated by commas: value1,value2,value3
Required vs Optional
Always Required
- None - all parameters have defaults or are optional
Required for Features
- LLM:
llm-modelmust be set - Email: no bot-level settings — the bundled mail server owns delivery
- Embeddings:
embedding-modelfor knowledge base - Custom DB:
custom-databaseif using external database
Configuration Precedence
- Built-in defaults (hardcoded)
- config.csv values (override defaults)
- Environment variables (if implemented, override config)
Special Values
none- Explicitly no value (forllm-key)- Empty string - Unset/use default
false- Feature disabledtrue- Feature enabled
Performance Tuning
For Local Models
llm-server-ctx-size,8192
llm-server-n-predict,2048
llm-server-parallel,4
llm-cache,true
llm-cache-ttl,7200
For Production
llm-server-cont-batching,true
llm-cache-semantic,true
llm-cache-threshold,0.90
llm-server-parallel,8
sse-max-connections,5000
For Low Memory
llm-server-ctx-size,2048
llm-server-n-predict,512
llm-server-mlock,false
llm-server-no-mmap,false
llm-cache,false
sandbox-memory-mb,128
For Multi-Agent Systems
bot-reflection-enabled,true
bot-reflection-interval,10
bot-reflection-enabled,true
bot-reflection-interval,10
user-memory-enabled,true
For Retrieval Quality
rag-mode,hybrid
hybrid adds keyword matching to the dense search. For vague questions,
corrective grade-filters chunks, at the cost of one LLM call per candidate.
For Lower Retrieval Latency
rag-mode,standard
standard makes a single embedding call and no LLM calls. The corrective,
agentic and graph modes each add one or more LLM calls per question.
For Code Execution
sandbox-enabled,true
sandbox-runtime,lxc
sandbox-timeout,30
sandbox-memory-mb,512
sandbox-network,false
sandbox-python-packages,numpy,pandas,requests
Validation Rules
- Paths: Model files must exist
- URLs: Must be valid format
- Ports: Must be 1-65535
- Emails: Must contain @ and domain
- Colors: Must be valid hex format
- Booleans: Exactly
trueorfalse - Mode:
rag-modemust be one of the six listed values; an unrecognised value is treated asstandard