Skip to main content

hermes-telegram-business

✓ Official★ 276

Observe-with-approval Telegram Business Mode (secretary bot): every drafted customer reply needs owner approval before it is sent.

Open in Hermes Desktop
hermes plugins install hermes-telegram-business

README

From the reviewed commit abec9e8 ↗; it updates when the author re-pins.

hermes-telegram-business

Part of Hermes Official Plugins, Nous Research's official plugins for Hermes Agent. Formerly NousResearch/hermes-telegram-business, which is archived; this directory carries its full history.

Observe-with-approval Telegram Business Mode (secretary bot) for Hermes Agent.

Connect your Telegram Business account to your Hermes bot and it becomes your secretary: every incoming customer message gets an LLM-drafted reply delivered to your DM with inline buttons — nothing reaches the customer until you tap Send.

Customer → your Business account (via Business Mode)
            ↓ debounce 8s, draft once
Bot → your DM
       💬 Carol wrote:
         > Hey, are you free Friday afternoon?

       📝 Suggested reply:
       Friday afternoon works — anywhere between 2 and 5pm?

       [✓ Send]   [✎ Edit]   [✕ Discard]
            ↓
Send    → delivered to the customer via your Business connection
Edit    → your next DM text becomes the outgoing message
Discard → dropped, the customer sees nothing

Safety properties

  • No auto-send exists. Every reply requires an owner button tap, even when can_reply is granted.
  • Owner-only buttons. Callbacks are authorized against the connection's owner_user_id; anyone else gets ⛔.
  • Drafts expire after 24h (configurable). Stale buttons no-op.
  • Without can_reply, the Send button is hidden — you're told to copy/paste manually instead of getting a button that silently fails.
  • Typing bursts coalesce — new messages within the debounce window supersede the prior draft, one draft per coherent thought.

Requirements

  • Hermes Agent with plugin Telegram-handler support (ctx.register_telegram_handler, hermes-agent PR #59159 / v0.18+)
  • A Telegram Business subscription on your personal account
  • Your Hermes Telegram bot with Business Mode toggled on in @BotFather
  • python-telegram-bot ≥ 21.1 (already installed with the Hermes Telegram platform)

Install

git clone https://github.com/NousResearch/hermes-official-plugins/tree/main/telegram-business \
    ~/.hermes/plugins/telegram-business
hermes plugins enable telegram-business

Restart the gateway (hermes gateway restart). Then:

  1. @BotFather → your bot → Business Mode → enable.
  2. Telegram → Settings → Business → Chatbots → add your bot → pick which chats it can see, and whether it can reply on your behalf (needed for the Send button).
  3. Message your bot /biz to confirm the connection is live.

Owner controls

Command Effect
/biz status dashboard
/biz pause / /biz resume global drafting kill switch
/biz off <chat_id> / /biz on <chat_id> per-customer-chat mute

Configuration

Optional block in ~/.hermes/config.yaml:

plugins:
  entries:
    telegram-business:
      debounce_seconds: 8        # coalesce typing bursts
      draft_ttl_hours: 24        # stale-draft expiry
      max_customer_text_chars: 4000
      owner_persona: >
        You are drafting replies for a freelance photographer.
        Friendly, brief, always suggest a concrete next step.

Drafting uses your active Hermes model through the host-owned plugin LLM surface (ctx.llm) — no separate API key.

State

Plugin-owned SQLite at ~/.hermes/telegram-business/state.db (two tables: connections + drafts). Hermes' core state is never touched. Delete the file to reset.

v1 limits

  • Text only — customer media (photos, voice, documents) is skipped; captions do trigger drafts.
  • No conversation history — each customer message is drafted in isolation. The Edit button absorbs the gap.
  • No persona learning from edits — your overrides go to the customer but don't train future drafts.

Tests

python3 -m pytest

37 tests covering connection lifecycle, draft supersession, debounce coalescing, all three button paths, edit capture, owner-scoped callback authorization, and /biz subcommands. No network, no live Telegram.

Credits

Based on the design and implementation from hermes-agent#30055, replatformed as a standalone plugin. Related earlier community proposals: #26654 by @evgyur (earliest submission), #35342 by @MilekhinAV, #46728 by @kxnkxv.

License

MIT

accent-picker✓ Official★ 276

OKLCH accent colour picker for the Hermes Desktop status bar: drag it and the whole theme retints live, with palette commands to reset to the theme default or copy the current colour. A theme-authoring tool; the colour is scratch state and is never persisted. Desktop-only (desktop/plugin.js inside the plugin SDK surface); no agent tools, hooks, middleware or env vars.

Desktop
blender✓ Official★ 276

Official Blender Lab MCP server over stdio, pinned to upstream v1.0.3, with a Blender workflow skill. Requires Blender 5.1+, its separately installed MCP add-on, Git and uv. First startup downloads Python dependencies; prepare the uv environment before connecting. Disclosure — tools execute arbitrary Python in Blender with your privileges; first start downloads the pinned Blender Lab MCP server and its Python dependencies with uv; at install Hermes looks for Blender in the standard install locations (Windows uninstall registry and Program Files, /Applications and the Steam library on macOS, PATH, flatpak, snap and Steam on Linux) and refuses the install when it is missing. Server discovery does not prove scene readiness.

Tools
claude-subscription-directsdk✓ Official★ 276

Experimental model provider that runs Hermes turns on a Claude Pro/Max subscription through the official Claude Code CLI (the Agent SDK path), so no separate API key or per-token bill. Requires the claude CLI installed and logged in; the plugin checks for it at load, in hermes model, in the pickers and before every request, and refuses cleanly with the install hint when it is missing. Disclosure — every turn is billed against your Claude subscription's Agent SDK allowance, and the provider inherits whatever account claude is logged into.

Models
hermes-memory-wiki✓ Official★ 276

Memory Wiki dashboard tab: browsable subject pages and daily logs derived from local session history, plus a read-only Persistent Memory (MEMORY.md / USER.md) audit panel.

Desktop
homeassistant✓ Official★ 276

Home Assistant gateway platform (state-change events in, persistent notifications and cron notify delivery out) plus the homeassistant toolset (ha_list_entities, ha_get_state, ha_list_services, ha_call_service). Formerly built into Hermes core; existing users are migrated automatically.

Platforms
langfuse✓ Official★ 276

Langfuse observability for Hermes: one trace per turn, one generation per LLM call (usage and cost from Hermes' own pricing, cache and reasoning tokens included), one observation per tool call and subagent. Content capture is sanitized by default (metadata-only and full are opt-in); sends traces only to the Langfuse project whose keys you set. Formerly built into Hermes core as observability/langfuse; existing users are migrated automatically.

General

← Back to the catalog · catalog built Oct 14, 2026