Skip to content

Add Hermes Connector ability - #366

Merged
uzair401 merged 3 commits into
openhome-dev:devfrom
Bradymck:add-hermes-connector
Aug 31, 2026
Merged

Add Hermes Connector ability#366
uzair401 merged 3 commits into
openhome-dev:devfrom
Bradymck:add-hermes-connector

Conversation

@Bradymck

Copy link
Copy Markdown
Contributor

Summary

  • Adds 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.
  • No local bridge process needed at runtime — just two ability secrets (hermes_api_url, hermes_api_key).
  • README is written in plain, simple English with numbered setup steps, aimed at non-native English speakers.

Test plan

  • Deployed and tested live end-to-end against a real OpenHome DevKit + a self-hosted Hermes instance (exposed via Tailscale Funnel) — confirmed voice trigger → Hermes response → spoken back.
  • Validated with openhome validate locally before submitting.
  • get_api_keys() return value defensively normalized (handles both string and dict shapes seen in testing).

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.
@Bradymck
Bradymck requested a review from a team as a code owner August 21, 2026 19:46
@github-actions

Copy link
Copy Markdown
Contributor

🔀 Branch Merge Check

PR direction: add-hermes-connectordev

Passedadd-hermes-connectordev is a valid merge direction

@github-actions

Copy link
Copy Markdown
Contributor

✅ Community PR Path Check — Passed

All changed files are inside the community/ folder. Looks good!

@github-actions github-actions Bot added the community-ability Community-contributed ability label Aug 21, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🔍 Lint Results

🔧 Formatting fixes available

This PR is from a fork, so fixes could not be pushed automatically. Download the python-lint-results artifact from the workflow run for the patch file, then run:

git apply autofix.patch

__init__.py — Empty as expected

Files linted: community/hermes-connector/main.py

✅ Flake8 — Passed

✅ All checks passed!

@github-actions

Copy link
Copy Markdown
Contributor

✅ Ability Validation Passed

📋 Validating: community/hermes-connector
  ✅ All checks 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.
@Pixelpushin

Copy link
Copy Markdown

Update: reworked this to use Local Link's built-in hermes backend instead of a direct HTTP call to a tunnel-exposed API server, per Uzair's review in Slack. It now goes through exec_local_command() targeting "target": "hermes", which runs hermes -z locally via the bridge — no public exposure, no API keys, no dashboard secrets. Just Hermes installed + openhome local start running. Much simpler setup, and matches how the existing openclaw template works.

@uzair401 uzair401 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@uzair401
uzair401 merged commit 7c79992 into openhome-dev:dev Aug 31, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

community-ability Community-contributed ability

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants