Skip to content

gateway: streaming config silently ignored when set via "hermes config set gateway.streaming.*" — docs/code mismatch #25676

@spektro33

Description

@spektro33

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

  1. hermes config set gateway.streaming.enabled true
  2. hermes config set gateway.streaming.transport draft
  3. sudo hermes gateway restart
  4. DM Telegram bot a long question
  5. → No progressive text. Logs show no draft activity.
  6. 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 ---

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Medium — degraded but workaround existsarea/configConfig system, migrations, profilescomp/gatewayGateway runner, session dispatch, deliverytype/bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions