Delta Chat platform plugin for Hermes Agent using the official JSON-RPC runtime
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-24 14:20:23 +03:00
tests fix: harden Delta Chat event handling 2026-08-24 14:04:01 +03:00
.gitignore feat: add Delta Chat Hermes platform plugin 2026-08-24 13:58:00 +03:00
__init__.py feat: add Delta Chat Hermes platform plugin 2026-08-24 13:58:00 +03:00
adapter.py fix: harden Delta Chat event handling 2026-08-24 14:04:01 +03:00
plugin.yaml fix: harden Delta Chat event handling 2026-08-24 14:04:01 +03:00
pyproject.toml feat: add Delta Chat Hermes platform plugin 2026-08-24 13:58:00 +03:00
README.md docs: keep plugin installation scanner-safe 2026-08-24 14:20:23 +03:00

Hermes Delta Chat Plugin

Standalone Hermes platform plugin backed by Delta Chat's official JSON-RPC client/server.

What works in the MVP

  • Persistent Chatmail/Delta Chat account database
  • Encrypted DM receive/send
  • Allowlisted groups
  • Text, file, image, and voice attachments
  • Reply quotes
  • Hermes sessions, slash commands, pairing, and live-gateway home delivery
  • Contact-invite SVG generation during provisioning
  • Bot-loop filtering for addressed bot messages

Provisioning model

A Chatmail relay account QR (DCACCOUNT: or DCLOGIN: payload) is consumed once. The generated transport credentials and private keys remain in the persistent accounts database; the QR is not stored. The setup emits a separate SecureJoin contact QR that can be shared with the human operator.

Install

Install the exact Delta Chat runtime dependencies declared in pyproject.toml into the same Python environment that runs Hermes. Client and server must remain on the same pinned version.

Install or copy this repository as a Hermes user plugin, then enable it:

hermes plugins install https://git.majlis.lab/HomeLab/hermes-deltachat.git --enable
hermes plugins doctor deltachat-platform

Configure a private account-data directory in the Hermes platform settings:

gateway:
  platforms:
    deltachat:
      enabled: true
      extra:
        accounts_dir: /path/to/private/deltachat/accounts
        require_verified_contacts: true
        allow_bot_messages: addressed_only

Provision the profile once from a Chatmail DCACCOUNT: or DCLOGIN: QR payload. The generated account database is runtime state and must never be committed. Restart the Hermes gateway after enabling the plugin.

Security

  • Keep the account database, private keys, transport credentials, and generated invite files outside Git with mode 0700/0600.
  • Groups are disabled until their local chat IDs are explicitly allowlisted.
  • Prefer verified SecureJoin contacts and replace temporary allow-all testing with an exact local contact-ID allowlist.
  • The plugin does not log or return relay credential structures.

Development verification

python -m pytest -q -o 'addopts='
hermes plugins doctor deltachat-platform