Run Hermes Agent, OpenClaw, and OpenCode on the same WeChat account. One command to install.
ๅจๅไธไธชๅพฎไฟก่ดฆๅทไธๅๆถๅคๅผ Hermes AgentใOpenClaw ๅ OpenCodeใไธๆกๅฝไปคๅฎ่ฃ ใ
One iLink account. Three AI brains. Switch with /hermes, /openclaw, /opencode, /both, /three.
ไธไธช iLink ่ดฆๅท๏ผไธไธช AI ๅคง่ใ/hermesใ/openclawใ/opencodeใ/bothใ/three ไธๅฅ่ฏๅๆขใ
Both Hermes Agent and OpenClaw now support WeChat natively โ but you can't run both on the same account. Each gateway exclusively locks the iLink connection. If you start both, one gets 403 errors and drops messages. OpenCode adds a third AI brain via its ACP subprocess protocol.
HermesClaw solves this by becoming the sole iLink poller, then running two local proxy servers (for Hermes and OpenClaw) plus a direct ACP bridge (for OpenCode). Each gateway believes it's talking to the real iLink API.
The new OpenCode support also lets you Vibe Code via WeChat voice messages โ just speak and OpenCode handles it, backed by four free models including MiniMax M2.5 Free. You can also use it alongside the other two agents to complement each other โ fixing their issues, tracing bugs, or inspecting the local environment.
็ฐๅจ Hermes ๅ OpenClaw ้ฝๅ็ๆฏๆๅพฎไฟกไบโโไฝไฝ ไธ่ฝๅจๅไธไธช่ดฆๅทไธๅๅผใ ๆฏไธช Gateway ไผ็ฌๅ iLink ่ฟๆฅใHermesClaw ่งฃๅณ่ฟไธช้ฎ้ข๏ผๅฎไฝไธบๅฏไธ็ iLink ่ฝฎ่ฏข่ ๏ผ่ฟ่กไธคไธชๆฌๅฐไปฃ็๏ผ่ฎฉไธคไธช Gateway ๅ่ฟๅ็ใ
ๆฐ็่ฟๅขๅ ไบ OpenCode ๆฏๆ๏ผ็ฐๅจไฝ ๅฏไปฅ็จๅพฎไฟก่ฏญ้ณ็ดๆฅ่ฟ่ก Vibe Coding ไบ๏ผ่ฐ็จ็ๅฐฑๆฏ OpenCode ไธญๅ ๅซ MiniMax M2.5 Free ๅจๅ ็ๅไธชๅ ่ดนๆจกๅใไฝ ไนๅฏไปฅ็จๅฎๅๅฆๅคไธคไธช Agent ไบ็ธ่กฅๅ ไฝฟ็จ๏ผๆฏๅฆๅธฎๅฎไปฌไฟฎ้ฎ้ขใๆฅ bugใ็ๆฌๆบ็ฏๅขใ
Special thanks to the Hermes Agent team at Nous Research for recognizing and recommending HermesClaw in the Community section of their official GitHub README.
็นๅซๆ่ฐข Nous Research ็ Hermes Agent ๅข้๏ผๅจๅ
ถ GitHub ๅฎๆน README ็ Community ๅบๆถๅฝๅนถๆจ่ HermesClawใ
Official reference: Hermes Agent README - Community
| Without HermesClaw | With HermesClaw | |
|---|---|---|
| Hermes on WeChat | โ Works (native gateway) | โ Works |
| OpenClaw on WeChat | โ Works (clawbot) | โ Works |
| OpenCode on WeChat | โ No WeChat support | โ via ACP bridge |
| Both on same account | โ Token conflict / 403 | โ
/both mode |
| All three on same account | โ Impossible | โ
/three mode |
| Voice messages | โ Each handles natively | โ Transcription forwarded |
| Images / video / files | โ Each handles natively | โ Raw iLink msg forwarded |
| Switching agents | โ | /hermes, /openclaw, /opencode, /both, /three |
โโโโโโโโโโโ iLink API โโโโโโโโโโโ
โ ilinkai.weixin.qq.com โ
โโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโ
โ
(sole poller / token owner)
โ
โโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโ
โ HermesClaw v3 โ
โ routes by /hermes /openclaw โ
โ /opencode /three โ
โ queues raw iLink messages โ
โโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโโโค
โ โ โ
Proxy A Proxy B ACP Bridge
(:19999) (:19998) (subprocess)
openclaw hermes opencode acp
โ โ โ
โผ โผ โผ
โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ
โ openclaw โ โ hermes โ โ opencode โ
โ gateway โ โ gateway โ โ process โ
โโโโโโฌโโโโโโ โโโโโโฌโโโโโโ โโโโโโฌโโโโโโ
โ โ โ
sendmessage sendmessage send_text_ilink
โโโโโโโฌโโโโโโโ โ
โ (proxy forwards) โ
โโโโโโโโโโโโโโโโโโโโบโ
to iLink
HermesClaw is a thin Python proxy (~500 lines). It does not process media, call agent APIs, or touch agent memory. It just queues and forwards raw iLink protocol messages. Each gateway handles its own media decryption, markdown formatting, and AI interaction natively.
HermesClaw ๅชๆฏไธไธช่ฝป้่ฝฌๅไปฃ็๏ผ~500 ่ก๏ผ๏ผไธๅค็ๅชไฝใไธ่ฐ Agent APIใไธๅจ่ฎฐๅฟใๆฏไธช Gateway ๅ็ๅค็่ชๅทฑ็ๅชไฝ่งฃๅฏๅ AI ไบคไบใ
Before installing HermesClaw, you need at least one of:
- OpenClaw + clawbot (
openclaw-weixin) โ installed and logged into WeChat - Hermes Agent + WeChat gateway โ installed with
hermes gatewayconfigured
Both installed = full dual-open. One installed = single-agent mode with the option to add the other later.
ๅฎ่ฃ HermesClaw ๅ๏ผ้่ฆ่ณๅฐๅฎ่ฃ ไปฅไธๅ ถไธญไธไธช๏ผOpenClaw ็ clawbot๏ผๆ่ Hermes ็ๅพฎไฟก Gatewayใ
curl -fsSL https://raw.githubusercontent.com/AaronWong1999/hermesclaw/main/install.sh | bashFor non-interactive / automated installs (skips all confirmation prompts):
curl -fsSL https://raw.githubusercontent.com/AaronWong1999/hermesclaw/main/install.sh | HERMESCLAW_YES=1 bash
# or, when running the script directly:
bash install.sh -yThe installer will:
- Detect which gateways are installed and configured
- Extract the iLink token from gateway account files
- Patch openclaw-weixin
baseUrlโhttp://127.0.0.1:19999(proxy A) - Patch Hermes
WEIXIN_BASE_URLโhttp://127.0.0.1:19998(proxy B) - Detect OpenCode CLI (optional โ enables
/opencodeand/three) - Install Python deps (
requests,python-dotenv) - Create OpenClaw media symlink (workaround for media path mismatch)
- Set up the
hermesclawsystemd service
After install, restart your gateways and send /whoami in WeChat.
Drop this into any AI agent on the target machine:
Run: curl -fsSL https://raw.githubusercontent.com/AaronWong1999/hermesclaw/main/install.sh | bash
Then read README.md and install.sh from the installed HermesClaw directory.
Detect whether Hermes Agent, OpenClaw, their WeChat gateways, python3, pip3,
and systemd are present. At least one gateway must be configured. Extract
the iLink token from the first available gateway account file. Patch
openclaw-weixin baseUrl to http://127.0.0.1:19999 and Hermes WEIXIN_BASE_URL
to http://127.0.0.1:19998. Install dependencies and systemd service.
Also detect OpenCode CLI: run `command -v opencode` or check
~/.npm-global/bin/opencode. If not found, suggest installing with:
npm install -g opencode-ai
Set OPENCODE_CMD in .env to the detected path (or empty if not found).
OPENCODE_MODEL defaults to opencode/minimax-m2.5-free (free, no API key needed).
If Hermes Agent WeChat gateway is detected, the installer will offer to patch
weixin.py to disable newline-based message splitting (recommended). Accept
this patch so long replies are sent as single messages instead of being split
by paragraphs. The fix script is at fix_hermes_splitting.sh.
Restart gateways. Verify /whoami works in WeChat.
| Command | Action |
|---|---|
/hermes |
Route to Hermes only |
/openclaw |
Route to OpenClaw only |
/opencode |
Route to OpenCode only (via ACP bridge) |
/both |
Route to Hermes + OpenClaw (reply from both) |
/three |
Route to all three (reply from all) |
/whoami |
Show current route and status |
| anything else | Forward to the active agent(s) |
Default route is Hermes. In /both and /three modes, proxy replies are prefixed with [Hermes Agent] / [OpenClaw] / [OpenCode] for attribution.
OpenCode connects via its native ACP subprocess protocol โ no proxy port needed. Install it first:
npm install -g opencode-aiThen set OPENCODE_CMD in .env (the installer auto-detects it). Use /opencode or /three once OpenCode is installed.
hermesclaw.py # ~870 lines. Triple-proxy router + ACP bridge.
install.sh # Smart auto-detecting installer (-y for non-interactive).
fix_hermes_splitting.sh # Patch Hermes weixin.py (optional, recommended).
tests/ # 82 pytest tests (core, proxy, ACP, recovery).
README.md
LICENSE
docs/ # Screenshots and media.
HermesClaw forwards raw iLink protocol messages to each gateway. This means:
- Text โ forwarded as-is
- Voice โ iLink includes a transcription; HermesClaw forwards the transcription text
- Images / video / files โ the raw iLink message (with CDN URLs and AES keys) is forwarded; each gateway downloads and decrypts natively
HermesClaw does not do AES decryption, CDN downloads, or media re-encoding. That's each gateway's job.
Stop and disable the hermesclaw systemd service. Restore openclaw-weixin
account .bak files. Remove WEIXIN_BASE_URL override from ~/.hermes/.env
(or restore .bak). Optionally remove ~/hermesclaw directory.
sudo systemctl stop hermesclaw
sudo systemctl disable hermesclaw
sudo rm -f /etc/systemd/system/hermesclaw.service
sudo systemctl daemon-reload
# Restore openclaw-weixin configs:
find "$HOME" -maxdepth 5 -name "*.json.bak" -path "*/openclaw-weixin/accounts/*" \
-exec sh -c 'for f; do cp "$f" "${f%.bak}"; done' sh {} +
# Restore Hermes .env:
[ -f "$HOME/.hermes/.env.bak" ] && cp "$HOME/.hermes/.env.bak" "$HOME/.hermes/.env"
rm -rf "$HOME/hermesclaw"- Fix: macOS install failure โ
mapfile: command not foundโ macOS ships with bash 3.2 which lacks themapfilebuiltin (added in bash 4). All 3 occurrences replaced with portablewhile IFS= read -rloops, making the installer work on macOS out of the box. - Fix:
curl | bashsilent abort โ Withset -euo pipefail, barereadcalls returned non-zero on EOF when stdin was a pipe, causing the installer to exit before any${REPLY:-Y}default was evaluated. The installer now detects a non-tty stdin and redirects interactive prompts to/dev/ttyso users can still answer them; if/dev/ttyis also unavailable (CI / Docker) it falls back to auto-yes. All three prompt calls also have|| VAR=""guards as defence-in-depth. - 5 new regression tests โ
tests/test_install_sh.pycovers mapfile absence, bash syntax, read guards, tty detection, and non-interactive stdin. - Thanks to @ShxxxNewBee, @siasbaily, and @csloz for reporting and diagnosing these issues ๐
- OpenCode ACP bridge โ New
OpenCodeBridge+ACPSessionclasses implement JSON-RPC 2.0 over NDJSON foropencode acpsubprocess. Per-user sessions with automatic reconnect. /opencodecommand โ Route messages to OpenCode only./threecommand โ Route messages to all three agents simultaneously (Hermes + OpenClaw + OpenCode).- "Not installed" detection โ If
opencodebinary is not found,/opencodeand/threeshow a helpful install hint instead of crashing. - Tagging in THREE mode โ Proxy tags Hermes/OpenClaw replies; OpenCode worker tags its own replies with
[OpenCode]. - Dead subprocess recovery โ If OpenCode exits mid-session, pending prompts unblock immediately with an error instead of hanging for the full 120 s timeout.
- Headless ACP permissions โ OpenCode permission prompts are handled automatically with
OPENCODE_PERMISSION_STRATEGY=allow_always, preventing WeChat replies from hanging on non-interactive tool approvals. The OpenCode global config (~/.config/opencode/opencode.json) is also set to"permission": "allow"by the installer so tool calls are approved at the OpenCode level without round-tripping through ACP. - OpenCode typing indicator โ OpenCode mode now sends and keeps alive the WeChat typing indicator while the ACP agent is working.
- Non-interactive installer โ
bash install.sh -y(orHERMESCLAW_YES=1 bash install.sh) skips all confirmation prompts; OpenCode appears in the discovery summary. - Installer git pull โ Re-running install.sh on an existing install now pulls the latest code before continuing.
- 117 tests โ Expanded route matrix covers every command route across text, voice, image, video, and file payloads, plus ACP permissions, OpenCode media prompts, dead-subprocess recovery, and THREE mode.
- Fix: Hermes message splitting โ The installer now offers to patch Hermes Agent's
weixin.pyto disable newline-based message splitting during installation (recommended, default Yes). This ensures long replies are sent as single messages instead of being split by paragraphs. Existing users can runbash fix_hermes_splitting.shmanually.
- Complete rewrite: dual-proxy gateway architecture.
- Removed ~400 lines of AES/CDN media processing.
- 59 pytest tests (core, proxy, recovery).
- Smart 8-case detection installer.
- Fix: Hermes "Response formatting failed" โ Proxy servers now use
ThreadingHTTPServerinstead of single-threadedHTTPServer. - Fix: OpenClaw ENOENT on media files โ Installer now creates symlink for media path mismatch.
- Improved error handling โ
BrokenPipeErrornow caught and logged as DEBUG.
MIT โ by @AaronWong1999 ยท X @AaronYonW
- NousResearch/hermes-agent โ the agent that grows with you.
- openclaw/openclaw โ your own personal AI assistant. The lobster way. ๐ฆ
- The Clawbot / openclaw-weixin maintainers for the iLink WeChat bridge.
HermesClaw is a community bridge. It is not affiliated with NousResearch or OpenClaw.

