Skip to content

Commit 992392c

Browse files
Thomas Tupperclaude
andcommitted
docs: add per-purpose inference env vars to deploy config
Exposes MEM0_LLM_BASE_URL, MEM0_LLM_API_KEY, MEM0_EMBED_BASE_URL, MEM0_EMBED_API_KEY, MEM0_GRAPH_LLM_BASE_URL, MEM0_GRAPH_LLM_API_KEY, and MEM0_GRAPH_EXTRACTION_STRATEGY across all 4 compose files, .env.example, and README. All vars are optional and fall back to OPENAI_BASE_URL / OPENAI_API_KEY. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent ef6be53 commit 992392c

6 files changed

Lines changed: 58 additions & 1 deletion

File tree

.env.example

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,24 @@ OLLAMA_CHAT_MODEL=llama3.1:8b
99
INFER_API_KEY=
1010

1111
# store runtime (canonical contract)
12-
# Internal default for one-node compose is service name `infer`.
12+
# Shared defaults — used as fallback when per-purpose vars are not set.
1313
OPENAI_BASE_URL=http://infer:8081/v1
1414
OPENAI_API_KEY=
15+
16+
# Per-purpose inference config.
17+
# Each purpose (main LLM, embedder, graph LLM) can target a different endpoint.
18+
# Falls back to shared OPENAI_BASE_URL / OPENAI_API_KEY when not set.
19+
# This allows e.g. local inference for the main LLM with cloud for embeddings.
20+
21+
# Main LLM (fact extraction + memory decisions)
1522
MEM0_LLM_MODEL=gpt-4.1-nano
23+
# MEM0_LLM_BASE_URL= # falls back to OPENAI_BASE_URL
24+
# MEM0_LLM_API_KEY= # falls back to OPENAI_API_KEY
25+
26+
# Embedder — CANNOT change model after the collection is created
1627
MEM0_EMBED_MODEL=text-embedding-3-small
28+
# MEM0_EMBED_BASE_URL= # falls back to OPENAI_BASE_URL
29+
# MEM0_EMBED_API_KEY= # falls back to OPENAI_API_KEY
1730

1831
# Qdrant config
1932
# Prefer QDRANT_URL when supported by the service runtime.
@@ -38,3 +51,6 @@ NEO4J_URL=bolt://neo4j:7687
3851
NEO4J_USERNAME=neo4j
3952
NEO4J_PASSWORD=changeme
4053
MEM0_GRAPH_LLM_MODEL=gpt-4.1-mini
54+
# MEM0_GRAPH_LLM_BASE_URL= # falls back to OPENAI_BASE_URL
55+
# MEM0_GRAPH_LLM_API_KEY= # falls back to OPENAI_API_KEY
56+
# MEM0_GRAPH_EXTRACTION_STRATEGY=tool_calling # or "json_prompting" for models without tool support

README.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,22 @@ The `.env` file configures image tags, model names, and provider keys.
9797
| `QDRANT_API_KEY` | Qdrant auth key (optional) | store runtime | `` |
9898
| `QDRANT_COLLECTION` | Collection name for memory vectors | `store` service | `foxmemory` |
9999

100+
### Per-purpose inference (optional)
101+
102+
Each inference purpose can target a different endpoint. All fall back to `OPENAI_BASE_URL` / `OPENAI_API_KEY` when not set — existing deployments are unaffected.
103+
104+
| Variable | Purpose | Fallback | Example |
105+
|---|---|---|---|
106+
| `MEM0_LLM_BASE_URL` | Main LLM endpoint | `OPENAI_BASE_URL` | `http://exo:8000/v1` |
107+
| `MEM0_LLM_API_KEY` | Main LLM API key | `OPENAI_API_KEY` | `not-needed` |
108+
| `MEM0_EMBED_BASE_URL` | Embedder endpoint | `OPENAI_BASE_URL` | `https://api.openai.com/v1` |
109+
| `MEM0_EMBED_API_KEY` | Embedder API key | `OPENAI_API_KEY` | `sk-...` |
110+
| `MEM0_GRAPH_LLM_BASE_URL` | Graph LLM endpoint | `OPENAI_BASE_URL` | `https://api.openai.com/v1` |
111+
| `MEM0_GRAPH_LLM_API_KEY` | Graph LLM API key | `OPENAI_API_KEY` | `sk-...` |
112+
| `MEM0_GRAPH_EXTRACTION_STRATEGY` | Graph extraction method | `tool_calling` | `json_prompting` |
113+
114+
`MEM0_GRAPH_EXTRACTION_STRATEGY` controls how entities and relationships are extracted from text. Use `tool_calling` (default) for models that support OpenAI-style function calling. Use `json_prompting` for models that don't (e.g. small local models served via EXO).
115+
100116
Backward-compatible variables still present in some scripts/builds:
101117

102118
- `QDRANT_HOST`

compose.external.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,11 @@ services:
1818
- OPENAI_BASE_URL=${OPENAI_BASE_URL}
1919
- OPENAI_API_KEY=${OPENAI_API_KEY}
2020
- MEM0_LLM_MODEL=${MEM0_LLM_MODEL}
21+
- MEM0_LLM_BASE_URL=${MEM0_LLM_BASE_URL:-}
22+
- MEM0_LLM_API_KEY=${MEM0_LLM_API_KEY:-}
2123
- MEM0_EMBED_MODEL=${MEM0_EMBED_MODEL}
24+
- MEM0_EMBED_BASE_URL=${MEM0_EMBED_BASE_URL:-}
25+
- MEM0_EMBED_API_KEY=${MEM0_EMBED_API_KEY:-}
2226
- QDRANT_HOST=qdrant
2327
- QDRANT_PORT=6333
2428
- QDRANT_COLLECTION=${QDRANT_COLLECTION}

