Models & secrets
Lunen calls models from three providers — OpenAI, Anthropic, and Google Gemini — using API keys your organization supplies. Keys live in a per-organization vault, are write-only from the moment they are saved, and are the only credential source: there is no environment-variable fallback and no key baked into the platform.
Managing keys
Settings → Secrets holds one key slot per provider: OpenAI API Key, Anthropic API Key, Google Gemini API Key. Paste a key and save; the page thereafter shows only Configured and the date it last changed. To rotate a key, delete it and add the new one — the value itself can never be read back.
Key permissions are per provider: manage, list, use, and delete each
resolve against the specific provider’s secret, so a role can, for example,
see that OpenAI is configured without being able to use Anthropic. Every save
and delete lands in the audit log as secret.upsert or secret.delete —
with the key value redacted.
Keys are not validated on save. A wrong or unfunded key surfaces at first use as a provider error on the run — if agents suddenly report quota or credential errors, the Secrets page is the first place to look.
Which providers an agent may use
A session is authorized for the intersection of two sets: providers with a
configured key, and providers the acting member holds secret.use on. That
list is fixed when the session is created and re-checked when a Task Agent is
saved and again at every scheduled dispatch — a schedule whose owner loses
secret.use on a required provider stops running with a clear error rather
than borrowing someone else’s access.
The model catalog
Fourteen models are supported. All of them can call tools; audio and video attachments are supported on Google models only.
| Provider | Models |
|---|---|
| OpenAI | GPT-5.5 · GPT-5.4 · GPT-5.4 mini · GPT-5.4 nano · GPT-5.3 Instant |
| Anthropic | Claude Opus 4.8 · Claude Opus 4.6 · Claude Sonnet 4.6 · Claude Sonnet 4.5 · Claude Haiku 4.5 |
| Gemini 2.5 Pro · Gemini 3.5 Flash · Gemini 2.5 Flash · Gemini 3.1 Flash Lite |
Most models expose a reasoning effort control (Low / Med / High / Max) alongside the model picker; models without a reasoning mode simply hide it.
How a model gets chosen
Lunen resolves a model per role — planning, task execution, conversation, and internal utility work each have a sensible default per provider — and lets people override at three levels, most specific first:
- Per turn — the model picker in the chat composer.
- Per agent — the Execution Model field on an agent’s blueprint panel, independent of the model used during planning.
- Per user — the Agent defaults section under Preferences, which sets a member’s planning and chat defaults.
If none of those apply, the role default for the organization’s configured providers is used. Resolution fails closed: with no key configured anywhere, agents stop with an explicit error instead of silently falling back to a default provider.
Provider-native web search is executed inside the provider, not through an MCP server — it bypasses your organization’s tool policies and is not auditable the way MCP tool calls are. If that matters for your governance posture, prefer a search MCP server you can policy-gate.
Other secrets
Two other kinds of secret share the same vault but are managed elsewhere: MCP server credentials and OAuth clients (from the MCP Registry and Connected Services), and per-trigger webhook signing keys (from a Task Agent’s webhook triggers). Like provider keys, none of them are ever readable back out of the product.