Configuration Parameters 🟡 BETA

Complete reference of all available parameters in config.csv.

Server Parameters

Web Server

ParameterDescriptionDefaultType
server-hostServer bind address0.0.0.0IP address
server-portServer listen port8080Number (1-65535)
sites-rootGenerated sites directory/tmpPath

MCP Server

ParameterDescriptionDefaultType
mcp-serverEnable MCP protocol serverfalseBoolean

LLM Parameters

Core LLM Settings

ParameterDescriptionDefaultType
llm-keyAPI key for LLM servicenoneString
llm-urlLLM service endpointhttp://localhost:8081URL
llm-modelModel path or identifierRequiredPath/String
llm-modelsAvailable model aliases for routingdefaultSemicolon-separated

LLM Cache

ParameterDescriptionDefaultType
llm-cacheEnable response cachingfalseBoolean
llm-cache-ttlCache time-to-live3600Seconds
llm-cache-semanticSemantic similarity cachetrueBoolean
llm-cache-thresholdSimilarity threshold0.95Float (0-1)

Embedded LLM Server

ParameterDescriptionDefaultType
llm-serverRun embedded serverfalseBoolean
llm-server-pathServer binary pathbotserver-stack/bin/llm/build/binPath
llm-server-pathServer binary directorybotserver-stack/bin/llm/build/binPath
llm-server-gpu-layersGPU offload layers0Number
llm-server-n-moeMoE experts count0Number
llm-server-ctx-sizeContext size4096Tokens
llm-server-n-predictMax predictions1024Tokens
llm-server-parallelParallel requests6Number
llm-server-cont-batchingContinuous batchingtrueBoolean
llm-server-mlockLock in memoryfalseBoolean
llm-server-no-mmapDisable mmapfalseBoolean
llm-server-reasoning-formatReasoning output format for llama.cppnoneString

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-layers to 35-40
  • Qwen2.5-32B-Instruct (Q4_K_M): Fits with llm-server-gpu-layers to 40-45
  • DeepSeek-V3 (with MoE): Set llm-server-n-moe to 2-4 to run even 120B models! MoE only loads active experts
  • Optimization: Use llm-server-ctx-size of 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-layers to 25-30
  • DeepSeek-R3-Distill-Llama-8B: Fully fits with layers at 32
  • Tips: Keep llm-server-ctx-size at 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-mlock to true to prevent swapping
  • Parallel: Increase llm-server-parallel to CPU cores -2
  • 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

ParameterDescriptionDefaultType
embedding-urlEmbedding service endpointhttp://localhost:8082URL
embedding-modelEmbedding model pathRequired for KBPath

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.

ParameterDescriptionDefaultType
email-read-pixelEnable read tracking pixel in HTML emailsfalseBoolean

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:

EndpointMethodDescription
/api/email/tracking/pixel/{tracking_id}GETServes the tracking pixel (called by email client)
/api/email/tracking/status/{tracking_id}GETGet read status for a specific email
/api/email/tracking/listGETList all sent emails with tracking status
/api/email/tracking/statsGETGet 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

ParameterDescriptionDefaultType
theme-color1Primary colorNot setHex color
theme-color2Secondary colorNot setHex color
theme-logoLogo URLNot setURL
theme-titleBot display titleNot setString
bot-nameBot display nameNot setString
welcome-messageInitial greeting messageNot setString

Custom Database Parameters

These parameters configure external database connections for use with BASIC keywords like MariaDB/MySQL connections.

ParameterDescriptionDefaultType
custom-serverDatabase server hostnamelocalhostHostname
custom-portDatabase port5432Number
custom-databaseDatabase nameNot setString
custom-usernameDatabase userNot setString
custom-passwordDatabase passwordNot setString

Website Crawling Parameters

ParameterDescriptionDefaultType
website-expiresCache expiration for crawled content1dDuration
website-max-depthMaximum crawl depth3Number
website-max-pagesMaximum pages to crawl100Number

Image Generator Parameters

