MemoDocumentation
EN

External Providers

Memo supports 7 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

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 7 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.