Skip to main content

AgentDeck Relay for Hermes

This package adds relay v3 support to Hermes as a user plugin. It publishes Hermes identity and conversation metadata, receives AgentDeck messages from Cloudflare R2, and delivers Hermes responses through the same relay.

AgentDeck is fully open source under the MIT License. Build the iOS app for free from the AgentDeck repository, or install the signed public app from the App Store as a paid app by searching for AgentDeck.

Why this exists

  • No ports open — keep the Hermes server behind its firewall instead of exposing a direct mobile endpoint.
  • You own your data — relay objects live in your Cloudflare R2 bucket.
  • Native Hermes integration — use Hermes gateway, cron, and platform flows while AgentDeck provides the mobile chat experience.
  • One client for two platforms — use the same iOS app with Hermes or OpenClaw.

Requirements

  • A Hermes installation with user-plugin support
  • Python 3.12 or later
  • A Cloudflare R2 bucket and S3-compatible credentials

Install the plugin

Install the released package from PyPI into the same Python environment that runs Hermes:

python -m pip install --upgrade r2-relay-adapter
hermes plugins enable r2-relay
hermes gateway restart

The package exposes the r2-relay Hermes entry point and installs its runtime dependencies automatically. Hermes keeps the plugin opt-in; installing the package does not enable it until you run hermes plugins enable r2-relay.

Configure Hermes

Set the required values in ~/.hermes/.env:

R2_RELAY_ENDPOINT=...
R2_RELAY_BUCKET=...
R2_RELAY_ACCESS_KEY_ID=...
R2_RELAY_SECRET_ACCESS_KEY=...

Optional values include R2_RELAY_SERVER_ID, R2_RELAY_HOME_CHANNEL, and R2_RELAY_ALLOWED_USERS. See docs/install.md for the full configuration list. Keep credentials in the environment file, not in config.yaml or the repository.

Install AgentDeck on iOS

Install AgentDeck from the App Store by searching for AgentDeck, or build it for free using the iOS build instructions. Enter the same R2 connection details in AgentDeck that you configured for Hermes.

Cron delivery

Set R2_RELAY_HOME_CHANNEL to a relay target when Hermes cron jobs should send messages to AgentDeck. A target can be a peer ID or the provider-specific form:

peer=<peer>,session=<thread-or-session-id>

Keep the target stable and unique when multiple Hermes gateways share one R2 bucket.

Uninstall the plugin

Disable the platform, remove the package, and restart the gateway:

hermes plugins disable r2-relay
python -m pip uninstall r2-relay-adapter
hermes gateway restart

The scripts in scripts/ are limited to building, bootstrapping a development environment, and editing local relay configuration. Plugin installation, updates, enablement, and removal belong to Hermes.

Development

./scripts/bootstrap-dev.sh
PYTHONPATH=/path/to/hermes-agent python3 -m pytest -q

The tests import Hermes’s real platform registry, so PYTHONPATH must reference a compatible Hermes source checkout. The tested revision is recorded in the repository’s compatibility.json.

Logs

After restarting Hermes, relay diagnostics are written to the Hermes gateway log:

tail -f ~/.hermes/logs/gateway.log

Support and issues

Report bugs, feature requests, and installation problems in the AgentDeck GitHub Issues. Include the Hermes version and redacted logs; never include R2 credentials or private relay data.

License

MIT License. See LICENSE.

Release files for r2-relay-adapter 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for r2-relay-adapter 0.1.0
File Size Uploaded
r2_relay_adapter-0.1.0.tar.gz 39.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for r2-relay-adapter 0.1.0
File Interpreter ABI Platform
r2_relay_adapter-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 73.5 kB

Release files / r2_relay_adapter-0.1.0.tar.gz

Download URL r2_relay_adapter-0.1.0.tar.gz
Size 39.7 kB
Tags Source
SHA-256 checksum
How to use checksums
1d3acf36f72a5121e1b51cb799a25e2b99736ba8d6a02b2d9e1c2518559ab914
BLAKE2b-256 checksum
How to use checksums
b8ea4b7447fbc4b5ca8f36444cc346760be9675472aa38ee729c4e87897e5476
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / r2_relay_adapter-0.1.0-py3-none-any.whl

Download URL r2_relay_adapter-0.1.0-py3-none-any.whl
Size 33.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bc01e9fc08cbd60dcdfec7c751b9a505cd13e8decb505f1c5afccee1cdcbcab8
BLAKE2b-256 checksum
How to use checksums
241a1d97730e429734484b51a07d4a3a162267ed73dcd44406eb86305ac72a6b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.2

2 release files

0.1.1

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page