ParameterDescriptionDefaultType
image-generator-modelDiffusion model pathNot setPath
image-generator-stepsInference steps4Number
image-generator-widthOutput width512Pixels
image-generator-heightOutput height512Pixels
image-generator-gpu-layersGPU offload layers20Number
image-generator-batch-sizeBatch size1Number

Video Generator Parameters

ParameterDescriptionDefaultType
video-generator-modelVideo model pathNot setPath
video-generator-framesFrames to generate24Number
video-generator-fpsFrames per second8Number
video-generator-widthOutput width320Pixels
video-generator-heightOutput height576Pixels
video-generator-gpu-layersGPU offload layers15Number
video-generator-batch-sizeBatch size1Number

BotModels Service Parameters

ParameterDescriptionDefaultType
botmodels-enabledEnable BotModels servicetrueBoolean
botmodels-hostBotModels bind address0.0.0.0IP address
botmodels-portBotModels port8085Number

Generator Parameters

ParameterDescriptionDefaultType
default-generatorDefault content generatorallString

Teams Channel Parameters

ParameterDescriptionDefaultType
teams-app-idMicrosoft Teams App IDNot setString
teams-app-passwordMicrosoft Teams App PasswordNot setString
teams-tenant-idMicrosoft Teams Tenant IDNot setString
teams-bot-idMicrosoft Teams Bot IDNot setString

SMS Parameters

ParameterDescriptionDefaultType
sms-providerSMS provider (twilio, aws, vonage, messagebird)Not setString
sms-default-priorityDefault priority applied to outbound messagesNot setString

There is no fallback-provider setting: a failed send fails, and it is not retried against a second provider.

Twilio Parameters

ParameterDescriptionDefaultType
twilio-account-sidTwilio Account SIDNot setString
twilio-auth-tokenTwilio Auth TokenNot setString
twilio-phone-numberTwilio phone number (E.164 format)Not setString
twilio-messaging-service-sidMessaging Service SID for routingNot setString
twilio-status-callbackWebhook URL for delivery statusNot setURL

AWS SNS Parameters

ParameterDescriptionDefaultType
aws-access-key-idAWS Access Key IDNot setString
aws-secret-access-keyAWS Secret Access KeyNot setString
aws-regionAWS Region (e.g., us-east-1)Not setString
aws-sns-sender-idSender ID (alphanumeric)Not setString
aws-sns-message-typePromotional or TransactionalTransactionalString

Vonage (Nexmo) Parameters

ParameterDescriptionDefaultType
vonage-api-keyVonage API KeyNot setString
vonage-api-secretVonage API SecretNot setString
vonage-fromSender number or alphanumeric IDNot setString
vonage-callback-urlDelivery receipt webhookNot setURL

MessageBird Parameters

ParameterDescriptionDefaultType
messagebird-access-keyMessageBird Access KeyNot setString
messagebird-originatorSender number or nameNot setString
messagebird-report-urlStatus report webhookNot setURL

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

ParameterDescriptionDefaultType
whatsapp-api-keyAccess token from Meta BusinessNot setString
whatsapp-phone-number-idPhone number ID from WhatsApp BusinessNot setString
whatsapp-verify-tokenToken for webhook verificationNot setString
whatsapp-business-account-idWhatsApp Business Account IDNot setString

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

ParameterDescriptionDefaultType
bot-reflection-enabledEnable bot self-analysistrueBoolean
bot-reflection-intervalMessages between reflections10Number
bot-reflection-promptCustom reflection prompt(none)String
bot-reflection-typesReflection types to performConversationQualitySemicolon-separated
bot-improvement-auto-applyAuto-apply suggested improvementsfalseBoolean
bot-improvement-thresholdScore threshold for improvements (0-10)6.0Float

Reflection Types

Available values for bot-reflection-types:

  • ConversationQuality - Analyze conversation quality and user satisfaction
  • ResponseAccuracy - Analyze response accuracy and relevance
  • ToolUsage - Analyze tool usage effectiveness
  • KnowledgeRetrieval - Analyze knowledge retrieval performance
  • Performance - 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)

