Add Hermes Connector ability - #366
Conversation
Sends voice/chat requests from an OpenHome ability directly to a self-hosted Hermes agent's OpenAI-compatible API server (POST /v1/chat/completions), and speaks the response back. No local bridge process required at runtime. README written in plain, simple English (ESL-friendly) with numbered setup steps.
🔀 Branch Merge CheckPR direction: ✅ Passed — |
✅ Community PR Path Check — PassedAll changed files are inside the |
🔍 Lint Results🔧 Formatting fixes availableThis PR is from a fork, so fixes could not be pushed automatically. Download the git apply autofix.patch✅
|
✅ Ability Validation Passed |
…c tunnel Per Uzair's review: routes through exec_local_command() targeting the Local Link bridge's existing 'hermes' backend (runs 'hermes -z' locally), not a direct HTTP call to a tunnel-exposed API server. No public exposure, no API keys, no dashboard secrets — just Hermes installed + openhome local start running.
|
Update: reworked this to use Local Link's built-in |
uzair401
left a comment
There was a problem hiding this comment.
Thanks for the submission and updates, @Braddock and @Pixelpushin.
I have implemented Hermes ACP, which is the officially recommended way to communicate with Hermes from external tools while preserving conversation context and memory. The Local Link WebSocket is designed for this purpose, so users only need to run openhome local start or openhome local run; the remaining setup is handled automatically.
I am still approving this PR for users who prefer the API Server endpoint. You can also run the API server and connect to it through OpenHome Local Link by creating an updated ability from the template. Users can choose whichever approach works best and is easiest for them.
Once again, thanks for the submission.
Summary
community/hermes-connector/— routes voice/chat requests from an OpenHome ability directly to a self-hosted Hermes agent's OpenAI-compatible API server (POST /v1/chat/completions), then speaks the response back.hermes_api_url,hermes_api_key).Test plan
openhome validatelocally before submitting.get_api_keys()return value defensively normalized (handles both string and dict shapes seen in testing).