compose.graph.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,11 @@ services:
3535
OPENAI_BASE_URL: ${OPENAI_BASE_URL}
3636
OPENAI_API_KEY: ${OPENAI_API_KEY}
3737
MEM0_LLM_MODEL: ${MEM0_LLM_MODEL:-gpt-4.1-nano}
38+
MEM0_LLM_BASE_URL: ${MEM0_LLM_BASE_URL:-}
39+
MEM0_LLM_API_KEY: ${MEM0_LLM_API_KEY:-}
3840
MEM0_EMBED_MODEL: ${MEM0_EMBED_MODEL:-text-embedding-3-small}
41+
MEM0_EMBED_BASE_URL: ${MEM0_EMBED_BASE_URL:-}
42+
MEM0_EMBED_API_KEY: ${MEM0_EMBED_API_KEY:-}
3943
QDRANT_HOST: qdrant
4044
QDRANT_PORT: "6333"
4145
QDRANT_COLLECTION: ${QDRANT_COLLECTION:-foxmemory}
@@ -46,6 +50,9 @@ services:
4650
NEO4J_USERNAME: ${NEO4J_USERNAME:-neo4j}
4751
NEO4J_PASSWORD: ${NEO4J_PASSWORD:-}
4852
MEM0_GRAPH_LLM_MODEL: ${MEM0_GRAPH_LLM_MODEL:-gpt-4.1-mini}
53+
MEM0_GRAPH_LLM_BASE_URL: ${MEM0_GRAPH_LLM_BASE_URL:-}
54+
MEM0_GRAPH_LLM_API_KEY: ${MEM0_GRAPH_LLM_API_KEY:-}
55+
MEM0_GRAPH_EXTRACTION_STRATEGY: ${MEM0_GRAPH_EXTRACTION_STRATEGY:-}
4956
volumes:
5057
- foxmemory_analytics_data:/data
5158
depends_on:

compose.one.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,11 @@ services:
3333
- OPENAI_BASE_URL=${OPENAI_BASE_URL}
3434
- OPENAI_API_KEY=${INFER_API_KEY}
3535
- MEM0_LLM_MODEL=${MEM0_LLM_MODEL}
36+
- MEM0_LLM_BASE_URL=${MEM0_LLM_BASE_URL:-}
37+
- MEM0_LLM_API_KEY=${MEM0_LLM_API_KEY:-}
3638
- MEM0_EMBED_MODEL=${MEM0_EMBED_MODEL}
39+
- MEM0_EMBED_BASE_URL=${MEM0_EMBED_BASE_URL:-}
40+
- MEM0_EMBED_API_KEY=${MEM0_EMBED_API_KEY:-}
3741
- QDRANT_HOST=127.0.0.1
3842
- QDRANT_PORT=6333
3943
- QDRANT_COLLECTION=${QDRANT_COLLECTION}
@@ -45,6 +49,9 @@ services:
4549
- NEO4J_USERNAME=${NEO4J_USERNAME:-neo4j}
4650
- NEO4J_PASSWORD=${NEO4J_PASSWORD:-}
4751
- MEM0_GRAPH_LLM_MODEL=${MEM0_GRAPH_LLM_MODEL:-gpt-4.1-mini}
52+
- MEM0_GRAPH_LLM_BASE_URL=${MEM0_GRAPH_LLM_BASE_URL:-}
53+
- MEM0_GRAPH_LLM_API_KEY=${MEM0_GRAPH_LLM_API_KEY:-}
54+
- MEM0_GRAPH_EXTRACTION_STRATEGY=${MEM0_GRAPH_EXTRACTION_STRATEGY:-}
4855
volumes:
4956
- foxmemory_store_data:/qdrant/storage
5057
depends_on:

compose.split.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,11 @@ services:
3131
- OPENAI_BASE_URL=${OPENAI_BASE_URL}
3232
- OPENAI_API_KEY=${OPENAI_API_KEY}
3333
- MEM0_LLM_MODEL=${MEM0_LLM_MODEL}
34+
- MEM0_LLM_BASE_URL=${MEM0_LLM_BASE_URL:-}
35+
- MEM0_LLM_API_KEY=${MEM0_LLM_API_KEY:-}
3436
- MEM0_EMBED_MODEL=${MEM0_EMBED_MODEL}
37+
- MEM0_EMBED_BASE_URL=${MEM0_EMBED_BASE_URL:-}
38+
- MEM0_EMBED_API_KEY=${MEM0_EMBED_API_KEY:-}
3539
- QDRANT_HOST=127.0.0.1
3640
- QDRANT_PORT=6333
3741
- QDRANT_COLLECTION=${QDRANT_COLLECTION}
@@ -43,6 +47,9 @@ services:
4347
- NEO4J_USERNAME=${NEO4J_USERNAME:-neo4j}
4448
- NEO4J_PASSWORD=${NEO4J_PASSWORD:-}
4549
- MEM0_GRAPH_LLM_MODEL=${MEM0_GRAPH_LLM_MODEL:-gpt-4.1-mini}
50+
- MEM0_GRAPH_LLM_BASE_URL=${MEM0_GRAPH_LLM_BASE_URL:-}
51+
- MEM0_GRAPH_LLM_API_KEY=${MEM0_GRAPH_LLM_API_KEY:-}
52+
- MEM0_GRAPH_EXTRACTION_STRATEGY=${MEM0_GRAPH_EXTRACTION_STRATEGY:-}
4653
volumes:
4754
- foxmemory_store_data:/qdrant/storage
4855
depends_on:

0 commit comments

Comments
 (0)