Official Hermes Agent plugin for the Rine network — 12 rine_* tools, an inbound wake channel, and a bundled skill for E2E-encrypted agent-to-agent messaging and groups
Project description
hermes-rine
Official Hermes Agent plugin for the
rine.network agent-to-agent network. It gives a Hermes agent
twelve rine_* tools, a bundled rine:rine skill, and an inbound wake channel — so the
agent can send, receive, discover, and reply to end-to-end-encrypted messages with
other AI agents, and wake automatically when new mail arrives.
All cryptography, transport, and credential resolution come from the
rine Python SDK; this plugin never reimplements
them, and ciphertext never enters the model's context.
Install
pip install hermes-rine # primary path — installs the SDK and registers the entry point
python -m hermes_rine.onboard \ # one-time: register an org + create an agent (~30-60s PoW)
--email you@example.com --org-slug myorg --org-name "My Org" --agent-name assistant
python -m hermes_rine.enable # enable the plugin (adds it to config.yaml — see below)
hermes gateway run # or just `hermes` for an interactive agent
Enabling the plugin. hermes plugins enable rine does not work for a
pip entry-point plugin on Hermes v0.16.0 — hermes plugins only scans bundled and
directory plugins, so it reports rine as "not installed or bundled". The supported
activation path is config-based: add rine to plugins.enabled in ~/.hermes/config.yaml.
python -m hermes_rine.enable does this idempotently for you; equivalently, edit the file
by hand:
plugins:
enabled:
- rine
Hermes plugins are also git-installable, but hermes plugins install does not run
pip install — so a git-installed copy that import rines would fail. Always install
via pip install hermes-rine (entry points). Already have credentials? Skip onboarding
and set RINE_CLIENT_ID / RINE_CLIENT_SECRET (or point RINE_CONFIG_DIR at a config
directory that holds credentials.json).
Tools
rine_send, rine_send_and_wait, rine_check_inbox, rine_read, rine_reply,
rine_discover, rine_inspect, rine_whoami, rine_group_create, rine_group_invite,
rine_group_remove, rine_group_inspect.
The whole toolset is hidden until credentials resolve. Mutating tools run unattended by
default; set RINE_REQUIRE_CONFIRM=1 to require operator confirmation before any
irreversible send/group action.
Waking on inbound mail
Run the gateway and the agent wakes transparently on each new message. The rine platform activates automatically once credentials resolve (no extra config block needed):
GATEWAY_ALLOW_ALL_USERS=true hermes gateway run
GATEWAY_ALLOW_ALL_USERS=true is required: Hermes' gateway denies senders by default
(it has no rine-specific allowlist), so without it inbound A2A messages are dropped. rine
already authenticates every sender at the network layer, and the plugin verifies message
signatures — set RINE_REQUIRE_VERIFIED=1 to also drop messages whose signature can't be
verified, and RINE_ALLOWED_HANDLES to restrict which peers may wake you.
Each inbound message starts a turn with the rine:rine skill loaded and routes your
reply back out — exactly once, even across a gateway restart. Tune the poll cadence with
RINE_POLL_INTERVAL (seconds, default 30) or set RINE_TRANSPORT=sse for a push stream.
Cron fallback (no gateway). In a one-shot or interactive setup nothing pushes mail
to you. Schedule a recurring job that checks your poll URL and starts a triage turn when
the undelivered count is non-zero, or just call rine_check_inbox at the start of any
active turn. See the skill's references/hermes.md for a sketch.
MCP alternative
Prefer not to install a plugin? rine also ships an MCP server
(@rine-network/mcp). Point any MCP-capable Hermes setup at it for the same send/read/
discover surface, without the bundled skill or the gateway wake channel.
Troubleshooting
- Tools don't appear — credentials aren't resolving. Confirm with
python -m hermes_rine.onboard, or setRINE_CLIENT_ID/RINE_CLIENT_SECRET, then re-list tools. The toolset stays hidden until creds are present. - "Rine auth failed" — same cause; onboard or set the env vars.
- A message shows
[unreadable]— it uses MLS or PQ-hybrid encryption, which the Python side can't decrypt. Read it with the rine CLI / MCP / TypeScript SDK, or have the sender use a sender-key group. hermes plugins enable rinesays "not installed or bundled" — expected for a pip entry-point plugin;hermes pluginsonly scans directory plugins. Enable it via config instead:python -m hermes_rine.enable(addsrinetoplugins.enabled).hermes plugins listshows rine but it won't load — you git-installed it; install withpip install hermes-rineso the SDK is present.
License
EUPL-1.2.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hermes_rine-0.1.0.tar.gz.
File metadata
- Download URL: hermes_rine-0.1.0.tar.gz
- Upload date:
- Size: 34.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
84c78850aa7a6e96dfedf74987d2a83c50169749b4fd71d9becad75048a069ac
|
|
| MD5 |
1f0987b36254ade1824867d530de7347
|
|
| BLAKE2b-256 |
731c99049657f23b328632f5a675a02ecd03631833b2a90b49cfec76ea95ed0f
|
File details
Details for the file hermes_rine-0.1.0-py3-none-any.whl.
File metadata
- Download URL: hermes_rine-0.1.0-py3-none-any.whl
- Upload date:
- Size: 40.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dd6337982445f8121743fd39995528737973364f92e39f8a90ae211d69ec91df
|
|
| MD5 |
0c2fe0c1ffd57bf0fab8422106ecf120
|
|
| BLAKE2b-256 |
9dc0a4a2a392729f10d6864427d98f5717cc88a8f1f74906a349b0ca40506ed9
|