mirror of
https://github.com/exo-explore/exo.git
synced 2025-12-23 22:27:50 -05:00
The Jaccl distributed backend requires MLX 0.30.1+, which includes the RDMA over Thunderbolt support. The previous minimum version (0.29.3) would fail at runtime with "The only valid values for backend are 'any', 'mpi' and 'ring' but 'jaccl' was provided." Bump MLX dependency to >=0.30.1 and rename ibv_coordinators to jaccl_coordinators to match MLX's naming conventions. This includes the environment variable change from MLX_IBV_COORDINATOR to MLX_JACCL_COORDINATOR.
136 lines
2.9 KiB
TOML
136 lines
2.9 KiB
TOML
[project]
|
|
name = "exo"
|
|
version = "0.3.0"
|
|
description = "Exo"
|
|
readme = "README.md"
|
|
requires-python = ">=3.13"
|
|
dependencies = [
|
|
"aiofiles>=24.1.0",
|
|
"aiohttp>=3.12.14",
|
|
"types-aiofiles>=24.1.0.20250708",
|
|
"typeguard>=4.4.4",
|
|
"pydantic>=2.11.7",
|
|
"base58>=2.1.1",
|
|
"cryptography>=45.0.5",
|
|
"fastapi>=0.116.1",
|
|
"filelock>=3.18.0",
|
|
"aiosqlite>=0.21.0",
|
|
"networkx>=3.5",
|
|
"protobuf>=6.32.0",
|
|
"rich>=14.1.0",
|
|
"rustworkx>=0.17.1",
|
|
"sqlmodel>=0.0.24",
|
|
"sqlalchemy[asyncio]>=2.0.43",
|
|
"greenlet>=3.2.4",
|
|
"huggingface-hub>=0.33.4",
|
|
"psutil>=7.0.0",
|
|
"loguru>=0.7.3",
|
|
"textual>=5.3.0",
|
|
"exo_pyo3_bindings", # rust bindings
|
|
"anyio==4.11.0",
|
|
"bidict>=0.23.1",
|
|
"mlx>=0.30.1",
|
|
"mlx-lm>=0.28.3",
|
|
"tiktoken>=0.12.0", # required for kimi k2 tokenizer
|
|
"hypercorn>=0.18.0",
|
|
]
|
|
|
|
[project.scripts]
|
|
exo-master = "exo.master.main:main"
|
|
exo-worker = "exo.worker.main:main"
|
|
exo = "exo.main:main"
|
|
|
|
# dependencies only required for development
|
|
[dependency-groups]
|
|
dev = [
|
|
"pyinstaller>=6.17.0",
|
|
"pytest>=8.4.0",
|
|
"pytest-asyncio>=1.0.0",
|
|
"pytest-env",
|
|
"ruff>=0.11.13",
|
|
]
|
|
|
|
# mlx[cuda] requires a newer version of mlx. the ideal on linux is: default to mlx[cpu] unless[cuda] specified.
|
|
[project.optional-dependencies]
|
|
# cuda = [
|
|
# "mlx[cuda]==0.26.3",
|
|
# ]
|
|
|
|
###
|
|
# workspace configuration
|
|
###
|
|
|
|
[tool.uv.workspace]
|
|
members = [
|
|
"rust/exo_pyo3_bindings",
|
|
]
|
|
|
|
[tool.uv.sources]
|
|
exo_pyo3_bindings = { workspace = true }
|
|
# Uncomment to use local mlx/mlx-lm development versions:
|
|
# mlx = { path = "/Users/Shared/mlx", editable=true }
|
|
# mlx-lm = { path = "/Users/Shared/mlx-lm", editable=true }
|
|
|
|
[build-system]
|
|
requires = ["uv_build>=0.8.9,<0.9.0"]
|
|
build-backend = "uv_build"
|
|
|
|
###
|
|
# type-checker configuration
|
|
###
|
|
|
|
[tool.basedpyright]
|
|
include = [".venv/lib/mlx", ".venv/lib/mlx_lm", "src"]
|
|
typeCheckingMode = "strict"
|
|
failOnWarnings = true
|
|
|
|
reportAny = "error"
|
|
reportUnknownVariableType = "error"
|
|
reportUnknownParameterType = "error"
|
|
reportMissingParameterType = "error"
|
|
reportMissingTypeStubs = "error"
|
|
reportInvalidCast = "error"
|
|
reportUnnecessaryCast = "error"
|
|
reportUnnecessaryTypeIgnoreComment = "error"
|
|
|
|
pythonVersion = "3.13"
|
|
pythonPlatform = "Darwin"
|
|
|
|
exclude = ["**/.venv", "**/venv", "**/__pycache__", "**/exo_scripts", "**/.direnv", "**/rust", "**/.github"]
|
|
stubPath = ".mlx_typings"
|
|
|
|
[[tool.basedpyright.executionEnvironments]]
|
|
root = "src"
|
|
|
|
###
|
|
# uv configuration
|
|
###
|
|
|
|
# supported platforms for this project
|
|
[tool.uv]
|
|
environments = [
|
|
"sys_platform == 'darwin'",
|
|
"sys_platform == 'linux'",
|
|
]
|
|
|
|
###
|
|
# ruff configuration
|
|
###
|
|
|
|
[tool.ruff]
|
|
extend-exclude = ["shared/protobufs/**", "*mlx_typings/**", "rust/exo_pyo3_bindings/**"]
|
|
|
|
[tool.ruff.lint]
|
|
extend-select = ["I", "N", "B", "A", "PIE", "SIM"]
|
|
|
|
[tool.pytest.ini_options]
|
|
pythonpath = "."
|
|
asyncio_mode = "auto"
|
|
markers = [
|
|
"slow: marks tests as slow (deselected by default)"
|
|
]
|
|
env = [
|
|
"EXO_TESTS=1"
|
|
]
|
|
addopts = "-m 'not slow'"
|