Configuration Reference ======================= Ada uses environment variables for configuration, providing flexibility across development and production environments. .. tip:: **Runtime Configuration Discovery:** Once Ada is running, query **GET /v1/info** to see the current active configuration: .. code-block:: bash curl http://localhost:5000/api/info | jq This shows enabled features, active models, specialist count, and all available endpoints. Quick Start ----------- 1. Copy the example configuration: .. code-block:: bash cp .env.example .env 2. Edit ``.env`` with your preferred settings 3. Restart services: ``docker compose up -d`` Configuration File ------------------ Ada loads configuration from ``.env`` in the project root. The file uses standard ``KEY=VALUE`` format: .. code-block:: bash # Core Services OLLAMA_BASE_URL=http://ollama:11434 OLLAMA_MODEL=qwen2.5-coder:7b .. note:: Docker Compose warnings about ``$ts``, ``$pid1``, ``$pid2`` are harmless - these are shell variables used in command blocks, not environment variables. Core Services ------------- These settings define essential services Ada needs to function. OLLAMA_BASE_URL ^^^^^^^^^^^^^^^ :Default: ``http://localhost:11434`` :Required: No :Examples: ``http://ollama:11434``, ``http://localhost:11434`` Base URL for the Ollama API server. In Docker Compose, use the service name (``ollama``). For local development, use ``localhost``. OLLAMA_MODEL ^^^^^^^^^^^^ :Default: ``qwen2.5-coder:7b`` :Required: No :Examples: ``deepseek-r1``, ``deepseek-r1:14b``, ``llama3.2:3b``, ``qwen2.5:7b`` The Ollama model to use for chat completions. Must be pulled before use: .. code-block:: bash docker compose exec ollama ollama pull qwen2.5-coder:7b OLLAMA_EMBED_MODEL ^^^^^^^^^^^^^^^^^^ :Default: ``nomic-embed-text`` :Required: No :Examples: ``nomic-embed-text``, ``mxbai-embed-large`` The embedding model for vector operations (RAG). Must be pulled separately: .. code-block:: bash docker compose exec ollama ollama pull nomic-embed-text CHROMA_URL ^^^^^^^^^^ :Default: ``http://chroma:8000`` (in Docker) :Required: No :Examples: ``http://chroma:8000``, ``http://localhost:8000`` Chroma vector database URL. Leave unset to use the Docker service default. BRAIN_URL ^^^^^^^^^ :Default: ``http://brain:7000`` :Required: No Internal URL for the brain service. Used by the web frontend to proxy API requests. RAG Configuration ----------------- These settings control Ada's Retrieval-Augmented Generation system. RAG_ENABLED ^^^^^^^^^^^ :Default: ``true`` :Type: Boolean (``true``/``false``) Master toggle for the entire RAG system. When ``false``, Ada uses only the base model without context retrieval. .. warning:: Disabling RAG significantly reduces Ada's ability to remember context and use your custom persona. Feature Toggles ^^^^^^^^^^^^^^^ Enable or disable specific retrieval types. All default to ``true``. - **RAG_ENABLE_PERSONA**: Retrieve persona/identity context - **RAG_ENABLE_FAQ**: Retrieve FAQ entries - **RAG_ENABLE_MEMORY**: Retrieve long-term memories - **RAG_ENABLE_SUMMARY**: Retrieve conversation summaries - **RAG_ENABLE_TURN**: Retrieve recent conversation turns Example: .. code-block:: bash # Disable memory retrieval RAG_ENABLE_MEMORY=false Retrieval Parameters (Top-K) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Control how many results to retrieve for each query. Higher values provide more context but use more tokens. RAG_TURN_TOP_K """""""""""""" :Default: ``4`` :Range: 1-20 Number of recent conversation turns to retrieve. Higher values give Ada more conversational context. RAG_SUMMARY_TOP_K """"""""""""""""" :Default: ``2`` :Range: 1-10 Number of conversation summaries to retrieve. Summaries compress multiple turns into key points. RAG_FAQ_TOP_K """"""""""""" :Default: ``2`` :Range: 1-10 Number of FAQ entries to retrieve. Useful for specialist documentation and common questions. RAG_MEMORY_TOP_K """""""""""""""" :Default: ``3`` :Range: 1-20 Number of long-term memories to retrieve. These persist across conversation sessions. Processing Parameters ^^^^^^^^^^^^^^^^^^^^^ RAG_MEMORY_IMPORTANCE_WEIGHT """"""""""""""""""""""""""""" :Default: ``0.5`` :Range: 0.0-1.0 Weight for memory importance scoring when ranking memories. Higher values prioritize "important" memories over recent ones. RAG_SUMMARY_EVERY_N """"""""""""""""""" :Default: ``8`` :Range: 1+ Generate a conversation summary every N turns. Summaries help compress long conversations. RAG_SUMMARY_TURNS_WINDOW """"""""""""""""""""""""" :Default: ``12`` :Range: 1+ Number of conversation turns to include when generating a summary. RAG_PERSONA_MAX_CHARS """""""""""""""""""""" :Default: ``2000`` :Range: 100+ Maximum characters to retrieve from the persona document. Truncates long personas to fit token budget. Data Loading ^^^^^^^^^^^^ RAG_AUTOLOAD_PERSONA """"""""""""""""""""" :Default: ``true`` :Type: Boolean Automatically load ``persona.md`` into the vector database on startup. RAG_PERSONA_PATH """""""""""""""" :Default: ``/app/persona.md`` Path to the persona markdown file to load on startup. RAG_AUTOLOAD_FAQ """""""""""""""" :Default: ``false`` :Type: Boolean Automatically load FAQ entries from JSONL on startup. RAG_FAQ_PATH """""""""""" :Default: ``/app/seed/faqs.jsonl`` Path to the FAQ JSONL file. Debug Mode ^^^^^^^^^^ RAG_DEBUG """"""""" :Default: ``false`` :Type: Boolean Enable debug endpoints at ``/v1/debug/*`` for inspecting RAG behavior. .. warning:: Only enable in development. Debug endpoints expose internal state. Specialist System ----------------- Controls how Ada uses external capabilities (web search, OCR, vision). For detailed information on the specialist plugin system, see :doc:`specialists`. SPECIALIST_PAUSE_RESUME ^^^^^^^^^^^^^^^^^^^^^^^ :Default: ``true`` :Type: Boolean Enable bidirectional pause/resume for specialists (Phase 2). When ``true``, LLM generation pauses while the specialist executes, then resumes with enriched context. This produces higher-quality integration than mid-stream injection. SPECIALIST_MAX_TURNS ^^^^^^^^^^^^^^^^^^^^ :Default: ``5`` :Range: 1-20 Maximum number of specialist calls allowed per conversation turn. Prevents infinite loops. SPECIALIST_RAG_DOCS ^^^^^^^^^^^^^^^^^^^ :Default: ``true`` :Type: Boolean Use RAG to dynamically retrieve relevant specialist documentation from the FAQ system. When ``false``, uses only static system prompt instructions. Integrations ------------ All integrations are optional. Leave unset to disable. Web Search (SearxNG) ^^^^^^^^^^^^^^^^^^^^ SEARXNG_URL """"""""""" :Default: (none) :Required: No :Example: ``https://hunt.airsi.de`` SearxNG instance URL for the web search specialist. When set, Ada can search the web for current information. Setup: .. code-block:: bash # In .env SEARXNG_URL=https://your-searxng-instance.com .. tip:: You can use a public SearxNG instance or host your own. See `SearxNG documentation `_ for self-hosting. ListenBrainz (Music Context) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ LISTENBRAINZ_USER """"""""""""""""" :Default: (none) :Required: No :Example: ``your_username`` ListenBrainz username for music context integration. LISTENBRAINZ_TOKEN """""""""""""""""" :Default: (none) :Required: No ListenBrainz API token. Get yours at `ListenBrainz settings `_. Setup: .. code-block:: bash # In .env LISTENBRAINZ_USER=your_username LISTENBRAINZ_TOKEN=your_api_token Backup Configuration -------------------- Settings for automated Chroma database backups to Backblaze B2. Backblaze B2 Credentials ^^^^^^^^^^^^^^^^^^^^^^^^^ B2_ENDPOINT_URL """"""""""""""" :Default: (none) :Required: For backups :Example: ``s3.us-east-005.backblazeb2.com`` S3-compatible endpoint URL from your Backblaze B2 bucket settings. B2_KEY_ID """"""""" :Default: (none) :Required: For backups Backblaze B2 key ID (starts with ``005...``). B2_APPLICATION_KEY """""""""""""""""" :Default: (none) :Required: For backups Backblaze B2 application key (secret). B2_BUCKET_NAME """""""""""""" :Default: (none) :Required: For backups Name of the B2 bucket to store backups. Backup Options ^^^^^^^^^^^^^^ B2_BUCKET_PREFIX """""""""""""""" :Default: ``chroma-backups`` Folder prefix inside the bucket where backups are stored. UPLOAD_MODE """"""""""" :Default: ``latest`` :Options: ``latest``, ``all`` - ``latest``: Only upload the most recent backup - ``all``: Upload all local backups BACKUPS_DIR """"""""""" :Default: ``/data/backups`` Local directory where backups are stored before upload. Configuration Validation ------------------------- Ada validates configuration at startup. Check the logs for warnings: .. code-block:: bash docker compose logs brain | grep -i config Common validation issues: - **Missing required values**: Ada uses defaults, but may not work as expected - **Invalid ranges**: Values outside allowed ranges are clamped - **Type errors**: Non-boolean values for boolean settings Best Practices -------------- 1. **Use .env for secrets**: Never commit ``.env`` to version control 2. **Document changes**: Comment your ``.env`` when deviating from defaults 3. **Test in development**: Verify configuration changes in dev before production 4. **Backup .env**: Include ``.env`` in your backup strategy 5. **Use .env.example**: Keep ``.env.example`` updated as a template Environment-Specific Configuration ----------------------------------- Development ^^^^^^^^^^^ .. code-block:: bash # .env.development RAG_DEBUG=true OLLAMA_BASE_URL=http://localhost:11434 CHROMA_URL=http://localhost:8000 Production ^^^^^^^^^^ .. code-block:: bash # .env.production RAG_DEBUG=false OLLAMA_BASE_URL=http://ollama:11434 CHROMA_URL=http://chroma:8000 # Add Backblaze credentials for backups B2_ENDPOINT_URL=s3.us-east-005.backblazeb2.com B2_KEY_ID= B2_APPLICATION_KEY= B2_BUCKET_NAME= Troubleshooting --------------- Configuration not loading ^^^^^^^^^^^^^^^^^^^^^^^^^ **Symptom**: Changes to ``.env`` don't take effect **Solutions**: 1. Rebuild containers: ``docker compose build brain`` 2. Restart services: ``docker compose up -d`` 3. Verify ``.env`` location (must be in project root) 4. Check for syntax errors in ``.env`` Services can't connect ^^^^^^^^^^^^^^^^^^^^^^ **Symptom**: ``Connection refused`` errors **Solutions**: 1. In Docker Compose, use service names (``http://ollama:11434`` not ``localhost``) 2. Check services are running: ``docker compose ps`` 3. Verify network connectivity: ``docker compose exec brain ping ollama`` Models not found ^^^^^^^^^^^^^^^^ **Symptom**: ``model 'qwen2.5-coder:7b' not found`` **Solutions**: 1. Pull the model: ``docker compose exec ollama ollama pull qwen2.5-coder:7b`` 2. List available models: ``docker compose exec ollama ollama list`` 3. Update ``OLLAMA_MODEL`` to match an installed model See Also -------- - :doc:`getting_started` - Initial setup guide - :doc:`testing` - Testing your configuration - :doc:`development` - Development workflows - :doc:`api_usage` - API reference