Three PolicyCodex features call a language model: statement extraction, spec import, and pull request compliance checks. All three use the model configured here.
The LLM tab in Settings with Base URL, Model and API key fields
Configure it at Settings → LLM.

Fields

The banner above the fields tells you whether the organisation is currently configured.
Any OpenAI-compatible API works. PolicyCodex does not require a specific provider, and the model is never hardcoded — it is always read from this configuration.

Where the configuration applies

These values are used everywhere on your organisation’s behalf: the web app’s extraction and import, the Edge Functions behind them, and the MCP worker that serves check_compliance to agents and CI. They take precedence per-field over the platform’s fallback configuration. Change the model here, not in deployment secrets, unless you specifically intend to change the fallback for organisations that have no configuration of their own.

Key handling

The API key is write-only in the interface. Once saved it is never displayed again — leaving the field blank on a subsequent save preserves it. To rotate, paste the new key and save.
Only domain owners can view or change this tab.

Choosing a model

Extraction and import

Structured rewriting of documents you then review. A mid-tier model is usually sufficient — a human checks the output before anything is saved.

Compliance checks

Judgement against a diff, running unattended, with the power to block merges. Worth a stronger model: a weak one produces false positives, and false positives are how a standards programme loses its mandate.

Troubleshooting

Check the banner says configured. An unset or invalid key fails silently from the RFC page’s perspective — the statements table simply stays empty.
The worker needs a reachable model too. If extraction works in the app but CI checks come back empty, the worker’s fallback configuration is likely missing a model — set the values here so your organisation’s configuration takes precedence.
A weaker model will embellish. Switch to a stronger one, and in the meantime read the conversion output carefully — nothing is created until you save.