HStack

Integrations

Integrations

Hermes already has a browser, a terminal, delegation, and a bundled GitHub skill. HStack does not replace those. Optional add-ons sit beside them and remove cleanly.

Flag Configured name Removes cleanly
browser mcp_servers.hstack_playwright, bin/hstack-visdiff yes
github bin/hstack-pr yes
docs mcp_servers.hstack_context7 yes
search mcp_servers.hstack_deepwiki yes
perf bin/hstack-bench yes
test bin/hstack-test yes
security bin/hstack-scan yes
trail bin/hstack-decisions yes

browser points at npx -y @playwright/mcp@0.0.83. Hermes browser_exec stays the default browser. The add-on adds accessibility snapshots and a visual diff helper.

github wraps the GitHub CLI. Hermes docs prefer gh over the GitHub MCP server. hstack-pr takes one snapshot.

docs and search are URL-only. Context7 is https://mcp.context7.com/mcp. DeepWiki is https://mcp.deepwiki.com/mcp. No token is written. Local code search stays Hermes search_files.

security runs gitleaks or osv-scanner only when one of them is already on PATH. The installer does not fetch either binary. It also does not download Playwright.

Commands, dry-run, and the Windows -File form are on the add-ons page.

Hooks

Since 0.2.0, --with hermes-hooks registers shell hooks in ~/.hermes/config.yaml. Nothing in the skills imports them, so a Hermes update that moves a Python API does not break the router. The guard blocks a short denylist of destructive terminal commands. The session hook appends a stamp when the session actually ends (on_session_finalize, not on_session_end, which fires every turn). The suggest hook can add context on the first turn only, and only an HStack playbook name. Hermes still asks before a new hook command runs, unless you pass --accept-hooks yourself.

Outside stacks

HStack does not copy gstack, pstack, tstack, or gbrain into this repo, and it does not put them on skills.external_dirs. The registry is skills/hstack/hstack/references/stacks.md. The router reads it only after an HStack playbook. If one installed stack fits better, the reply is one line with the name and why, then a question. Nothing from that stack loads until the answer is yes. If it is not installed, the reply shows the install command and waits. Yes runs hstack_stack.py install --yes, which checks the pinned sha256 before extract. The files land in $HERMES_HOME/hstack/external/<id>/<commit>/. No is remembered for the session.

Detection does not execute the other project. gstack counts when a skill file is under the Hermes skills/gstack directory, or when gstack-state-root.sh is present under Claude or Codex skills. ~/.gstack is state, not an install. pstack counts when skills/poteto-mode/SKILL.md is under ~/.cursor/plugins or ~/.claude/plugins. tstack counts when one skills directory holds both leaving-pr-comments/SKILL.md and sol-loop/SKILL.md. gbrain counts when ~/.gbrain/config.json exists, when GBRAIN_HOME points at that config, or when mcp_servers.gbrain is already in the Hermes config. A gbrain binary on PATH is not enough.

Upstream inventories are GStack, TStack, PStack, and GBrain. Hermes itself is documented at hermes-agent.nousresearch.com.