Configuration Guide
Zammad-AI uses pydantic-settings with YAML, environment variables, .env, and CLI arguments.
Source Priority
Highest priority first:
- CLI arguments
- Environment variables with the
ZAMMAD_AI_prefix .envconfig.yaml- Defaults defined in the source code
Workflow Service
Main settings live in zammad-ai-workflow/app/settings/ and are loaded by zammad-ai-workflow/config.example.yaml.
Core Sections
usecase: deployment name and descriptiongenai: model provider, chat model, embedding model, and retry settingszammad: REST API or EAI connection settings, knowledge base ID, and document parsing configkafka: broker URL, topic names, retry policy, client ID, group ID, and mTLS securitytriage: categories, actions, rules, prompt sources, and fallback behavioranswer: answer prompts, Qdrant settings, optional DLF integration, judge settings, and law toolsfrontend: optional Gradio UI and feedback settingsapi: API key and graceful shutdown timeoutprometheus: metrics server toggle and portguardrails: remoteslm-guardrailsclient settings used by the workflow (enabled,base_url,request_timeout_seconds,auth_token,verify_tls,confidence_threshold,model)log: log format and levelpreparser: optional preprocessing before LLM callsmax_user_text_length: input truncation limitrecursion_limit: agent recursion capmode:production,development, orunittest
Common Secrets
env
OPENAI_API_KEY=...
ZAMMAD_AI_API__API_KEY=...
ZAMMAD_AI_ZAMMAD__AUTH_TOKEN=...
ZAMMAD_AI_QDRANT__API_KEY=...
LANGFUSE_PUBLIC_KEY=...
LANGFUSE_SECRET_KEY=...
LANGFUSE_HOST=...Info: Variables in .env that are not fields in the Pydantic settings model are not automatically loaded into the configuration. For example, OPENAI_API_KEY is used by the OpenAI SDK but not by the Pydantic settings model.
Guardrails service secrets:
env
ZAMMAD_AI_GUARDRAILS__AUTH_TOKEN=...
SLM_GUARDRAIL_API__AUTH_TOKEN=...Index Job
Main settings live in zammad-ai-index/job/settings/ and are loaded by zammad-ai-index/config.example.yaml.
Core Sections
index: full vs incremental indexing, look-back interval, and batch sizegenai: embedding/chat model provider settingszammad: REST API or EAI connection settingsqdrant: collection URL, API key, collection name, vector dimension, and retrieval optionslaws: optional law sources to ingest into the same Qdrant collectionlog: log format and levelmode:production,development, orunittest
Common Secrets
env
OPENAI_API_KEY=...
ZAMMAD_AI_QDRANT__API_KEY=...
ZAMMAD_AI_ZAMMAD__AUTH_TOKEN=...
ZAMMAD_AI_ZAMMAD__OAUTH2_CLIENT_SECRET=...Notes
- Keep secrets out of
config.yaml. - Use double underscores for nested environment overrides, for example
ZAMMAD_AI_KAFKA__BROKER_URL. - The workflow service defaults to Kafka port
9092, the backend port8080, and Prometheus port9090. - The workflow service calls the guardrails service at
http://localhost:8081by default. - The index job expects the Qdrant collection to exist and match the configured embedding dimension.