Hermes Agent platform
adapter plugin for Roam. Receives Roam chat.message
webhooks (Standard-Webhooks signature-verified), normalizes them into
Hermes MessageEvents, and delivers outbound replies via the Roam V1
API (chat.post, chat.update, chat.typing). Roam threads are
mapped to Hermes session threads via threadTimestamp.
See INSTALL.md.
python -m venv .venv
.venv/bin/pip install -e ".[dev]"
.venv/bin/python -m pytestTests stub the gateway.* modules in tests/conftest.py, so the
plugin can be exercised without a running Hermes installation.
Releases are tagged commits on master. There is no PyPI / NPM
registry — the GitHub Release page is the canonical distribution
point, and users install with pip directly from the release tag (see
INSTALL.md).
To cut a release:
- Bump the version in three places to the same string:
pyproject.toml→project.versionroam/plugin.yaml→versionINSTALL.md→ thev…references in the install one-liner and wheel filename
- Commit the bump on
masterand push. - Tag and push:
git tag v0.0.8 git push origin v0.0.8
- The
ReleaseGitHub Actions workflow fires onv*tag push and:- checks that the tag matches
pyproject.toml'sversion, - runs
pytest, - builds the sdist + wheel with
python -m build, - builds
hermes-roam-plugin-v<version>.tar.gz(the plugin tarball that the INSTALL.md one-liner extracts into~/.hermes/plugins/), - creates a GitHub Release with all three artifacts attached and auto-generated notes.
- checks that the tag matches
If the tag/version check fails the workflow aborts before publishing, so a mismatched bump can't produce a misnamed release.
.github/workflows/ci.yml runs pytest on every push and pull
request across Python 3.10 / 3.11 / 3.12.