Bug Description
When streaming is configured using:
hermes config set gateway.streaming.enabled true
hermes config set gateway.streaming.transport draft
the gateway completely ignores the settings and falls back to streaming.enabled=False (default), even after restart. No streaming activity appears in logs.
Root cause: The config loader (gateway/config.py:737) reads only a top-level streaming: key:
streaming_cfg = yaml_cfg.get("streaming") # only top-level
if isinstance(streaming_cfg, dict):
gw_data["streaming"] = streaming_cfg
But hermes config set gateway.streaming.* writes the block nested under gateway: — a location never inspected. Silent no-op.
Also, documentation is contradictory:
configuration.md (canonical) shows top-level streaming: ✓
telegram.md (platform guide, updated May 10, 2026) shows nested gateway.streaming: ✗
Users following the newer telegram.md hit this bug.
Reproduction
hermes config set gateway.streaming.enabled true
hermes config set gateway.streaming.transport draft
sudo hermes gateway restart
- DM Telegram bot a long question
- → No progressive text. Logs show no draft activity.
- Effective runtime:
StreamingConfig(enabled=False)
Expected
Config should be honored, or at least log a clear error/warning.
Actual
Nested gateway.streaming silently dropped.
Affected
Gateway — Telegram, Discord, Slack (all streaming platforms).
Suggested Fix (A — robust, one-line)
In gateway/config.py line 737:
# before
streaming_cfg = yaml_cfg.get("streaming")
# after
streaming_cfg = yaml_cfg.get("streaming") or yaml_cfg.get("gateway", {}).get("streaming")
Accepts both top-level (correct) and nested (currently broken but deployed) formats. Backward-compatible, fixes user configs in the wild.
Notes
Hermes Dump
--- hermes dump ---
[optional: user to include]
--- end dump ---
Bug Description
When streaming is configured using:
the gateway completely ignores the settings and falls back to
streaming.enabled=False(default), even after restart. No streaming activity appears in logs.Root cause: The config loader (
gateway/config.py:737) reads only a top-levelstreaming:key:But
hermes config set gateway.streaming.*writes the block nested undergateway:— a location never inspected. Silent no-op.Also, documentation is contradictory:
configuration.md(canonical) shows top-levelstreaming:✓telegram.md(platform guide, updated May 10, 2026) shows nestedgateway.streaming:✗Users following the newer telegram.md hit this bug.
Reproduction
hermes config set gateway.streaming.enabled truehermes config set gateway.streaming.transport draftsudo hermes gateway restartStreamingConfig(enabled=False)Expected
Config should be honored, or at least log a clear error/warning.
Actual
Nested
gateway.streamingsilently dropped.Affected
Gateway — Telegram, Discord, Slack (all streaming platforms).
Suggested Fix (A — robust, one-line)
In
gateway/config.pyline 737:Accepts both top-level (correct) and nested (currently broken but deployed) formats. Backward-compatible, fixes user configs in the wild.
Notes
platforms.api_servernested key drop (Issues [Bug]: platforms.webhook.port in config.yaml does not work #10206, platforms.api_server config values (port, host, key) silently ignored when not nested under 'extra' #20501).Hermes Dump