# hal0 — Hermes-Agent runtime requirements.
#
# The hal0 bootstrap creates a managed venv at /var/lib/hal0/venvs/hermes/
# and installs from this file. `hal0 agent upgrade hermes` installs only a
# deliberately reviewed commit, runs `hermes config migrate` to reconcile the
# config schema, and reprovisions.
#
# Compatibility posture: pin the reviewed official v2026.7.20 (0.19.0) release
# commit so provider, memory, and voice plugin contracts cannot drift underneath
# the bundled hal0 adapters. Lift this pin only through the compatibility review.
#
# 0.19.0 is the ceiling for this install model. From v2026.7.30 (0.19.1) upstream
# setup.py refuses to build a wheel or sdist outside its Nix build (d84e11af,
# NousResearch/hermes-agent#68217), so a `git+` requirement no longer installs;
# from v0.21.6 every core dependency is also gated to Python >= 3.14 while this
# venv is built on 3.12. Moving past 0.19.0 needs a new install model first.
#
# The `web` extra pulls fastapi + uvicorn[standard], which the hal0 agent
# unit needs: it runs `hermes serve` in web/dashboard mode (HERMES_WEB_DIST
# + HERMES_DASHBOARD_TUI in the unit drop-in). Without it the unit
# crash-loops on `No module named 'fastapi'`.
#
# The `mcp` extra pulls the MCP client (`mcp==...`), which upstream gates
# behind this extra. Without it the venv has NO `mcp` package: both MCP
# servers hal0 provisions into config.yaml (hal0-admin, hal0-memory) are
# dead while `hermes mcp list` still prints ✓ (#2021,
# `hermes-venv-missing-mcp-extra`). The provisioning `mcp_wire` phase now
# hard-fails when the venv client cannot import/connect — do not drop this
# extra.
hermes-agent[web,mcp] @ git+https://github.com/NousResearch/hermes-agent.git@3ef6bbd201263d354fd83ec55b3c306ded2eb72a
