Skip to main content
Hosted semantic search embeds text with the OpenRouter key stored on your account. A missing personal key fails that embedding. It does not fall back to a shared key.

Hosted service

  1. Open Settings in the dashboard.
  2. Under Provider Keys → OpenRouter, paste your OpenRouter key and save it. The key must start with sk-or-.
  3. Confirm the status is CONNECTED, then try recall for content you have already stored. OpenRouter bills provider usage to your OpenRouter account.
This stores a personal credential (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.
What degrades:
  • 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.
Removing the key prevents new provider calls that need that credential. Already cached vectors can still be reused; removing a key does not erase stored memories.

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.

Troubleshooting