hermes - 💡(How to fix) Fix Windows: three bugs from daily use (plugin discovery, gateway exit code, Unicode decode

Official PRs (…)
ON THIS PAGE

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Error Message

Severity: Minor — status check works but with traceback noise Exception in thread Thread-7 (_readerthread): ... Likely caused by Windows console output containing non-UTF-8 bytes (e.g. GBK-encoded Chinese characters in status output). The status check itself passes (✓ Gateway process running), but the traceback spam is noisy.

Root Cause

  1. Plugin discovery skips nested subdirectories — bundled DDGS not found Severity: Medium — bundled functionality silently unavailable The DuckDuckGo search provider (ddgs) lives at plugins/web/ddgs/provider.py, but Hermes never discovers it. Two problems: Missing plugin.yaml — ddgs/ directory ships without one (every plugin dir requires one) Wrong directory depth — get_bundled_plugins_dir() scans plugins/<name>/plugin.yaml, but ddgs is at plugins/web/ddgs/ (nested under the intermediate web/ directory) A user-side workaround (~/.hermes/plugins/ddgs/ with plugin.yaml + self-contained provider) also did not surface in hermes tools after gateway restart. Expected: Plugin discovery recurses into subdirectories, or web/ddgs is moved to plugins/ddgs/.
  2. hermes gateway restart exits with alarming NTSTATUS code Severity: Minor — restart succeeds but exit code is misleading Running hermes gateway restart in background mode exits with code 3221225786 (0xC000013A = STATUS_CONTROL_C_EXIT). The restart itself works — old gateway is terminated and replacement starts — but the exit code makes it look like a crash to monitoring tools or agent logic that checks exit_code. Expected: Exit code 0 after a successful restart.
  3. hermes gateway status produces UnicodeDecodeError on Windows Severity: Minor — status check works but with traceback noise UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 2: invalid continuation byte Exception in thread Thread-7 (_readerthread): ... Likely caused by Windows console output containing non-UTF-8 bytes (e.g. GBK-encoded Chinese characters in status output). The status check itself passes (✓ Gateway process running), but the traceback spam is noisy. Expected: Clean output, no decode errors. Environment (all three bugs) Windows 10 (native, not WSL) Python 3.11 Hermes installed at site-packages Gateway: Windows Scheduled Task + VBS launcher Terminal: local backend, bash via git-bash/MSYS

Fix Action

Fix / Workaround

  1. Plugin discovery skips nested subdirectories — bundled DDGS not found Severity: Medium — bundled functionality silently unavailable The DuckDuckGo search provider (ddgs) lives at plugins/web/ddgs/provider.py, but Hermes never discovers it. Two problems: Missing plugin.yaml — ddgs/ directory ships without one (every plugin dir requires one) Wrong directory depth — get_bundled_plugins_dir() scans plugins/<name>/plugin.yaml, but ddgs is at plugins/web/ddgs/ (nested under the intermediate web/ directory) A user-side workaround (~/.hermes/plugins/ddgs/ with plugin.yaml + self-contained provider) also did not surface in hermes tools after gateway restart. Expected: Plugin discovery recurses into subdirectories, or web/ddgs is moved to plugins/ddgs/.
  2. hermes gateway restart exits with alarming NTSTATUS code Severity: Minor — restart succeeds but exit code is misleading Running hermes gateway restart in background mode exits with code 3221225786 (0xC000013A = STATUS_CONTROL_C_EXIT). The restart itself works — old gateway is terminated and replacement starts — but the exit code makes it look like a crash to monitoring tools or agent logic that checks exit_code. Expected: Exit code 0 after a successful restart.
  3. hermes gateway status produces UnicodeDecodeError on Windows Severity: Minor — status check works but with traceback noise UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 2: invalid continuation byte Exception in thread Thread-7 (_readerthread): ... Likely caused by Windows console output containing non-UTF-8 bytes (e.g. GBK-encoded Chinese characters in status output). The status check itself passes (✓ Gateway process running), but the traceback spam is noisy. Expected: Clean output, no decode errors. Environment (all three bugs) Windows 10 (native, not WSL) Python 3.11 Hermes installed at site-packages Gateway: Windows Scheduled Task + VBS launcher Terminal: local backend, bash via git-bash/MSYS
RAW_BUFFERClick to expand / collapse
  1. Plugin discovery skips nested subdirectories — bundled DDGS not found Severity: Medium — bundled functionality silently unavailable The DuckDuckGo search provider (ddgs) lives at plugins/web/ddgs/provider.py, but Hermes never discovers it. Two problems: Missing plugin.yaml — ddgs/ directory ships without one (every plugin dir requires one) Wrong directory depth — get_bundled_plugins_dir() scans plugins/<name>/plugin.yaml, but ddgs is at plugins/web/ddgs/ (nested under the intermediate web/ directory) A user-side workaround (~/.hermes/plugins/ddgs/ with plugin.yaml + self-contained provider) also did not surface in hermes tools after gateway restart. Expected: Plugin discovery recurses into subdirectories, or web/ddgs is moved to plugins/ddgs/.
  2. hermes gateway restart exits with alarming NTSTATUS code Severity: Minor — restart succeeds but exit code is misleading Running hermes gateway restart in background mode exits with code 3221225786 (0xC000013A = STATUS_CONTROL_C_EXIT). The restart itself works — old gateway is terminated and replacement starts — but the exit code makes it look like a crash to monitoring tools or agent logic that checks exit_code. Expected: Exit code 0 after a successful restart.
  3. hermes gateway status produces UnicodeDecodeError on Windows Severity: Minor — status check works but with traceback noise UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 2: invalid continuation byte Exception in thread Thread-7 (_readerthread): ... Likely caused by Windows console output containing non-UTF-8 bytes (e.g. GBK-encoded Chinese characters in status output). The status check itself passes (✓ Gateway process running), but the traceback spam is noisy. Expected: Clean output, no decode errors. Environment (all three bugs) Windows 10 (native, not WSL) Python 3.11 Hermes installed at site-packages Gateway: Windows Scheduled Task + VBS launcher Terminal: local backend, bash via git-bash/MSYS

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING