Provider matrix
Release-aware provider support
Conservative labels derived from the shipped registry, named profiles, and installed workflow contract. Planned adapters stay explicitly not implemented.
Ollama (local)
implemented on mainavailable in distributionsupported
Default installed workflow path via REVIEWSENSEI_PROVIDER_MODE=local and local model variables.
Evidencesrc/review_sensei/providers/registry.pysrc/review_sensei/providers/profiles.pydocs/installation.md
- Requires a reachable local Ollama runner on loopback.
- No bearer credential is used for the default local-private profile.
Ollama Cloud
implemented on mainavailable in distributionsupported
Installed workflows opt in with REVIEWSENSEI_PROVIDER_MODE=cloud and repository OLLAMA_API_KEY secret.
Evidencesrc/review_sensei/providers/registry.pysrc/review_sensei/providers/profiles.pydocs/installation.mddocs/data-handling.md
- Requires a provisioned Ollama Cloud account and OLLAMA_API_KEY.
- Cloud egress is explicit opt-in; local runs cannot silently fail over to Ollama Cloud.
OpenAI-compatible (Python boundary)
implemented on mainavailable in distribution
Installed GitHub workflows do not pass --profile; fast-triage is an explicit CLI/evaluate path only.
Evidencesrc/review_sensei/providers/registry.pysrc/review_sensei/providers/openai_compatible.pydocs/public-contracts.mddocs/adr/0041-production-provider-adapters-and-per-stage-profiles.md
- Named profiles are immutable presets; custom endpoints require unprofiled openai-compatible use.
- Not enabled by the reusable workflow; requires OPENAI_API_KEY and --profile fast-triage or equivalent settings.
- The npx launcher forwards argv to the Python CLI; reaching openai-compatible still requires explicit --profile fast-triage (or unprofiled flags) plus OPENAI_API_KEY.
OpenRouter
implemented on mainavailable in distributionsupportedexperimental
Installed workflows opt in with REVIEWSENSEI_PROVIDER_MODE=openrouter and repository OPENROUTER_API_KEY secret. The supported label applies to this hosted workflow path with allowlisted models only.
Evidencesrc/review_sensei/providers/registry.pysrc/review_sensei/providers/openrouter.pysrc/review_sensei/providers/profiles.pysrc/review_sensei/provider_config.pypackages/npm/cli/README.mdtests/test_cli.pydocs/installation.mddocs/data-handling.mddocs/adr/0045-openrouter-trusted-configuration.md
- Hosted OpenRouter accepts only the published allowlist in provider_config.HOSTED_OPENROUTER_DEFAULTS; the default model deepseek/deepseek-v4.1-flash is pinned to Morph with no fallback, data collection denied, and ZDR required.
- CLI profiles openrouter-sonnet and openrouter-gpt remain unqualified and require --allow-unqualified-profile for live review; tests/test_cli.py covers the opt-in and fail-closed paths.
- The npx launcher forwards argv to the Python CLI; reaching OpenRouter still requires explicit --provider openrouter (or --profile) plus OPENROUTER_API_KEY.
- Hosted workflows reject allow_unqualified_profile=true; use the CLI for unqualified profile runs.