3
Platforms Personalities QuickCommands
Alan Wizemann edited this page 2026-04-27 13:00:18 +02:00

Platforms / Personalities / Quick Commands

Three separate Configure-section items grouped together because they all shape how Hermes presents itself.

Platforms

Native GUI setup for all 13 messaging platforms Hermes supports — no more hand-editing .env and config.yaml:

Telegram, Discord, Slack, WhatsApp, Signal, Email, Matrix, Mattermost, Feishu, iMessage, Home Assistant, Webhook, CLI.

Per-platform forms:

  • Credentials → ~/.hermes/.env via HermesEnvService (preserves comments, supports non-destructive unset by commenting-out).
  • Behavior toggles → ~/.hermes/config.yaml via the typed config struct.
  • WhatsApp + Signal pairing use an inline SwiftTerm terminal for QR scan and signal-cli daemon management.

Connectivity dots next to each platform reflect the gateway's last reported status:

  • Green — connected and healthy.
  • Orange — configured but offline.
  • Grey — not configured.
  • Red — error.

Personalities

A personality is a SOUL.md file that shapes Hermes's voice, defaults, and internal rules. Personalities live under ~/.hermes/personalities/<name>/.

What you can do here:

  • List defined personalities.
  • Pick the active one — written to personality: in config.yaml.
  • Edit SOUL.md inline with markdown preview. ⌘S saves.
  • Create / rename / delete personalities.

Switching personality takes effect on the next agent turn — no restart needed.

Quick Commands

Custom /command_name shell shortcuts. You define a name, a shell command (with optional arg substitution), and an optional description; the command becomes invocable from anywhere Hermes accepts commands.

Safety: the editor scans for dangerous patterns (rm -rf, mkfs, fork bombs, sudo, suspicious eval) and warns before saving. The check is heuristic — it's a guard against typos, not a sandbox.

Quick Commands live in config.yaml under the quick_commands key.


Last updated: 2026-04-25 — Scarf v2.5.0 (no behavior changes since v2.0.1; refresh footer)