Contributions should preserve Eyra’s local-first, voice-first contract. Keep changes small enough to review, but complete enough to verify.

Local setup

uv sync
uv run pytest -q
uv run ruff check src tests

Before opening a change

Check:
  • The change keeps default behavior local.
  • Optional network, OS, MCP, agent, Web, and Realtime paths stay opt-in.
  • User-facing errors are human-readable and actionable.
  • Filesystem work respects sandbox roots.
  • Risky actions use approvals.
  • Long-running work has task lifecycle and cancellation.
  • Docs and tests match behavior.

Pull request scope

Prefer one focused change:
  • Runtime behavior.
  • Tool or capability.
  • Web UI path.
  • Voice path.
  • Docs-only correction.
  • Tests for a specific contract.
Avoid unrelated formatting churn.

Verification

Run the relevant gate:
uv run pytest -q
uv run ruff check src tests
uv lock --check
bash -n setup.sh install.sh
For docs changes:
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