ParameterDescriptionDefaultType
episodic-memory-enabledEnable episodic memory systemtrueBoolean
episodic-memory-thresholdExchanges before compaction triggers4Number
episodic-memory-historyRecent exchanges to keep in full2Number
episodic-memory-modelModel for summarizationfastString
episodic-memory-max-episodesMaximum episodes per user100Number
episodic-memory-retention-daysDays to retain episodes365Number
episodic-memory-auto-summarizeEnable automatic summarizationtrueBoolean

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.

ParameterDescriptionDefaultType
llm-modelsAvailable model aliasesdefaultSemicolon-separated
model-routing-strategyRouting strategy (manual/auto/load-balanced/fallback)autoString
model-defaultDefault model aliasdefaultString
model-fastModel for fast/simple tasks(configured)Path/String
model-qualityModel for quality/complex tasks(configured)Path/String
model-codeModel for code generation(configured)Path/String
model-fallback-enabledEnable automatic fallbacktrueBoolean
model-fallback-orderOrder to try on failurequality,fast,localComma-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.

ParameterDescriptionDefaultType
rag-modeRetrieval strategy: standard, hybrid, corrective, graph, agentic, multimodalstandardString

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:

ParameterWould doStatus
rag-hybrid-enabledToggle dense + sparse fusionInert
rag-dense-weight, rag-sparse-weightFusion weightsInert — fusion is fixed-weight RRF at k = 60
rag-reranker-enabled, rag-reranker-model, rag-reranker-top-nCross-encoder re-rankingInert — no re-ranker runs in the retrieval path
rag-rrf-kRRF smoothing constantInert
rag-cache-enabled, rag-cache-ttlSearch-result cachingInert
bm25-enabled, bm25-k1, bm25-b, bm25-stemming, bm25-stopwordsA BM25 sparse indexInert — 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
ModeUse when
standardGeneral questions over a clean knowledge base — the default
hybridDocuments full of exact terms: part numbers, codes, names
correctiveUsers ask vague or badly-phrased questions; costs one LLM call per candidate chunk
graphQuestions naming several things at once (entity expansion, not a graph index)
agenticComplex questions spanning several documents (single decomposition step)
multimodalKnowledge base with diagrams and screenshots (visual-term expansion)

Code Sandbox Parameters

ParameterDescriptionDefaultType
sandbox-enabledEnable code sandboxtrueBoolean
sandbox-runtimeIsolation backend (lxc/docker/firecracker/process)lxcString
sandbox-timeoutMaximum execution time30Seconds
sandbox-memory-mbMemory limit in megabytes256MB
sandbox-cpu-percentCPU usage limit50Percent
sandbox-networkAllow network accessfalseBoolean
sandbox-python-packagesPre-installed Python packages(none)Comma-separated
sandbox-allowed-pathsAccessible filesystem paths/data,/tmpComma-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

ParameterDescriptionDefaultType
sse-enabledEnable Server-Sent EventstrueBoolean
sse-heartbeatHeartbeat interval30Seconds
sse-max-connectionsMaximum concurrent connections1000Number

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)

Email

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-model must be set
  • Email: no bot-level settings — the bundled mail server owns delivery
  • Embeddings: embedding-model for knowledge base
  • Custom DB: custom-database if using external database

Configuration Precedence

  1. Built-in defaults (hardcoded)
  2. config.csv values (override defaults)
  3. Environment variables (if implemented, override config)

Special Values

  • none - Explicitly no value (for llm-key)
  • Empty string - Unset/use default
  • false - Feature disabled
  • true - 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

  1. Paths: Model files must exist
  2. URLs: Must be valid format
  3. Ports: Must be 1-65535
  4. Emails: Must contain @ and domain
  5. Colors: Must be valid hex format
  6. Booleans: Exactly true or false
  7. Mode: rag-mode must be one of the six listed values; an unrecognised value is treated as standard