hermes - 💡(How to fix) Fix [Bug]: Discord gateway adapter not registered/discovered in PyPI v0.15.1 [2 pull requests]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

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

Final entry point check:

echo "=== Hermes package entry_points ===" cat /home/ubuntu-user/.local/share/pipx/venvs/hermes-agent/lib/python3.12/site-packages/hermes_agent-0.15.1.dist-info/entry_points.txt

echo echo "=== Plugin entry points visible to Python ===" /home/ubuntu-user/.local/share/pipx/venvs/hermes-agent/bin/python - <<'PY' import importlib.metadata as md

eps = md.entry_points() group = "hermes_agent.plugins"

try: selected = eps.select(group=group) except Exception: selected = eps.get(group, [])

for ep in selected: print(f"{ep.name} = {ep.value}") PY

Output:

=== Hermes package entry_points === [console_scripts] hermes = hermes_cli.main:main hermes-acp = acp_adapter.entry:main hermes-agent = run_agent:main === Plugin entry points visible to Python ===

The Discord adapter module is present and exposes a plugin registration function:

import plugins.platforms.discord.adapter as a

print(a.file) print(hasattr(a, "register"))

Output: /home/ubuntu-user/.local/share/pipx/venvs/hermes-agent/lib/python3.12/site-packages/plugins/platforms/discord/adapter.py True

So the installed PyPI package contains the Discord adapter and its register(ctx) entry function, but the package metadata exposes no hermes_agent.plugins entry points for discovery.

Root Cause

Root Cause Analysis (optional)

Fix Action

Fixed

Code Example

set -a
source ~/.hermes/.env
set +a

---

WARNING gateway.run: No adapter available for discord
WARNING gateway.run: No adapter could be created for any of the 1 configured platform(s). Check that required dependencies are installed and credentials are set. Gateway will continue for cron job execution.

---

┌─────────────────────────────────────────────────────────┐
│           ⚕ Hermes Gateway Starting...├─────────────────────────────────────────────────────────┤
Messaging platforms + cron scheduler                    │
Press Ctrl+C to stop                                   │
└─────────────────────────────────────────────────────────┘

WARNING gateway.run: No adapter available for discord
WARNING gateway.run: No adapter could be created for any of the 1 configured platform(s). Check that required dependencies are installed and credentials are set. Gateway will continue for cron job execution.

---

Report       https://paste.rs/8hzvI
agent.log    https://paste.rs/axlKa
gateway.log  https://paste.rs/A5Zgl

---

Final entry point check:

echo "=== Hermes package entry_points ==="
cat /home/ubuntu-user/.local/share/pipx/venvs/hermes-agent/lib/python3.12/site-packages/hermes_agent-0.15.1.dist-info/entry_points.txt

echo
echo "=== Plugin entry points visible to Python ==="
/home/ubuntu-user/.local/share/pipx/venvs/hermes-agent/bin/python - <<'PY'
import importlib.metadata as md

eps = md.entry_points()
group = "hermes_agent.plugins"

try:
    selected = eps.select(group=group)
except Exception:
    selected = eps.get(group, [])

for ep in selected:
    print(f"{ep.name} = {ep.value}")
PY


Output:


=== Hermes package entry_points === 
[console_scripts] 
hermes = hermes_cli.main:main 
hermes-acp = acp_adapter.entry:main 
hermes-agent = run_agent:main 
=== Plugin entry points visible to Python ===


The Discord adapter module is present and exposes a plugin registration function:

import plugins.platforms.discord.adapter as a 

print(a.__file__) 
print(hasattr(a, "register"))


Output:
/home/ubuntu-user/.local/share/pipx/venvs/hermes-agent/lib/python3.12/site-packages/plugins/platforms/discord/adapter.py True

So the installed PyPI package contains the Discord adapter and its register(ctx) entry function, but the package metadata exposes no hermes_agent.plugins entry points for discovery.

---

def register(ctx) -> None: 
    ctx.register_platform( name="discord", label="Discord", ... )
        name="discord",
        label="Discord",
        ...
RAW_BUFFERClick to expand / collapse

Bug Description

After updating hermes-agent from PyPI to v0.15.1, CLI chat/model calls work again, but the Discord gateway no longer works.

Before the update, Discord gateway was working normally. After the update:

  • Discord bot appears offline
  • Hermes does not reply in Discord
  • hermes setup gateway does not list Discord as an available platform
  • hermes gateway run logs No adapter available for discord

This looks like a PyPI packaging/plugin registration issue. The Discord adapter file exists in the installed package and imports correctly, but no hermes_agent.plugins entry points are present, so the gateway does not discover/register the Discord adapter.

Steps to Reproduce

  1. Install/update Hermes from PyPI using pipx.
  2. Confirm version is hermes-agent 0.15.1.
  3. Have an existing Discord gateway configuration with DISCORD_BOT_TOKEN configured in ~/.hermes/.env.
  4. Stop the gateway service
  5. Load the Hermes environment manually:
