Skip to content

v0.3.0

Choose a tag to compare

@BonesGit BonesGit released this 04 Sep 15:24
· 28 commits to master since this release

First official release of the Vector platform plugin for Hermes Agent.

Install

git clone https://github.com/BonesGit/hermes-vector-platform ~/.hermes/plugins/vector-platform
hermes plugins enable vector-platform
hermes gateway setup    # builds vector-bridge, create/import identity
hermes gateway restart

Requires Hermes Agent (current main) and Rust ≥ 1.75. The sidecar depends on crates.io vector_sdk =0.9.0.

Features

Gateway & identity

  • Hermes platform plugin (vector / toolset hermes-vector) with its own Vector bot npub — not a human impersonation
  • Rust vector-bridge sidecar: localhost HTTP + SSE, spawn-time X-Hermes-Sidecar-Token
  • Interactive hermes gateway setup: create or import identity, operator npub as first allowlisted user, pairing, display YAML (tool_progress: off)
  • Identity create mints a NIP-06 12-word mnemonic and writes sdk/identity.nsec + sdk/identity.mnemonic (0600); mnemonic import copies both; nsec-only import has no seed file
  • Runtime never mints — missing identity.nsec fails until setup/import
  • Default-deny allowlist (VECTOR_ALLOWED_USERS) + Hermes pairing codes (VECTOR_PAIRING default on)
  • Cron deliver=vector via the live sidecar (gateway must be running)
  • Hardening: runtime record ~/.hermes/runtime/vector-sidecar.json (0600), truncated npub logs, nsec redaction, orphan sidecar reap on connect

DMs

  • Bidirectional encrypted DMs with allowlisted peers
  • Typing indicators
  • Encrypted file attachments (Vector Blossom) inbound and outbound
  • File-only (no caption): Vector ack + session breadcrumb (no AI turn); sequential files accumulate until the next text
  • File + caption: save then Hermes turn with media_urls (vision / STT / docs)
  • Outbound send_image / send_document / video / voice / animation via /send-file
  • Missed DMs while the sidecar was down are not sent to the agent; after Ready, allowlisted chats get ❌ (VECTOR_MISSED_REACT, default on)
  • Agent send_message(action=react|unreact) on DMs; optional processing-lifecycle 👀 → ✅/❌ (VECTOR_REACTIONS, default off)

Communities (Concord)

  • Join-first: trusted inviters auto-join; mention / reply / slash-gated turns
  • Optional bot-owned private home room (VECTOR_CREATE_COMMUNITY)
  • Group people-gate: VECTOR_ALLOWED_USERS, VECTOR_GROUP_ALLOWED_USERS, or VECTOR_GROUP_ALLOW_ALL channels
  • Join DMs to VECTOR_HOME_CHANNEL with copy-pasteable channel_id: (once per channel)
  • Community file attachments: stash on arrival; download when a people-gated member replies and @mentions the bot (VECTOR_COMMUNITY_DOWNLOAD_ALL=on for download-on-arrival)
  • Outbound files to a 64-hex channel via bot.channel().send_file

Slash commands & profile

  • Vector / picker (kind 10304): /approve and /deny with optional args
  • Optional public kind-0 profile (VECTOR_BOT_NAME / ABOUT / AVATAR / BANNER); when slash is on, publishes bot: true and copies to discovery indexers so the picker works

Requirements / notes

  • Sidecar binds 127.0.0.1:8096 by default; every route except /live needs the token
  • Do not set VECTOR_STUB in the gateway
  • First setup runs cargo build --release (no prebuilt binary yet)
  • Community reactions and missed-❌ catch-up remain DM-only

See CHANGELOG.md for the full history.