{% extends "base.html" %} {% block title %}Configuration — didiAI Dashboard{% endblock %} {% block content %}

Runtime Configuration

Live settings pulled by web-api every 30 seconds — no restart required. Override values replace env defaults.

{% set category_info = { 'providers': {'icon': '🔌', 'title': 'Paid Providers', 'desc': 'Toggle premium-tier search engines on and off'}, 'routing': {'icon': '🔀', 'title': 'Routing Strategy', 'desc': 'How premium-tier picks providers per request'}, 'llm': {'icon': '🧠', 'title': 'LLM Models', 'desc': 'Which model OpenRouter calls use'}, 'tiers': {'icon': '🎚', 'title': 'Tier Limits', 'desc': 'Default result counts per tier'}, } %} {% for cat_key, entries in categories.items() %} {% set info = category_info.get(cat_key, {'icon': '⚙', 'title': cat_key.title(), 'desc': ''}) %}

{{ info.icon }} {{ info.title }}

{{ info.desc }}

{% for entry in entries %} {% include "partials/config_row.html" %} {% endfor %}
{% endfor %}

ℹ How this works

Changes here are stored in the dashboard database. The web-api container polls /api/config every 30 seconds and merges overrides into its in-memory config. No restart is needed — your toggle or model change takes effect within ~30s on the next request.

{% endblock %}