wishee-hermes-connector
Connect a Hermes agent to the Wishee bridge
(openclaw-bridge) over a reverse WebSocket — the Hermes counterpart of
@wishee-ai/openclaw-connector. The bridge drives the agent (chat.send /
chat.history / sessions.reset) and receives its replies (task-result).
Requires no changes to the bridge or to hermes-agent core.
Requires Hermes >= 0.14.0. The connector checks this in register() and refuses
to load below it — Hermes surfaces the error in the gateway log and in
hermes plugins list. See version_gate.py for how that floor was derived
(the binding constraint is PlatformEntry.is_connected, 2026-04-20).
How it works
The connector is a Hermes platform adapter (runs inside the hermes gateway
process). It dials the bridge, does the hello/welcome handshake, then:
chat.send→ mints arunId, answers immediately, runs the agent turn, and emits atask-resultevent when the turn finishes (the bridge's device-push path).chat.history/sessions.reset→ reads / clears the Hermes session store.
From the bridge's perspective a Hermes agent is indistinguishable from an
OpenClaw instance: same /api/bind, same hello, same RPCs, same event frames.
Activity (usage duration)
The connector installs a Hermes hook at ~/.hermes/hooks/wishee-activity/ that
listens for agent:start / agent:end — the two events that bracket one
_run_agent call, i.e. the real boundary of a turn, for every platform. So
turns the user starts locally count too, not just the ones the bridge dispatches.
The hook handler only appends one self-contained interval per finished run to a
local journal (~/.hermes/wishee-connector/wishee-activity-YYYYMMDD.jsonl); it
never imports the connector, touches the network, or starts a timer. The
connector reads that journal by byte watermark and ships batches as
agent-activity frames, advancing the watermark only after a successful
send — the journal is what makes this survive a disconnect or a restart
(unlike an in-memory queue).
On first run it also seeds the journal once from state.db, deriving past turns
from message timestamps, so history predating the hook isn't lost.
The hook is picked up by
discover_and_load()at gateway startup, so a freshly installed hook takes effect on the next gateway restart.
The transport auto-reconnects: an unexpected socket close (bridge restart,
network drop) re-dials with capped exponential backoff and re-runs the
hello/welcome handshake. A deliberate shutdown never reconnects.
Install
pip install wishee-hermes-connector # into your Hermes environment
Enable
- Add
wisheetoplugins.enabledin your Hermesconfig.yaml(entry-point plugins are opt-in). - Optionally set
WISHEE_BRIDGE_URLto override the default (wss://ai-bridge.wishee.com.cn/ws). - Run
hermes gateway. On first run it prints a QR code — scan it to bind this instance to the bridge (via the bridge's/api/bind). Identity is stored at~/.hermes/wishee-connector/binding.json.
Scope
v1 emits task-result on each completed turn (the bridge's device-push path).
Live streaming (agent progress events) is out of scope for v1.
Development
uv venv --python 3.13 .venv
uv pip install --python .venv/bin/python -e /path/to/hermes-agent
uv pip install --python .venv/bin/python -e ".[dev]"
.venv/bin/python -m pytest -q
Metadata
Release files for wishee-hermes-connector 0.5.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| wishee_hermes_connector-0.5.1.tar.gz | 44.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| wishee_hermes_connector-0.5.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 77.6 kB
Release files / wishee_hermes_connector-0.5.1.tar.gz
| Download URL | wishee_hermes_connector-0.5.1.tar.gz |
|---|---|
| Size | 44.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2ed3d203b974f7eba2dd3104c2a952643766715b2940e92088f2098f33de5ea2
|
|
BLAKE2b-256 checksum How to use checksums |
c01ce6a4cb5278dd806fd31726c04ba42529da006b8ddbe82ad9e7ef7dfe97de
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.22
|
Release files / wishee_hermes_connector-0.5.1-py3-none-any.whl
| Download URL | wishee_hermes_connector-0.5.1-py3-none-any.whl |
|---|---|
| Size | 33.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9c543b4cd7921531ce722f2fd5062c7d7e64751728023a8c42a8a5d2c6ca0359
|
|
BLAKE2b-256 checksum How to use checksums |
ed7798927392fc96e3229a193694c6c5bec9317f86ee4638e60825c3793aa29c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.22
|