Skip to content

Per Detector Providers

Jacob Centner edited this page Apr 10, 2026 · 2 revisions

Per-Detector Providers

You can route specific detectors to different models or providers. This lets you run cheap detectors on a local model and expensive LLM detectors on a cloud provider — or vice versa.

Configuration

Add [sentinel.detector_providers.<detector-name>] sections to your sentinel.toml:

[sentinel]
provider = "ollama"
model = "qwen3.5:4b"
model_capability = "basic"

# Route semantic-drift to a more capable cloud model
[sentinel.detector_providers.semantic-drift]
provider = "openai"
model = "gpt-4o-mini"
api_base = "https://api.openai.com/v1"
api_key_env = "OPENAI_API_KEY"
model_capability = "standard"

# Route test-coherence to Azure
[sentinel.detector_providers.test-coherence]
provider = "azure"
model = "gpt-5.4-nano"
api_base = "https://your-resource.services.ai.azure.com"
api_key_env = "AZURE_API_KEY"
model_capability = "standard"

Override fields

Field Description
provider Override provider for this detector
model Override model name
api_base Override API base URL
api_key_env Override API key env var
model_capability Override capability tier

Any field left empty inherits from the global [sentinel] config.

How it works

  1. The runner creates per-detector provider instances for any detector with an override
  2. Each overridden detector receives its own DetectorContext with the custom provider
  3. The detector's skip_llm flag is set to false for overridden detectors (even if global skip_llm is true)
  4. Non-overridden detectors use the global provider

Use cases

Scenario Config
Local everything, cloud for semantic Ollama global + OpenAI for semantic-drift
Free judge, paid detectors Ollama for judge + Azure for LLM detectors
No LLM except one detector skip_llm = true globally + override for semantic-drift
Different model sizes Small model for judge + larger model for synthesis

See also

Clone this wiki locally