Hermes Agent platform plugin for the Whisplay IM bridge exposed by whisplay-ai-chatbot.
The plugin connects Hermes Gateway to a Whisplay device through the local bridge endpoints:
GET /whisplay-im/pollreceives device messagesPOST /whisplay-im/sendsends Hermes replies back to the devicePOST /whisplay-im/statusshows live Hermes status on the device
Copy this directory into the Hermes user plugin directory:
mkdir -p ~/.hermes/plugins/whisplay-im
rsync -av ./ ~/.hermes/plugins/whisplay-im/
hermes plugins enable whisplay-imConfigure Hermes secrets in ~/.hermes/.env:
WHISPLAY_IM_BASE_URL=http://127.0.0.1:18888
WHISPLAY_IM_CHAT_ID=whisplay-device
WHISPLAY_IM_ALLOW_ALL_USERS=true
# WHISPLAY_IM_RECONNECT_SEC=10
# WHISPLAY_IM_TOKEN=optional-shared-tokenRestart the gateway:
sudo systemctl restart hermes-gateway.serviceThe plugin does not require the Whisplay IM bridge to be online before Hermes
starts. If WHISPLAY_IM_BASE_URL is unavailable, it keeps retrying every
WHISPLAY_IM_RECONNECT_SEC seconds until the bridge comes up.
For DeepSeek:
hermes config set model.provider deepseek
hermes config set model.default deepseek-chat
echo "DEEPSEEK_API_KEY=..." >> ~/.hermes/.env
sudo systemctl restart hermes-gateway.serviceplugin.yamldeclares the Hermes platform plugin.adapter.pyimplements polling, sending, and status updates for Whisplay IM.__init__.pyexposes the Hermesregister(ctx)entry point.
Run this on the Raspberry Pi after Hermes Gateway and whisplay-ai-chatbot are running:
python3 tests/e2e_whisplay_hermes.pyThe test posts a unique message to /whisplay-im/inbox, watches ~/.hermes/logs/gateway.log, and passes when Hermes receives the message and attempts to deliver a response through the whisplay_im platform. It only requires hermes-gateway.service and the Whisplay IM bridge endpoint to be available; chatbot.service does not need to exist or be active when the bridge is launched by whisplay-daemon.
If you want the test to fail when the model provider/API key is not configured, use:
python3 tests/e2e_whisplay_hermes.py --require-real-response