- Python 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| tests | ||
| .gitignore | ||
| __init__.py | ||
| adapter.py | ||
| plugin.yaml | ||
| pyproject.toml | ||
| README.md | ||
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