{
  "_comment": "ONE place that decides which models run and where. Flip active_provider between 'openrouter' and 'local' to switch every model in the system with zero code change. 'brain' = the reasoning+vision model that drives the mapping. 'vision' = the crop/region reader. Both go through the gateway.",

  "active_provider": "openrouter",

  "providers": {
    "openrouter": {
      "kind": "openai",
      "api_base": "https://openrouter.ai/api/v1",
      "api_key_env": "OPENROUTER_API_KEY",
      "model_prefix": "",
      "extra_headers": {
        "HTTP-Referer": "https://automaziot.ai",
        "X-Title": "RPA-Vision-Mapper"
      }
    },
    "local": {
      "kind": "openai",
      "api_base": "http://127.0.0.1:8090/v1",
      "api_key_env": null,
      "model_prefix": "",
      "extra_headers": {}
    }
  },

  "roles": {
    "brain": {
      "openrouter": ["qwen/qwen3-vl-235b-a22b-instruct", "qwen/qwen3-vl-32b-instruct"],
      "local": ["Qwen3-VL-8B"],
      "temperature": 0.1,
      "max_tokens": 1500
    },
    "vision": {
      "openrouter": ["qwen/qwen3-vl-235b-a22b-instruct", "qwen/qwen3-vl-32b-instruct", "qwen/qwen3-vl-8b-instruct"],
      "local": ["Qwen3-VL-8B"],
      "temperature": 0.0,
      "max_tokens": 512
    }
  },

  "timeout_seconds": 120,
  "retries_per_model": 2,
  "backoff_seconds": 1.5
}
