mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-06-09 08:21:50 +00:00
When Hermes runs in TUI mode, the gateway child process communicates with the Node.js parent over a JSON-RPC protocol on stdin. Subprocess calls that inherit this stdin fd can trigger a race condition where the child's stdin read returns EOF, causing the gateway to exit cleanly (exit code 0) mid-tool- execution. This is the same root cause as issue #14036 (byterover plugin) and PR #39257 (SSH environment backend). This commit applies the fix — stdin=subprocess.DEVNULL — to all 85 subprocess.run() and subprocess.Popen() calls that execute inside the TUI gateway child process. Scope: TUI-context code only (agent/, tools/, plugins/, tui_gateway/server.py). CLI code (cli.py, hermes_cli/), tests, scripts, and gateway process management are excluded — they don't run inside the TUI child and inherit the terminal's stdin, not the JSON-RPC pipe. 85 call sites across 28 files. All files pass syntax check. |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| plugin.yaml | ||
| README.md | ||
ByteRover Memory Provider
Persistent memory via the brv CLI — hierarchical knowledge tree with tiered retrieval (fuzzy text → LLM-driven search).
Requirements
Install the ByteRover CLI:
curl -fsSL https://byterover.dev/install.sh | sh
# or
npm install -g byterover-cli
Setup
hermes memory setup # select "byterover"
Or manually:
hermes config set memory.provider byterover
# Optional cloud sync:
echo "BRV_API_KEY=your-key" >> ~/.hermes/.env
Config
| Env Var | Required | Description |
|---|---|---|
BRV_API_KEY |
No | Cloud sync key (optional, local-first by default) |
Working directory: $HERMES_HOME/byterover/ (profile-scoped).
Tools
| Tool | Description |
|---|---|
brv_query |
Search the knowledge tree |
brv_curate |
Store facts, decisions, patterns |
brv_status |
CLI version, tree stats, sync state |