Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
a2a6f5e
feat: add try catch for mem scheduler (#144)
fridayL Jul 23, 2025
e385ce0
Feat: docker settings modify (#143)
tianxing02 Jul 23, 2025
d3e5d3b
fix bugs: fix bugs in the example of memos_w_scheduler and fix bugs o…
tangg555 Jul 23, 2025
3d90823
feat(eval): support memos api mode (#116)
Duguce Jul 24, 2025
5e60d89
feat: modify internet search (#152)
CaralHsi Jul 24, 2025
b946377
feat: add context for playground and for fastapi object (#151)
fridayL Jul 24, 2025
06ca986
feat: add memreader to tackle with internet (#154)
CaralHsi Jul 25, 2025
db814c3
feat: check nodes existence (#156)
Nyakult Jul 25, 2025
bcc672c
feat: add code for internet api and change deault config for memos (…
fridayL Jul 25, 2025
084b241
feat: fix multi-tanant bug for nebula; add create index; fix some fun…
CaralHsi Jul 26, 2025
ce46104
fix: search bug;
CaralHsi Jul 26, 2025
176f35b
fix index and multi-db-name
CaralHsi Jul 26, 2025
5755bcc
feat: finish get-by-metadata in nebula
CaralHsi Jul 26, 2025
4cb5f45
feat: finish get_structure_optimization_candidates
CaralHsi Jul 26, 2025
de7606f
fix: return value in nebula
CaralHsi Jul 26, 2025
2f8fb46
feat: fix all nebula issue
CaralHsi Jul 26, 2025
64c5092
feat: create pool connecting
CaralHsi Jul 26, 2025
72c50f9
fix: reorganize bug
CaralHsi Jul 26, 2025
732f3a4
add several edge types to nebula
CaralHsi Jul 26, 2025
1d71884
feat: add user manager factory pattern and product API enhancements (…
fridayL Jul 26, 2025
30a7ab7
feat: change edge name in nebula
CaralHsi Jul 26, 2025
6700eca
fix: bug for graph not found
CaralHsi Jul 26, 2025
1a6c4b1
Merge branch 'dev' of github.com:MemTensor/MemOS into nebular
CaralHsi Jul 26, 2025
725c526
fix: fail to create db bug
CaralHsi Jul 26, 2025
3c530cb
delete test nebula in temp
CaralHsi Jul 26, 2025
0422281
fix: no node_not_exist bug
CaralHsi Jul 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,16 @@ tmp/
**/tmp_data/

# evaluation data
*.csv
*.jsonl
evaluation/*tmp/
evaluation/results
evaluation/.env
!evaluation/configs-example/*.json
evaluation/configs/*
**tree_textual_memory_locomo**
.env
evaluation/scripts/personamem

# Byte-compiled / optimized / DLL files
__pycache__/
Expand Down
16 changes: 13 additions & 3 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Base image
FROM python:3.11-slim

# Install dependencies
RUN apt-get update && apt-get install -y \
gcc \
g++ \
Expand All @@ -9,17 +11,25 @@ RUN apt-get update && apt-get install -y \
curl \
&& rm -rf /var/lib/apt/lists/*

# Set working directory
WORKDIR /app

# Set Hugging Face mirror
ENV HF_ENDPOINT=https://hf-mirror.com

COPY requirements.txt .
# Install Python packages
COPY docker/requirements.txt .
RUN pip install --upgrade pip && pip install --no-cache-dir -r requirements.txt

RUN pip install chonkie
# Copy application code
COPY docker/ ./docker/
COPY src/ ./src/

COPY ../. .
# Set Python import path
ENV PYTHONPATH=/app/src

# Expose port
EXPOSE 8000

# Start the docker
CMD ["uvicorn", "memos.api.product_api:app", "--host", "0.0.0.0", "--port", "8000", "--reload"]
12 changes: 7 additions & 5 deletions docker/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ name: memos-dev

services:
memos:
container_name: memos-api-server
container_name: memos-api-docker
build:
context: ..
dockerfile: Dockerfile
dockerfile: docker/Dockerfile
ports:
- "8000:8000"
env_file:
Expand All @@ -15,14 +15,16 @@ services:
- qdrant
environment:
- PYTHONPATH=/app/src
- HF_ENDPOINT=https://hf-mirror.com
volumes:
- .:/app
- ../src:/app/src
- .:/app/docker
networks:
- memos_network

neo4j:
image: neo4j:5.26.4
container_name: neo4j-server
container_name: neo4j-docker
ports:
- "7474:7474" # HTTP
- "7687:7687" # Bolt
Expand All @@ -43,7 +45,7 @@ services:

qdrant:
image: qdrant/qdrant:v1.15.0
container_name: qdrant-server
container_name: qdrant-docker
ports:
- "6333:6333" # REST API
- "6334:6334" # gRPC API
Expand Down
45 changes: 45 additions & 0 deletions docker/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,33 @@ annotated-types==0.7.0 ; python_version >= "3.10" and python_version < "4.0"
anyio==4.9.0 ; python_version >= "3.10" and python_version < "4.0"
attrs==25.3.0 ; python_version >= "3.10" and python_version < "4.0"
authlib==1.6.0 ; python_version >= "3.10" and python_version < "4.0"
beautifulsoup4==4.13.4 ; python_version >= "3.10" and python_version < "4.0"
certifi==2025.7.14 ; python_version >= "3.10" and python_version < "4.0"
cffi==1.17.1 ; python_version >= "3.10" and python_version < "4.0" and platform_python_implementation != "PyPy"
cfgv==3.4.0 ; python_version >= "3.10" and python_version < "4.0"
charset-normalizer==3.4.2 ; python_version >= "3.10" and python_version < "4.0"
chonkie==1.1.1 ; python_version >= "3.10" and python_version < "4.0"
click==8.2.1 ; python_version >= "3.10" and python_version < "4.0"
cobble==0.1.4 ; python_version >= "3.10" and python_version < "4.0"
colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" and (platform_system == "Windows" or sys_platform == "win32")
coloredlogs==15.0.1 ; python_version >= "3.10" and python_version < "4.0"
cryptography==45.0.5 ; python_version >= "3.10" and python_version < "4.0"
cyclopts==3.22.2 ; python_version >= "3.10" and python_version < "4.0"
defusedxml==0.7.1 ; python_version >= "3.10" and python_version < "4.0"
distlib==0.4.0 ; python_version >= "3.10" and python_version < "4.0"
distro==1.9.0 ; python_version >= "3.10" and python_version < "4.0"
dnspython==2.7.0 ; python_version >= "3.10" and python_version < "4.0"
docstring-parser==0.16 ; python_version >= "3.10" and python_version < "4.0"
docutils==0.21.2 ; python_version >= "3.10" and python_version < "4.0"
email-validator==2.2.0 ; python_version >= "3.10" and python_version < "4.0"
et-xmlfile==2.0.0 ; python_version >= "3.10" and python_version < "4.0"
exceptiongroup==1.3.0 ; python_version >= "3.10" and python_version < "4.0"
fastapi-cli==0.0.8 ; python_version >= "3.10" and python_version < "4.0"
fastapi-cloud-cli==0.1.4 ; python_version >= "3.10" and python_version < "4.0"
fastapi==0.115.14 ; python_version >= "3.10" and python_version < "4.0"
fastmcp==2.10.5 ; python_version >= "3.10" and python_version < "4.0"
filelock==3.18.0 ; python_version >= "3.10" and python_version < "4.0"
flatbuffers==25.2.10 ; python_version >= "3.10" and python_version < "4.0"
fsspec==2025.7.0 ; python_version >= "3.10" and python_version < "4.0"
greenlet==3.2.3 ; python_version >= "3.10" and python_version < "3.14" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32")
h11==0.16.0 ; python_version >= "3.10" and python_version < "4.0"
Expand All @@ -29,33 +38,59 @@ httptools==0.6.4 ; python_version >= "3.10" and python_version < "4.0"
httpx-sse==0.4.1 ; python_version >= "3.10" and python_version < "4.0"
httpx==0.28.1 ; python_version >= "3.10" and python_version < "4.0"
huggingface-hub==0.33.4 ; python_version >= "3.10" and python_version < "4.0"
humanfriendly==10.0 ; python_version >= "3.10" and python_version < "4.0"
identify==2.6.12 ; python_version >= "3.10" and python_version < "4.0"
idna==3.10 ; python_version >= "3.10" and python_version < "4.0"
iniconfig==2.1.0 ; python_version >= "3.10" and python_version < "4.0"
itsdangerous==2.2.0 ; python_version >= "3.10" and python_version < "4.0"
jinja2==3.1.6 ; python_version >= "3.10" and python_version < "4.0"
jiter==0.10.0 ; python_version >= "3.10" and python_version < "4.0"
joblib==1.5.1 ; python_version >= "3.10" and python_version < "4.0"
jsonschema-specifications==2025.4.1 ; python_version >= "3.10" and python_version < "4.0"
jsonschema==4.24.1 ; python_version >= "3.10" and python_version < "4.0"
lxml==6.0.0 ; python_version >= "3.10" and python_version < "4.0"
magika==0.6.2 ; python_version >= "3.10" and python_version < "4.0"
mammoth==1.9.1 ; python_version >= "3.10" and python_version < "4.0"
markdown-it-py==3.0.0 ; python_version >= "3.10" and python_version < "4.0"
markdownify==1.1.0 ; python_version >= "3.10" and python_version < "4.0"
markitdown==0.1.2 ; python_version >= "3.10" and python_version < "4.0"
markupsafe==3.0.2 ; python_version >= "3.10" and python_version < "4.0"
mcp==1.12.0 ; python_version >= "3.10" and python_version < "4.0"
mdurl==0.1.2 ; python_version >= "3.10" and python_version < "4.0"
mpmath==1.3.0 ; python_version >= "3.10" and python_version < "4.0"
neo4j==5.28.1 ; python_version >= "3.10" and python_version < "4.0"
nodeenv==1.9.1 ; python_version >= "3.10" and python_version < "4.0"
numpy==2.2.6 ; python_version == "3.10"
numpy==2.3.1 ; python_version >= "3.11" and python_version < "4.0"
ollama==0.4.9 ; python_version >= "3.10" and python_version < "4.0"
onnxruntime==1.22.1 ; python_version >= "3.10" and python_version < "4.0"
openai==1.97.0 ; python_version >= "3.10" and python_version < "4.0"
openapi-pydantic==0.5.1 ; python_version >= "3.10" and python_version < "4.0"
openpyxl==3.1.5 ; python_version >= "3.10" and python_version < "4.0"
orjson==3.11.0 ; python_version >= "3.10" and python_version < "4.0"
packaging==25.0 ; python_version >= "3.10" and python_version < "4.0"
pandas==2.3.1 ; python_version >= "3.10" and python_version < "4.0"
pdfminer-six==20250506 ; python_version >= "3.10" and python_version < "4.0"
pillow==11.3.0 ; python_version >= "3.10" and python_version < "4.0"
platformdirs==4.3.8 ; python_version >= "3.10" and python_version < "4.0"
pluggy==1.6.0 ; python_version >= "3.10" and python_version < "4.0"
pre-commit==4.2.0 ; python_version >= "3.10" and python_version < "4.0"
protobuf==6.31.1 ; python_version >= "3.10" and python_version < "4.0"
pycparser==2.22 ; python_version >= "3.10" and python_version < "4.0" and platform_python_implementation != "PyPy"
pydantic-core==2.33.2 ; python_version >= "3.10" and python_version < "4.0"
pydantic-extra-types==2.10.5 ; python_version >= "3.10" and python_version < "4.0"
pydantic-settings==2.10.1 ; python_version >= "3.10" and python_version < "4.0"
pydantic==2.11.7 ; python_version >= "3.10" and python_version < "4.0"
pygments==2.19.2 ; python_version >= "3.10" and python_version < "4.0"
pyperclip==1.9.0 ; python_version >= "3.10" and python_version < "4.0"
pyreadline3==3.5.4 ; python_version >= "3.10" and python_version < "4.0" and sys_platform == "win32"
pytest-asyncio==0.23.8 ; python_version >= "3.10" and python_version < "4.0"
pytest==8.4.1 ; python_version >= "3.10" and python_version < "4.0"
python-dateutil==2.9.0.post0 ; python_version >= "3.10" and python_version < "4.0"
python-dotenv==1.1.1 ; python_version >= "3.10" and python_version < "4.0"
python-multipart==0.0.20 ; python_version >= "3.10" and python_version < "4.0"
python-pptx==1.0.2 ; python_version >= "3.10" and python_version < "4.0"
pytz==2025.2 ; python_version >= "3.10" and python_version < "4.0"
pywin32==311 ; python_version >= "3.10" and python_version < "4.0" and (platform_system == "Windows" or sys_platform == "win32")
pyyaml==6.0.2 ; python_version >= "3.10" and python_version < "4.0"
referencing==0.36.2 ; python_version >= "3.10" and python_version < "4.0"
Expand All @@ -66,27 +101,37 @@ rich-toolkit==0.14.8 ; python_version >= "3.10" and python_version < "4.0"
rich==14.0.0 ; python_version >= "3.10" and python_version < "4.0"
rignore==0.6.2 ; python_version >= "3.10" and python_version < "4.0"
rpds-py==0.26.0 ; python_version >= "3.10" and python_version < "4.0"
ruff==0.11.13 ; python_version >= "3.10" and python_version < "4.0"
safetensors==0.5.3 ; python_version >= "3.10" and python_version < "4.0"
schedule==1.2.2 ; python_version >= "3.10" and python_version < "4.0"
scikit-learn==1.7.0 ; python_version >= "3.10" and python_version < "4.0"
scipy==1.15.3 ; python_version == "3.10"
scipy==1.16.0 ; python_version >= "3.11" and python_version < "4.0"
sentry-sdk==2.33.0 ; python_version >= "3.10" and python_version < "4.0"
shellingham==1.5.4 ; python_version >= "3.10" and python_version < "4.0"
six==1.17.0 ; python_version >= "3.10" and python_version < "4.0"
sniffio==1.3.1 ; python_version >= "3.10" and python_version < "4.0"
soupsieve==2.7 ; python_version >= "3.10" and python_version < "4.0"
sqlalchemy==2.0.41 ; python_version >= "3.10" and python_version < "4.0"
sse-starlette==2.4.1 ; python_version >= "3.10" and python_version < "4.0"
starlette==0.46.2 ; python_version >= "3.10" and python_version < "4.0"
sympy==1.14.0 ; python_version >= "3.10" and python_version < "4.0"
tenacity==9.1.2 ; python_version >= "3.10" and python_version < "4.0"
threadpoolctl==3.6.0 ; python_version >= "3.10" and python_version < "4.0"
tokenizers==0.21.2 ; python_version >= "3.10" and python_version < "4.0"
tomli==2.2.1 ; python_version == "3.10"
tqdm==4.67.1 ; python_version >= "3.10" and python_version < "4.0"
transformers==4.53.2 ; python_version >= "3.10" and python_version < "4.0"
typer==0.16.0 ; python_version >= "3.10" and python_version < "4.0"
typing-extensions==4.14.1 ; python_version >= "3.10" and python_version < "4.0"
typing-inspection==0.4.1 ; python_version >= "3.10" and python_version < "4.0"
tzdata==2025.2 ; python_version >= "3.10" and python_version < "4.0"
ujson==5.10.0 ; python_version >= "3.10" and python_version < "4.0"
urllib3==2.5.0 ; python_version >= "3.10" and python_version < "4.0"
uvicorn==0.35.0 ; python_version >= "3.10" and python_version < "4.0"
uvloop==0.21.0 ; python_version >= "3.10" and python_version < "4.0" and platform_python_implementation != "PyPy" and sys_platform != "win32" and sys_platform != "cygwin"
virtualenv==20.31.2 ; python_version >= "3.10" and python_version < "4.0"
watchfiles==1.1.0 ; python_version >= "3.10" and python_version < "4.0"
websockets==15.0.1 ; python_version >= "3.10" and python_version < "4.0"
xlrd==2.0.2 ; python_version >= "3.10" and python_version < "4.0"
xlsxwriter==3.2.5 ; python_version >= "3.10" and python_version < "4.0"
25 changes: 24 additions & 1 deletion docs/openapi.json
Original file line number Diff line number Diff line change
Expand Up @@ -884,7 +884,7 @@
"type": "string",
"title": "Session Id",
"description": "Session ID for the MOS. This is used to distinguish between different dialogue",
"default": "a47d75a0-5ee8-473f-86c4-3f09073fd59f"
"default": "842877f4-c3f7-4c22-ad38-5950026870fe"
},
"chat_model": {
"$ref": "#/components/schemas/LLMConfigFactory",
Expand All @@ -905,6 +905,10 @@
],
"description": "Memory scheduler configuration for managing memory operations"
},
"user_manager": {
"$ref": "#/components/schemas/UserManagerConfigFactory",
"description": "User manager configuration for database operations"
},
"max_turns_window": {
"type": "integer",
"title": "Max Turns Window",
Expand Down Expand Up @@ -1370,6 +1374,25 @@
"title": "UserListResponse",
"description": "Response model for user list operations."
},
"UserManagerConfigFactory": {
"properties": {
"backend": {
"type": "string",
"title": "Backend",
"description": "Backend for user manager",
"default": "sqlite"
},
"config": {
"additionalProperties": true,
"type": "object",
"title": "Config",
"description": "Configuration for the user manager backend"
}
},
"type": "object",
"title": "UserManagerConfigFactory",
"description": "Factory for user manager configurations."
},
"UserResponse": {
"properties": {
"code": {
Expand Down
Empty file.
4 changes: 1 addition & 3 deletions evaluation/scripts/locomo/locomo_eval.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@
except Exception as e:
print(f"Warning: Failed to download NLTK resources: {e}")


try:
sentence_model_name = "Qwen/Qwen3-Embedding-0.6B"
sentence_model = SentenceTransformer(sentence_model_name)
Expand Down Expand Up @@ -363,8 +362,7 @@ async def limited_task(task):
parser.add_argument(
"--lib",
type=str,
choices=["zep", "memos", "mem0", "mem0_graph", "langmem", "openai"],
help="Specify the memory framework (zep or memos or mem0 or mem0_graph)",
choices=["zep", "memos", "mem0", "mem0_graph", "openai", "memos-api", "memobase"],
)
parser.add_argument(
"--version",
Expand Down
Loading