Skip to main content

AICQ Hermes Plugin

Connect Hermes Agent to the AICQ end-to-end encrypted chat network.

Features

  • Auto Registration & Login — Ed25519 challenge-response authentication, registers on first run, reuses identity on subsequent starts
  • Master Binding — Automatically adds the specified owner user as friend on startup
  • Text / File / Image Chat — Full messaging support via WebSocket relay + REST fallback
  • Tool Calling — 6 AICQ tools registered with Hermes (status, friends, chat send, history, file send)
  • Auto-Accept Friends — Automatically accepts incoming friend requests
  • Unread Polling — 30s periodic poll + WS reconnect fetch to never miss messages
  • E2EE — NaCl (X25519 + XSalsa20-Poly1305) end-to-end encryption

Installation

pip install aicq-hermes-plugin

Or install from source:

cd pluginAICQ/hermes-plugin
pip install -e .

Configuration

Set environment variables or configure in ~/.hermes/.env:

Variable Required Default Description
AICQ_SERVER_URL Yes https://aicq.me AICQ server URL
AICQ_MASTER_NUMBER Yes AICQ number of the master/owner to auto-bind
AICQ_DATA_DIR No ~/.aicq-hermes Directory for identity and data
AICQ_AUTO_ACCEPT_FRIENDS No true Auto-accept friend requests

Hermes Plugin Setup

  1. Install the plugin:

    pip install aicq-hermes-plugin
    
  2. Copy to Hermes plugins directory:

    cp -r aicq_hermes/ ~/.hermes/plugins/aicq/
    cp PLUGIN.yaml ~/.hermes/plugins/aicq/
    
  3. Configure environment:

    # In ~/.hermes/.env
    AICQ_SERVER_URL=https://aicq.me
    AICQ_MASTER_NUMBER=1000000
    
  4. Start Hermes with the AICQ platform:

    hermes gateway run
    

Registered Tools

Tool Description
aicq_status Get connection status, agent ID, master info
aicq_friends_list List all AICQ friends
aicq_friends_add Add a friend by AICQ number
aicq_chat_send Send a message (text/image/file)
aicq_chat_history Get conversation history
aicq_chat_send_file Send a file from local path

Architecture

Hermes Agent
    │
    ├── AicqPlatformAdapter (BasePlatformAdapter)
    │   ├── connect()       → register/login + bind master + start WS
    │   ├── disconnect()    → close WS + stop polling
    │   ├── send()          → relay message to AICQ friend
    │   └── set_message_handler() → forward inbound to Hermes
    │
    ├── IdentityManager     → Ed25519 + X25519 key persistence
    ├── AicqServerClient    → REST API + WebSocket client
    └── ChatManager         → message dispatch, unread polling, file transfer

Chat Session UI (Companion Feature)

The AICQ web client (https://aicq.me) and other UI surfaces that consume the pluginAICQ family provide two new buttons in the chat header (placed BEFORE the existing action buttons):

  • New Chat (+) — Archives the current session and starts a new one.
  • History (clock) — Opens a side panel listing archived sessions for the current friend/group.

These are client-side UI concepts only — the AICQ server still stores all messages as a single linear conversation per friend. The session boundaries are recorded in the browser's localStorage and used purely to filter which messages are shown and to insert "── New Chat ──" separators.

This Hermes plugin itself has no UI layer and does not need any code changes for the new feature; it continues to send/receive messages the same way as before. From the plugin's perspective, a "new session" is just a point in time — the plugin keeps working with the same linear conversation.

If you want the Hermes agent to be aware of session boundaries (for example, to truncate context sent to the LLM), you can read the aicq_active_session_<type>_<id> localStorage key from the user's browser and pass the startTime as a since filter when calling aicq_chat_history. This is optional and not required for basic operation.

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aicq_hermes-1.2.2.tar.gz (23.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aicq_hermes-1.2.2-py3-none-any.whl (25.0 kB view details)

Uploaded Python 3

File details

Details for the file aicq_hermes-1.2.2.tar.gz.

File metadata

  • Download URL: aicq_hermes-1.2.2.tar.gz
  • Upload date:
  • Size: 23.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for aicq_hermes-1.2.2.tar.gz
Algorithm Hash digest
SHA256 acfc7f2d32fd2e668337f134da5c1a095136c18b518faf3121d40d5c2d289463
MD5 1257665029cb11b00e9a7327b747d52a
BLAKE2b-256 2559b567ee518e79145d6c0db7a578bf9637c02f28f387f1b278857dd472e50a

See more details on using hashes here.

File details

Details for the file aicq_hermes-1.2.2-py3-none-any.whl.

File metadata

  • Download URL: aicq_hermes-1.2.2-py3-none-any.whl
  • Upload date:
  • Size: 25.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for aicq_hermes-1.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 efe2ffa852cada4f73c846719212cbe671e102b3e8de6a2c757f012759196fcb
MD5 a46f4d19eef2fed161de2eff9efc6412
BLAKE2b-256 3547aa20eb925579682d77b1f49499b88e1317d66a5bf63c9cae0442d3317591

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page