[build-system] requires = ["setuptools>=68", "wheel"] build-backend = "setuptools.build_meta" [project] name = "memory-os-ai" version = "3.2.0" description = "Adaptive memory system for AI agents — universal MCP server for Claude, Codex, VS Code, ChatGPT" readme = "README.md" license = {text = "LGPL-3.0-or-later"} requires-python = ">=3.10" authors = [ {name = "Kocupyr Romain", email = "romainsantoli@gmail.com"}, ] keywords = ["mcp", "memory", "faiss", "semantic-search", "vscode", "copilot", "claude", "codex", "chatgpt", "ai-agents"] classifiers = [ "Development Status :: 4 - Beta", "Programming Language :: Python :: 3", "License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)", "Topic :: Scientific/Engineering :: Artificial Intelligence", ] dependencies = [ "mcp>=1.0.0", "pydantic>=2.0", "numpy>=1.26", "faiss-cpu>=1.7", "sentence-transformers>=3.0", "transformers>=4.40", "pymupdf>=1.24", "pytesseract>=0.3", "python-pptx>=1.0", "python-docx>=1.1", "Pillow>=10.0", "huggingface_hub>=0.25", "requests>=2.32", ] [project.optional-dependencies] audio = [ "openai-whisper>=20231117", "torch>=2.4", "torchaudio>=2.4", ] gpu = [ "faiss-gpu>=1.7", "torch>=2.4", ] doc-legacy = [ "textract>=1.6", ] dev = [ "pytest>=8.0", "pytest-cov>=5.0", "pytest-asyncio>=0.23", ] cloud-gdrive = [ "google-api-python-client>=2.100", "google-auth>=2.23", "google-auth-oauthlib>=1.1", ] cloud-dropbox = [ "dropbox>=12.0", ] cloud-s3 = [ "boto3>=1.34", ] cloud-azure = [ "azure-storage-blob>=12.19", ] cloud-box = [ "boxsdk>=3.9", ] cloud-b2 = [ "b2sdk>=2.1", ] cloud-all = [ "memory-os-ai[cloud-gdrive,cloud-dropbox,cloud-s3,cloud-azure,cloud-box,cloud-b2]", ] [project.scripts] memory-os-ai = "memory_os_ai.server:run" [tool.setuptools.packages.find] where = ["src"] [tool.pytest.ini_options] testpaths = ["tests"] pythonpath = ["src"] asyncio_mode = "auto" filterwarnings = [ # faiss-cpu SWIG bindings emit harmless DeprecationWarnings "ignore:builtin type Swig:DeprecationWarning", "ignore:builtin type swigvarlink:DeprecationWarning", ] [tool.coverage.run] source = ["src/memory_os_ai"] branch = true [tool.coverage.report] fail_under = 80 [tool.ruff.lint] select = ["E", "F"] ignore = ["E501"] # line-too-long — handled by formatter not linter [tool.ruff.lint.per-file-ignores] "tests/**/*.py" = ["E402"] # imports after setup are common in tests