Development uses uv, Python 3.11+, and the same local-first runtime as the app.

Install

uv sync
Run from source:
uv run python src/main.py
Run without a backend:
USE_MOCK_CLIENT=true LIVE_LISTENING_ENABLED=false LIVE_SPEECH_ENABLED=false uv run python src/main.py

Project checks

uv run pytest -q
uv run ruff check src tests
uv lock --check
bash -n setup.sh install.sh
Build package artifacts:
uv build --sdist --wheel

Mintlify docs checks

Mintlify requires a supported LTS Node.js runtime. The pinned release check uses Node 24 because mint@4.2.565 rejects Node 25+.
cd doc
MINTLIFY_TELEMETRY_DISABLED=1 npx -y mint@4.2.565 validate --disable-openapi
MINTLIFY_TELEMETRY_DISABLED=1 npx -y mint@4.2.565 broken-links
Preview:
cd doc
mint dev --no-open --disable-openapi

Test layout

Tests are under tests/. They cover:
  • Runtime preflight and commands.
  • Voice input and diagnostics.
  • Tools and filesystem safety.
  • Routing policy and model registry.
  • Web server helpers and endpoints.
  • Background tasks, triggers, jobs, context, vision, and certification.
Async tests use asyncio.run() directly.