Gemini Provider
Claude-mem supports Google’s Gemini API as an alternative to the Claude Agent SDK for extracting observations from your sessions. Memory runs off-plan on your Gemini key, so observation extraction never shares your Claude plan usage.Why Use Gemini?
- Runs off-plan: Observation extraction happens on your Gemini key, not your Claude plan
- Same quality: Gemini extracts observations using the same XML format as Claude
- Errors throw clearly: 429s, 5xx, and network failures throw — leaving messages pending so they can be retried
- Hot-swappable: Switch providers without restarting the worker
Getting an API Key
- Go to the Google AI Studio API Key page
- Sign in with your Google account
- Accept the Terms of Service and privacy policies
- Click the Create API key button
- Choose a Google Cloud project or create a new one
- Copy and securely store the generated API key
Configuration
Settings
Using the Settings UI
- Open the worker URL printed on startup
- Click the gear icon to open Settings
- Under AI Provider, select Gemini
- Enter your Gemini API key
- Optionally select a different model
Manual Configuration
Edit~/.claude-mem/settings.json:
Available Models
The older
gemini-2.5-* and gemini-2.0-* model IDs were removed: Google returns 404 NOT_FOUND (“no longer available to new users”) for these when called with a freshly created API key. The -latest aliases are recommended because they never go stale as Google rotates GA models.Provider Switching
You can switch between Claude and Gemini at any time:- No restart required: Changes take effect on the next observation
- Conversation history preserved: When switching mid-session, the new provider sees the full conversation context
- Seamless transition: Both providers use the same observation format
Switching via UI
- Open Settings in the viewer
- Change the AI Provider dropdown
- The next observation will use the new provider
Switching via Settings File
Error Behavior
When Gemini refuses a request, queued observations stay pending; what happens next depends on the refusal:- Per-minute throttle (a 429 whose quota is per minute): claude-mem waits the delay Google names and resumes. If the throttle keeps refusing, Gemini is held for 90 seconds.
- Spent daily (or weekly, monthly) quota (a 429 naming a per-day quota): Gemini is held for 30 minutes, then one request checks whether the quota has reset.
- Region not served (“User location is not supported”): capture pauses with the work kept, and the next session start says to switch providers. Gemini is re-checked once every 30 minutes. Extra keys are not tried, since every key gets the same answer.
- Invalid or revoked key: with extra keys configured, the next key is tried; otherwise the same pause, and the notice says to fix the key.
- Server errors and network faults: paused with the work kept, then resumed automatically on a backoff.
- Other malformed requests (HTTP 400): that session’s pending observations are dropped. A request too long for the model’s window retires the conversation instead and keeps them.
CLAUDE_MEM_PROVIDER.
Troubleshooting
”Gemini API key not configured”
Either:- Set
CLAUDE_MEM_GEMINI_API_KEYin~/.claude-mem/settings.json, or - Set the
GEMINI_API_KEYenvironment variable
Rate Limiting
Google applies different rate limits depending on whether billing is enabled: Without billing (API key only):
Claude-mem enforces these limits automatically with built-in delays between requests. Processing may be slower but stays within limits.
With billing enabled:
If you hit rate limits:
- The pending observations stay queued and resume when the limit resets (see Error Behavior)
- Or configure a quota fallback, or switch back to Claude as your primary provider
Observation Quality
If observations seem lower quality with Gemini:- Note that Claude typically produces slightly higher quality observations
- Consider using Gemini to keep memory off-plan and Claude for important projects
Next Steps
- Configuration - Full settings reference
- Getting Started - Basic usage guide
- Troubleshooting - Common issues
Multiple keys
CLAUDE_MEM_GEMINI_API_KEYS accepts additional keys (newline- or comma-separated) alongside
CLAUDE_MEM_GEMINI_API_KEY. When a key hits a rate limit, spends its quota, or is rejected as
invalid, Gemini requests rotate to the next key instead of failing for the
rest of the window. See Multi-Key Rotation.
