Skip to content

Commit 5d434ea

Browse files
authored
docs: update .env.example with comprehensive variables and comments (#511)
## Summary Updated [docker/.env.example](cci:7://file:///Users/nowcoder/Desktop/MemOS/docker/.env.example:0:0-0:0) to include all currently used environment variables in the codebase, ensuring users have a complete reference for configuration. ## Source - Related Issue: #505 ## Changes - Added missing variables (e.g., `API_SCHEDULER_ON`, `MOS_CUBE_PATH`). - Clarified comments and usage for existing variables. - Verified against [src/memos/api/config.py] and other source files. ## Suggestion To further improve the onboarding experience, I suggest we consider providing multiple preset configuration files (e.g., `.env.simple`, `.env.production`, `.env.dev`) or a `.env.sync` mechanism. This would allow users to quickly choose a configuration that matches their use case without needing to manually toggle every option in a single large file.
2 parents 2b6dc7e + 11e3467 commit 5d434ea

File tree

1 file changed

+161
-47
lines changed

1 file changed

+161
-47
lines changed

docker/.env.example

Lines changed: 161 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,174 @@
1-
# MemOS Environment Variables Configuration
2-
TZ=Asia/Shanghai
1+
# MemOS Environment Variables (core runtime)
2+
# Legend: [required] needed for default startup; others are optional or conditional per comments.
33

4-
MOS_CUBE_PATH="/tmp/data_test" # Path to memory storage (e.g. /tmp/data_test)
5-
MOS_ENABLE_DEFAULT_CUBE_CONFIG="true" # Enable default cube config (true/false)
4+
## Base
5+
TZ=Asia/Shanghai
6+
ENV_NAME=PLAYGROUND_OFFLINE # Tag shown in DingTalk notifications (e.g., PROD_ONLINE/TEST); no runtime effect unless ENABLE_DINGDING_BOT=true
7+
MOS_CUBE_PATH=/tmp/data_test # local data path
8+
MEMOS_BASE_PATH=. # CLI/SDK cache path
9+
MOS_ENABLE_DEFAULT_CUBE_CONFIG=true # enable default cube config
10+
MOS_ENABLE_REORGANIZE=false # enable memory reorg
11+
MOS_TEXT_MEM_TYPE=general_text # general_text | tree_text
12+
ASYNC_MODE=sync # async/sync, used in default cube config
613

7-
# OpenAI Configuration
8-
OPENAI_API_KEY="sk-xxx" # Your OpenAI API key
9-
OPENAI_API_BASE="http://xxx" # OpenAI API base URL (default: https://api.openai.com/v1)
14+
## User/session defaults
15+
MOS_USER_ID=root
16+
MOS_SESSION_ID=default_session
17+
MOS_MAX_TURNS_WINDOW=20
18+
MOS_TOP_K=50
1019

11-
# MemOS Chat Model Configuration
20+
## Chat LLM (main dialogue)
1221
MOS_CHAT_MODEL=gpt-4o-mini
1322
MOS_CHAT_TEMPERATURE=0.8
1423
MOS_MAX_TOKENS=8000
1524
MOS_TOP_P=0.9
16-
MOS_TOP_K=50
17-
MOS_CHAT_MODEL_PROVIDER=openai
18-
19-
# graph db
20-
# neo4j
21-
NEO4J_BACKEND=xxx
22-
NEO4J_URI=bolt://xxx
23-
NEO4J_USER=xxx
24-
NEO4J_PASSWORD=xxx
25-
MOS_NEO4J_SHARED_DB=xxx
26-
NEO4J_DB_NAME=xxx
27-
28-
# tetxmem reog
29-
MOS_ENABLE_REORGANIZE=false
30-
31-
# MemOS User Configuration
32-
MOS_USER_ID=root
33-
MOS_SESSION_ID=default_session
34-
MOS_MAX_TURNS_WINDOW=20
25+
MOS_CHAT_MODEL_PROVIDER=openai # openai | huggingface | vllm
26+
MOS_MODEL_SCHEMA=memos.configs.llm.VLLMLLMConfig # vllm only: config class path; keep default unless you extend it
27+
OPENAI_API_KEY=sk-xxx # [required] when provider=openai
28+
OPENAI_API_BASE=https://api.openai.com/v1 # [required] base for the key
29+
OPENAI_BASE_URL= # compatibility for eval/scheduler
30+
VLLM_API_KEY= # required when provider=vllm
31+
VLLM_API_BASE=http://localhost:8088/v1 # required when provider=vllm
3532

36-
# MemRader Configuration
33+
## MemReader / retrieval LLM
3734
MEMRADER_MODEL=gpt-4o-mini
38-
MEMRADER_API_KEY=sk-xxx
39-
MEMRADER_API_BASE=http://xxx:3000/v1
35+
MEMRADER_API_KEY=sk-xxx # [required] can reuse OPENAI_API_KEY
36+
MEMRADER_API_BASE=http://localhost:3000/v1 # [required] base for the key
4037
MEMRADER_MAX_TOKENS=5000
4138

42-
#embedding & rerank
39+
## Embedding & rerank
4340
EMBEDDING_DIMENSION=1024
44-
MOS_EMBEDDER_BACKEND=universal_api
45-
MOS_EMBEDDER_MODEL=bge-m3
46-
MOS_EMBEDDER_API_BASE=http://xxx
47-
MOS_EMBEDDER_API_KEY=EMPTY
48-
MOS_RERANKER_BACKEND=http_bge
49-
MOS_RERANKER_URL=http://xxx
50-
# Ollama Configuration (for embeddings)
51-
#OLLAMA_API_BASE=http://xxx
52-
53-
# milvus for pref mem
54-
MILVUS_URI=http://xxx
55-
MILVUS_USER_NAME=xxx
56-
MILVUS_PASSWORD=xxx
57-
58-
# pref mem
41+
MOS_EMBEDDER_BACKEND=universal_api # universal_api | ollama
42+
MOS_EMBEDDER_PROVIDER=openai # required when universal_api
43+
MOS_EMBEDDER_MODEL=bge-m3 # siliconflow → use BAAI/bge-m3
44+
MOS_EMBEDDER_API_BASE=http://localhost:8000/v1 # required when universal_api
45+
MOS_EMBEDDER_API_KEY=EMPTY # required when universal_api
46+
OLLAMA_API_BASE=http://localhost:11434 # required when backend=ollama
47+
MOS_RERANKER_BACKEND=http_bge # http_bge | http_bge_strategy | cosine_local
48+
MOS_RERANKER_URL=http://localhost:8001 # required when backend=http_bge*
49+
MOS_RERANKER_MODEL=bge-reranker-v2-m3 # siliconflow → use BAAI/bge-reranker-v2-m3
50+
MOS_RERANKER_HEADERS_EXTRA= # extra headers, JSON string
51+
MOS_RERANKER_STRATEGY=single_turn
52+
MOS_RERANK_SOURCE= # optional rerank scope, e.g., history/stream/custom
53+
54+
## Internet search & preference memory
55+
ENABLE_INTERNET=false
56+
BOCHA_API_KEY= # required if ENABLE_INTERNET=true
57+
SEARCH_MODE=fast # fast | fine | mixture
58+
FAST_GRAPH=false
59+
BM25_CALL=false
60+
VEC_COT_CALL=false
61+
FINE_STRATEGY=rewrite # rewrite | recreate | deep_search
62+
ENABLE_ACTIVATION_MEMORY=false
5963
ENABLE_PREFERENCE_MEMORY=true
60-
RETURN_ORIGINAL_PREF_MEM=true
64+
PREFERENCE_ADDER_MODE=fast # fast | safe
65+
DEDUP_PREF_EXP_BY_TEXTUAL=false
66+
67+
## Reader chunking
68+
MEM_READER_BACKEND=simple_struct # simple_struct | strategy_struct
69+
MEM_READER_CHAT_CHUNK_TYPE=default # default | content_length
70+
MEM_READER_CHAT_CHUNK_TOKEN_SIZE=1600 # tokens per chunk (default mode)
71+
MEM_READER_CHAT_CHUNK_SESS_SIZE=10 # sessions per chunk (default mode)
72+
MEM_READER_CHAT_CHUNK_OVERLAP=2 # overlap between chunks
73+
74+
## Scheduler (MemScheduler / API)
75+
MOS_ENABLE_SCHEDULER=false
76+
MOS_SCHEDULER_TOP_K=10
77+
MOS_SCHEDULER_ACT_MEM_UPDATE_INTERVAL=300
78+
MOS_SCHEDULER_CONTEXT_WINDOW_SIZE=5
79+
MOS_SCHEDULER_THREAD_POOL_MAX_WORKERS=10000
80+
MOS_SCHEDULER_CONSUME_INTERVAL_SECONDS=0.01
81+
MOS_SCHEDULER_ENABLE_PARALLEL_DISPATCH=true
82+
MOS_SCHEDULER_ENABLE_ACTIVATION_MEMORY=false
83+
API_SCHEDULER_ON=true
84+
API_SEARCH_WINDOW_SIZE=5
85+
API_SEARCH_HISTORY_TURNS=5
86+
87+
## Graph / vector stores
88+
NEO4J_BACKEND=neo4j-community # neo4j-community | neo4j | nebular | polardb
89+
NEO4J_URI=bolt://localhost:7687 # required when backend=neo4j*
90+
NEO4J_USER=neo4j # required when backend=neo4j*
91+
NEO4J_PASSWORD=12345678 # required when backend=neo4j*
92+
NEO4J_DB_NAME=neo4j # required for shared-db mode
93+
MOS_NEO4J_SHARED_DB=false
94+
QDRANT_HOST=localhost
95+
QDRANT_PORT=6333
96+
MILVUS_URI=http://localhost:19530 # required when ENABLE_PREFERENCE_MEMORY=true
97+
MILVUS_USER_NAME=root # same as above
98+
MILVUS_PASSWORD=12345678 # same as above
99+
NEBULAR_HOSTS=["localhost"]
100+
NEBULAR_USER=root
101+
NEBULAR_PASSWORD=xxxxxx
102+
NEBULAR_SPACE=shared-tree-textual-memory
103+
NEBULAR_WORKING_MEMORY=20
104+
NEBULAR_LONGTERM_MEMORY=1000000
105+
NEBULAR_USER_MEMORY=1000000
106+
107+
## Relational DB (user manager / PolarDB)
108+
MOS_USER_MANAGER_BACKEND=sqlite # sqlite | mysql
109+
MYSQL_HOST=localhost # required when backend=mysql
110+
MYSQL_PORT=3306
111+
MYSQL_USERNAME=root
112+
MYSQL_PASSWORD=12345678
113+
MYSQL_DATABASE=memos_users
114+
MYSQL_CHARSET=utf8mb4
115+
POLAR_DB_HOST=localhost
116+
POLAR_DB_PORT=5432
117+
POLAR_DB_USER=root
118+
POLAR_DB_PASSWORD=123456
119+
POLAR_DB_DB_NAME=shared_memos_db
120+
POLAR_DB_USE_MULTI_DB=false
121+
122+
## Redis (scheduler queue) — fill only if you want scheduler queues in Redis; otherwise in-memory queue is used
123+
REDIS_HOST=localhost # global Redis endpoint (preferred over MEMSCHEDULER_*)
124+
REDIS_PORT=6379
125+
REDIS_DB=0
126+
REDIS_PASSWORD=
127+
REDIS_SOCKET_TIMEOUT=
128+
REDIS_SOCKET_CONNECT_TIMEOUT=
129+
MEMSCHEDULER_REDIS_HOST= # fallback keys if not using the global ones
130+
MEMSCHEDULER_REDIS_PORT=
131+
MEMSCHEDULER_REDIS_DB=
132+
MEMSCHEDULER_REDIS_PASSWORD=
133+
MEMSCHEDULER_REDIS_TIMEOUT=
134+
MEMSCHEDULER_REDIS_CONNECT_TIMEOUT=
135+
136+
## MemScheduler LLM
137+
MEMSCHEDULER_OPENAI_API_KEY= # LLM key for scheduler’s own calls (OpenAI-compatible); leave empty if scheduler not using LLM
138+
MEMSCHEDULER_OPENAI_BASE_URL= # Base URL for the above; can reuse OPENAI_API_BASE
139+
MEMSCHEDULER_OPENAI_DEFAULT_MODEL=gpt-4o-mini
140+
141+
## Nacos (optional config center)
142+
NACOS_ENABLE_WATCH=false
143+
NACOS_WATCH_INTERVAL=60
144+
NACOS_SERVER_ADDR=
145+
NACOS_DATA_ID=
146+
NACOS_GROUP=DEFAULT_GROUP
147+
NACOS_NAMESPACE=
148+
AK=
149+
SK=
150+
151+
## DingTalk bot & OSS upload
152+
ENABLE_DINGDING_BOT=false # set true -> fields below required
153+
DINGDING_ACCESS_TOKEN_USER=
154+
DINGDING_SECRET_USER=
155+
DINGDING_ACCESS_TOKEN_ERROR=
156+
DINGDING_SECRET_ERROR=
157+
DINGDING_ROBOT_CODE=
158+
DINGDING_APP_KEY=
159+
DINGDING_APP_SECRET=
160+
OSS_ENDPOINT= # bot image upload depends on OSS
161+
OSS_REGION=
162+
OSS_BUCKET_NAME=
163+
OSS_ACCESS_KEY_ID=
164+
OSS_ACCESS_KEY_SECRET=
165+
OSS_PUBLIC_BASE_URL=
166+
167+
## Logging / external sink
168+
CUSTOM_LOGGER_URL=
169+
CUSTOM_LOGGER_TOKEN=
170+
CUSTOM_LOGGER_WORKERS=2
171+
172+
## SDK / external client
173+
MEMOS_API_KEY=
174+
MEMOS_BASE_URL=https://memos.memtensor.cn/api/openmem/v1

0 commit comments

Comments
 (0)