set -a
source ~/.hermes/.env
set +a
  1. Confirm the Discord token exists in the shell.
  2. Run the gateway manually: hermes gateway run
  3. Observe:
WARNING gateway.run: No adapter available for discord
WARNING gateway.run: No adapter could be created for any of the 1 configured platform(s). Check that required dependencies are installed and credentials are set. Gateway will continue for cron job execution.
  1. Also run the below and see that Discord is not listed as an available messaging platform: hermes setup gateway

Expected Behavior

Since:

  • DISCORD_BOT_TOKEN is configured
  • Discord dependencies are installed
  • plugins.platforms.discord.adapter imports successfully
  • DISCORD_AVAILABLE=True
  • register(ctx) exists and calls ctx.register_platform(name="discord", ...)

Hermes should discover/register the Discord adapter and connect the Discord gateway.

hermes setup gateway should list Discord as an available platform.

hermes gateway run should create the Discord adapter and bring the bot online.

Actual Behavior

Running the gateway manually with the environment loaded.

Output:


┌─────────────────────────────────────────────────────────┐
│           ⚕ Hermes Gateway Starting...                 │
├─────────────────────────────────────────────────────────┤
│  Messaging platforms + cron scheduler                    │
│  Press Ctrl+C to stop                                   │
└─────────────────────────────────────────────────────────┘

WARNING gateway.run: No adapter available for discord
WARNING gateway.run: No adapter could be created for any of the 1 configured platform(s). Check that required dependencies are installed and credentials are set. Gateway will continue for cron job execution.

The same warning appears in the systemd user service logs.

hermes setup gateway also does not list Discord as an available platform.

Affected Component

Gateway (Telegram/Discord/Slack/WhatsApp)

Messaging Platform (if gateway-related)

Discord

Debug Report

Report       https://paste.rs/8hzvI
agent.log    https://paste.rs/axlKa
gateway.log  https://paste.rs/A5Zgl

Operating System

Ubuntu 24.04 LTS

Python Version

3.12.3

Hermes Version

0.15.1

Additional Logs / Traceback (optional)

Final entry point check:

echo "=== Hermes package entry_points ==="
cat /home/ubuntu-user/.local/share/pipx/venvs/hermes-agent/lib/python3.12/site-packages/hermes_agent-0.15.1.dist-info/entry_points.txt

echo
echo "=== Plugin entry points visible to Python ==="
/home/ubuntu-user/.local/share/pipx/venvs/hermes-agent/bin/python - <<'PY'
import importlib.metadata as md

eps = md.entry_points()
group = "hermes_agent.plugins"

try:
    selected = eps.select(group=group)
except Exception:
    selected = eps.get(group, [])

for ep in selected:
    print(f"{ep.name} = {ep.value}")
PY


Output:


=== Hermes package entry_points === 
[console_scripts] 
hermes = hermes_cli.main:main 
hermes-acp = acp_adapter.entry:main 
hermes-agent = run_agent:main 
=== Plugin entry points visible to Python ===


The Discord adapter module is present and exposes a plugin registration function:

import plugins.platforms.discord.adapter as a 

print(a.__file__) 
print(hasattr(a, "register"))


Output:
/home/ubuntu-user/.local/share/pipx/venvs/hermes-agent/lib/python3.12/site-packages/plugins/platforms/discord/adapter.py True

So the installed PyPI package contains the Discord adapter and its register(ctx) entry function, but the package metadata exposes no hermes_agent.plugins entry points for discovery.

Root Cause Analysis (optional)

The PyPI v0.15.1 package appears to include the Discord adapter files, but the package metadata does not include any hermes_agent.plugins entry points.

The Discord adapter exists and includes:

def register(ctx) -> None: 
    ctx.register_platform( name="discord", label="Discord", ... )
        name="discord",
        label="Discord",
        ...

And Python sees no plugin entry points for hermes_agent.plugins.

This likely prevents the plugin loader from discovering/registering plugins.platforms.discord.adapter.

Suspected regression: PyPI packaging/plugin entry points missing in v0.15.1.

Proposed Fix (optional)

Ensure the PyPI package metadata includes the required hermes_agent.plugins entry points for bundled plugins, including the Discord platform adapter.

For Discord specifically, the package likely needs an entry point similar to:

discord = plugins.platforms.discord.adapter

under the hermes_agent.plugins group, assuming that is the intended plugin discovery mechanism.

Also verify that other bundled platform plugins are included in the same entry point group if they are expected to appear in hermes setup gateway.

Are you willing to submit a PR for this?

  • I'd like to fix this myself and submit a PR

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

hermes - 💡(How to fix) Fix [Bug]: Discord gateway adapter not registered/discovered in PyPI v0.15.1 [2 pull requests]