Hosted service
- Open Settings in the dashboard.
- Under Provider Keys → OpenRouter, paste your OpenRouter key and save it. The key must start with
sk-or-. - Confirm the status is CONNECTED, then try recall for content you have already stored. OpenRouter bills provider usage to your OpenRouter account.
source: "personal") for the signed-in account. A saved key’s format alone does not prove the provider will accept requests.
The embedding call uses the model google/gemini-embedding-2-preview through OpenRouter. The backend resolves the key with shared keys excluded. If the stored credential is missing, or the only available credential is a shared one, the call fails with missing_openrouter_key and the message OpenRouter API key not set for user.
What still works without the key:
- Writes that do not need a new embedding.
- Lookups that can answer from text match alone.
- Semantic recall and other paths that must embed the query or a new memory.
- Durable extraction, distillation, and reflection jobs that call OpenRouter. Without a personal key, those jobs skip provider work; a dry run can report without making a provider call.
Local and self-hosted installers
Two installer paths still ask for a Gemini key. That is not how the hosted embedding runtime selects a key.
Treat the Gemini prompt as an installer mismatch with the current embedding runtime. For a backend you operate, configure the same personal-OpenRouter path the runtime calls, or expect semantic recall to fail closed when that key is absent. Setting
EMBEDDING_PROVIDER=gemini in an env file does not switch the hosted runtime off the personal OpenRouter key.
Durable memory extraction is a separate OpenRouter call. It is not the embedding call, and it is not distillation. Distillation processes retained conversation windows into durable memories using your personal key. It is separate from overage forgetting and stale-memory archival.
What not to set
LLM model selection
Embedding and language-model calls use separate models:
The distillation selector uses the compatible OpenRouter catalog. If a selected non-default model is no longer available, the backend reports an error rather than silently choosing another model.