Files
javis/javis-slave/pyproject.toml
T
2026-10-04 15:31:44 +02:00

56 lines
1.7 KiB
TOML

[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",
# >=0.29: serve() captures SIGINT/SIGTERM and re-raises them after shutdown,
# so the headless loop's own signal handlers still fire (older versions
# replaced them and systemd stops hung until SIGKILL).
"uvicorn>=0.29",
"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"