[build-system] requires = ["setuptools>=68", "wheel"] build-backend = "setuptools.build_meta" [project] name = "javis-slave" version = "0.1.0" description = "Touch-optimized satellite companion for Javis — local wake word, remote brain." readme = "README.md" requires-python = ">=3.10,<3.14" license = { text = "MIT" } dependencies = [ # Master API client "httpx>=0.27", # HTTP server for MCP control (plain uvicorn: no uvloop/httptools builds on small ARM boards) "fastapi>=0.104", "uvicorn>=0.24", "pydantic>=2.0", # Windows system control (volume, brightness, power) — Linux uses amixer/pactl, # /sys/class/backlight and systemctl, no extra packages. "pycaw>=20220226; sys_platform == 'win32'", "screen-brightness-control>=0.20; sys_platform == 'win32'", # Audio stack (vendored copy of javis.audio_io — standalone, no repo dependency) "numpy>=1.24,<2.0", "sounddevice>=0.4.6", "soundfile>=0.12", "scipy>=1.11", "openwakeword>=0.6.0", "onnxruntime>=1.17", ] [project.optional-dependencies] # Touch UI (Surface / Pi with display). Not needed for `--headless`. gui = [ "PySide6>=6.6", "qasync>=0.27", ] # Neural end-pointing. Pulls in PyTorch (~200 MB on aarch64); without it the # engine falls back to an RMS energy gate automatically. vad = [ "silero-vad>=5.1", ] [project.scripts] javis-slave = "javis_slave.__main__:main" [tool.setuptools.packages.find] where = ["src"] [tool.ruff] line-length = 110 target-version = "py310"