mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-18 04:41:56 +00:00
SimpleX Chat (https://simplex.chat) is a private, decentralised messenger with no persistent user IDs — every contact is identified by an opaque internal ID generated at connection time. This adds it as a Hermes gateway platform via the plugin system. The adapter connects to a local simplex-chat daemon via WebSocket, listens for inbound messages, and sends replies. Originally proposed in PR #2558 as a core-modifying integration; reshaped here as a self- contained plugin under plugins/platforms/simplex/ with no edits to any core file. Discovery is filesystem-based (scanned by gateway.config), and the platform identity is resolved on demand via Platform("simplex"). Plugin contract: - check_requirements() requires SIMPLEX_WS_URL AND the websockets package - validate_config() / is_connected() accept env or config.yaml input - _env_enablement() seeds PlatformConfig.extra (ws_url + home_channel) - _standalone_send() supports out-of-process cron delivery - interactive_setup() provides a stdin wizard for hermes gateway setup - register() wires the adapter into the registry with required_env, install_hint, cron_deliver_env_var, allowed_users_env, and a platform_hint for the LLM. Lazy dependency: the websockets Python package is imported inside the functions that need it. The plugin is importable and discoverable even when websockets is missing — check_requirements() simply returns False until `pip install websockets` is run. No new pyproject extras are introduced. Environment variables: SIMPLEX_WS_URL WebSocket URL of the daemon (required) SIMPLEX_ALLOWED_USERS Comma-separated allowed contact IDs SIMPLEX_ALLOW_ALL_USERS Set true to allow all contacts SIMPLEX_HOME_CHANNEL Default contact for cron delivery SIMPLEX_HOME_CHANNEL_NAME Human label for the home channel Closes #2557.
37 lines
1.5 KiB
YAML
37 lines
1.5 KiB
YAML
name: simplex-platform
|
|
label: SimpleX Chat
|
|
kind: platform
|
|
version: 1.0.0
|
|
description: >
|
|
SimpleX Chat gateway adapter for Hermes Agent.
|
|
Connects to a local simplex-chat daemon via WebSocket and relays
|
|
messages between SimpleX contacts/groups and the Hermes agent.
|
|
SimpleX is decentralised and assigns no persistent user IDs —
|
|
every contact is an opaque internal ID generated at connection
|
|
time, making it one of the most private messengers available.
|
|
author: Mibayy
|
|
# ``requires_env`` and ``optional_env`` entries are surfaced in the
|
|
# ``hermes config`` UI via the platform-plugin env var injector in
|
|
# ``hermes_cli/config.py``.
|
|
requires_env:
|
|
- name: SIMPLEX_WS_URL
|
|
description: "WebSocket URL of the simplex-chat daemon (e.g. ws://127.0.0.1:5225)"
|
|
prompt: "SimpleX daemon WebSocket URL"
|
|
password: false
|
|
optional_env:
|
|
- name: SIMPLEX_ALLOWED_USERS
|
|
description: "Comma-separated SimpleX contact IDs allowed to talk to the bot"
|
|
prompt: "Allowed contact IDs (comma-separated)"
|
|
password: false
|
|
- name: SIMPLEX_ALLOW_ALL_USERS
|
|
description: "Allow any contact to talk to the bot (dev only — disables allowlist)"
|
|
prompt: "Allow all contacts? (true/false)"
|
|
password: false
|
|
- name: SIMPLEX_HOME_CHANNEL
|
|
description: "Default contact/group ID for cron / notification delivery"
|
|
prompt: "Home channel contact/group ID (or empty)"
|
|
password: false
|
|
- name: SIMPLEX_HOME_CHANNEL_NAME
|
|
description: "Human label for the home channel (defaults to the ID)"
|
|
prompt: "Home channel display name (or empty)"
|
|
password: false
|