Model and dictation connections

Choose where the interview runs.

IdeaForge calls the selected provider directly from your browser. There is no IdeaForge proxy, account, or application server between the page and the model. Hosted providers need their own API key; local providers need a loopback server and an installed model.

Use the Check button before a real interview. For a hosted provider it validates the key. For a local provider it checks the server and reads its model list. This separates setup failures from an interview that has already started.

Current provider choices

Choice Credential Best fit What IdeaForge does
Claude (this viewer) No key IdeaForge opened inside a Claude viewer that grants model sampling. Uses the viewer's built-in sampling capability. It is offered as the default only when that capability is actually present.
Anthropic Anthropic API key A hosted Claude path with separate question and wrap-up models. Calls the Anthropic Messages API directly. Checking the key makes a small real request using the question model, because Anthropic exposes no browser-reachable model list to read instead.
OpenAI OpenAI API key A hosted OpenAI path, with its catalogue readable from the browser. Uses OpenAI-compatible chat completions. Checking the key reads /models, which both authenticates and fills the model suggestions in one request.
Groq Groq API key Hosted OpenAI-compatible inference, with optional Groq transcription. Uses Groq's OpenAI-compatible endpoint. The same key can cover both interview inference and Groq dictation when both choices match.
OpenRouter OpenRouter API key A hosted route to many vendors through one key. Sends bearer-authenticated OpenAI-compatible requests to OpenRouter's allowlisted API origin, and reads its catalogue the same way.
Ollama (local) No key in the current UI A model served by Ollama on this device. Starts at http://localhost:11434/v1, reads the installed model list, and requires you to choose or type a model instead of guessing one.
LM Studio (local) No key in the current UI A model served by LM Studio on this device. Starts at http://localhost:1234/v1. LM Studio must have its local server running and CORS enabled.
Another local server No key in the current UI llama.cpp, vLLM, or another OpenAI-compatible server on this device. Accepts a typed OpenAI-compatible base URL only on localhost or 127.0.0.1, and requires a model name.

Choosing the models

Every provider except the Claude viewer offers two model fields, because an interview does not spend its calls evenly. Each question is one call, and there are usually around a dozen. The wrap-up is a single call that reads the whole transcript and produces the refined prompt. Those are different jobs, so IdeaForge lets you answer them separately.

Leave a field blank to use the provider's own default, which is shown in the field as placeholder text. Choosing a question model never changes the wrap-up: the provider's stronger default stays in place unless you replace it yourself. A local server has no stronger default, so there a single question model serves both.

Both fields accept any identifier the provider will answer to, and both suggest the models IdeaForge already uses. Pressing Check the key or Check the connection replaces those suggestions with the real list wherever the provider publishes one in a browser-reachable form. Anthropic does not, so its suggestions stay as the models IdeaForge defaults to; type any other Claude identifier directly. A suggested list is a convenience and not a guarantee: a hosted catalogue usually includes models that are not chat models at all.

There is no arbitrary remote-server option. A hand-typed address must be loopback. Allowing any remote URL would widen the page's network allowlist and undermine the boundary that prevents a stored key from being posted to an attacker-controlled host.

Set up and verify a provider

  1. Select the provider. On a normal web page, Anthropic is the first-run default. Inside a compatible Claude viewer, the no-key viewer provider becomes the default.
  2. Paste a hosted key, or set the local server address. Local OpenAI-compatible addresses should include the API root, normally ending in /v1, because IdeaForge appends /models and /chat/completions.
  3. Press Check the key or Check the connection. The check makes a real request and fills the model suggestions from the provider's own list wherever one is readable, without replacing a model name you typed.
  4. Choose the models, or leave them blank. Blank means the provider's default, shown in each field as placeholder text. A local server has no default, so it needs a question model before it will start. If the list is unavailable but you know the identifier, type it directly.
  5. Start the interview. The provider selection, credentials, local address, and both model choices are saved on this device when the provider is built for a check or an interview.

For local browser and server requirements, including hosted-page CORS and local network permission, continue to Local models and Docker.

How saved credentials behave

The encrypted-at-rest design and its limits are explained in Privacy and security. The short version is that a copied browser profile does not contain the API key in plaintext, but code already running as this origin could use the stored key in the same way the app can. Use a scoped, expiring key with a sensible provider-side limit.

Dictation is a separate provider choice

Dictation choice Key behaviour Network behaviour
Browser recogniser No IdeaForge transcription key. Uses the browser's Web Speech implementation when it proves that it is alive. Its processing model is controlled by the browser, not IdeaForge.
Groq Whisper Uses the inference key automatically when Groq is also the selected model provider; otherwise it has its own saved transcription key. Sends recorded audio directly to Groq's transcription endpoint.
OpenAI transcription Uses the inference key automatically when OpenAI is also selected; otherwise it has its own saved transcription key. Sends recorded audio directly to OpenAI's transcription endpoint.
Off No transcription key. No IdeaForge audio capture or transcription request.

The app tests the browser recogniser by behaviour rather than by the mere presence of an API. If it cannot prove that recognition works, it uses the selected hosted transcriber when one is configured, or keeps the keyboard as the reliable fallback. See Mobile and voice for platform details.

What happens when a provider fails

Provider adapters translate service-specific failures into one shared set of authentication, rate-limit, overload, network, timeout, response, cancellation, and configuration errors. Transient rate-limit, overload, and network failures are retried with backoff. Authentication, invalid configuration, unusable model output, and the request deadline require a user or model change instead.

A failed question does not dead-end the interview. IdeaForge uses a built-in checklist question for that turn and marks the source on screen and in the saved session. A failed final synthesis preserves the transcript, coverage, and open questions; only the generated refined prompt is missing. Use the troubleshooting decision tree when a check or turn falls back.

Implementation references

The current list and first-run selection live in src/providers/index.js. Request authentication, loopback policy, local-network options, and deadlines live in src/providers/http.js. The hosted and local OpenAI-compatible presets are in src/providers/openaiCompat.js, while Anthropic's browser-direct adapter is in src/providers/anthropic.js.

Settings persistence is implemented by src/store/secrets.js, the UI flow by src/ui/app.js, and hosted dictation by src/voice/transcribe.js. GitHub Models and Copilot chat are deliberately not provider choices; the rationale is recorded beside the registry in src/providers/index.js.