MemoDocumentation
EN

External Providers

Memo supports 10 cloud AI services alongside local models. Each provider is configured independently with its own API key, model selection, and context window.

Provider Roster

Provider Models
OpenAI GPT-4o, GPT-4.1
Google Gemini Gemini 2.0 Flash, 2.5 Pro
Anthropic Claude Claude Sonnet 4, Opus 4
xAI Grok Grok-2
Groq Llama 4, DeepSeek (fast inference)
OpenRouter 300+ models through one API
Ollama Any locally-running Ollama model
OpenCode Zen Pay-as-you-go gateway, some models free
OpenCode Go Subscription-based gateway
Kilo Code AI Gateway — 368+ models via one API (new in v3.9.0)

Live Model Browsers

OpenRouter, Kilo Code and OpenCode Zen work like app stores — instead of typing a model name by hand, hit "Select" in the provider dialog and pick from the real, live catalog each API actually offers. Free models are sorted to the top under a green checkmark; OpenRouter derives free status from pricing data, Kilo Code from its direct isFree field, and OpenCode Zen from its -free id suffix. Browsing Kilo's catalog doesn't even require an API key first.

Reasoning Effort

Providers that genuinely support per-model reasoning-effort control ("low/medium/high", thinking budgets) expose it in the same dialog, backed by live per-model capability discovery where the vendor's API offers it (Claude, Gemini, Ollama, OpenRouter). The picker hides itself where capability can't be verified — sending an effort level to a model that doesn't accept one is a hard request failure, not a silent no-op.

Smart Fallback Router

Enabled providers form a priority-ordered chain. When the primary provider fails or is rate-limited, Memo falls through to the next one automatically.

User → [OpenAI] → fail → [Gemini] → fail → [Claude] → success → User

Auto-Disable

After 3 consecutive failures, a provider is automatically disabled. A background health-check goroutine probes it periodically; if it recovers, the provider re-enables without user intervention.

Per-Model Context Window

The context budget (how much chat history is packed per request) follows the model, not the provider type. Set the "Context window (tokens)" field in the provider config to match your model's real window (e.g. 1000000 for 1M). Leave empty for sensible defaults (Gemini 1M, Claude 200K, others 128K).

Encrypted API Key Storage

API keys are stored encrypted on disk using AES-256-GCM with a machine-derived key. The key derivation uses the machine's hardware identifier — keys are unrecoverable if the machine key file (data/machine.key) is lost. Keys never appear in plaintext in config files or logs.

Provider Config Dialog

The Settings → API Providers tab shows a list of all 10 providers. Each entry:

  • Displays the provider logo (rendered via flutter_svg)
  • Toggle to enable/disable
  • Expandable card with API key field, model selector, and context window field
  • Per-provider enabled model list with checkboxes

Engine Strip Indicator

The bottom engine bar displays the currently active provider's logo and name with a green status dot, matching the local model indicator style.

Live Switching

Switch providers mid-conversation with /model — no restart, no lost context. The provider change takes effect on the next message.