Hermes Agent Discord Presence
Native Discord Rich Presence (RPC) integration for Hermes Agent. Displays active workspace session titles, LLM model names, live token consumption, reasoning tokens, elapsed time, and real-time execution states directly on your Discord profile.
Officially listed in the Hermes Agent Curated Plugin Catalog.
Features
- Official Catalog Plugin: Listed in the official Nous Research Hermes Agent Plugin Catalog.
- In-Process Native Execution: Runs directly inside the Hermes Agent process using lifecycle hooks with zero background daemon overhead.
- Zero Setup: Uses a pre-configured Discord Application ID (
1530932637546451074) with default brand assets. Works immediately out of the box. - Profile-Aware: Automatically resolves the active profile's database (
$HERMES_HOME/state.db) rather than defaulting to the main profile. - Multi-Terminal Aware: When running multiple Hermes terminals or profiles simultaneously, Discord presence automatically follows the terminal actively in use, avoiding single-slot IPC race conditions.
- Terminal Multiplexer Aware: Integrates with herdr session sockets to follow the active focused pane when working across multi-pane split sessions.
- Hold-Timer & Activity Debouncing: Activity status indicators (e.g.
[Running Terminal Command],[Running Python Kernel],[Searching Files]) are held for a minimum of 5 seconds to comply with Discord IPC rate limits and ensure readability. - Reasoning Tokens Support: Tracks total token usage including modern reasoning tokens from thinking models (Gemini 3.8 Thinking, Claude 3.7, o3).
- Comprehensive Privacy Controls: Configurable toggles to mask session titles, hide model names, omit token counters, or run in stealth mode.
- Safe Truncation: Automatically trims long strings to 120 characters with ellipsis to prevent Discord 128-character IPC crashes.
Installation
Method 1: Official Plugin Catalog (Recommended)
Since the plugin is indexed in the official Hermes Agent catalog, install it directly by name:
hermes plugins install hermes-discord-rpc
Method 2: From GitHub Repository
Alternatively, install directly from the source repository:
hermes plugins install DarRahman/hermes-discord-presence
Enabling the Plugin
Enable the plugin via Hermes CLI:
hermes plugins enable hermes-discord-rpc
Or ensure hermes-discord-rpc is listed under plugins.enabled in your Hermes config.yaml (%LOCALAPPDATA%\hermes\config.yaml on Windows, ~/.hermes/config.yaml on Linux/macOS):
plugins:
enabled:
- hermes-discord-rpc
Restart Hermes Agent to apply changes.
Configuration & Privacy Controls
Configuration is managed via config.yaml located in your plugin directory (~/.hermes/plugins/hermes-discord-rpc/config.yaml or %LOCALAPPDATA%\hermes\plugins\hermes-discord-rpc\config.yaml):
discord_client_id: "1530932637546451074"
update_interval: 3.0
hold_duration: 5.0
presence:
large_image: "hermes_logo"
large_text: "Hermes Agent"
privacy:
# Title display mode:
# - "generic" : Show generic text ("Active Session") [Default]
# - "full" : Show original session title ("Session: <title>")
# - "hidden" : Omit title line completely (minimal 1-line layout)
session_title_mode: "generic"
# Privacy toggles:
hide_model: false # Mask active model name
hide_tokens: false # Omit token counters
hide_tool_status: false # Suppress [Running ...] tool tags
stealth_mode: false # Minimal stealth presence (app name and elapsed time only)
Architecture & Database Resolution
Hermes Agent Process
│
├──► Lifecycle Hooks (pre_llm_call, pre_tool_call, post_tool_call, on_session_end, on_session_finalize)
│ └──► Updates in-memory status with hold timer (5s minimum display)
│
├──► SQLite Reader (file:state.db?mode=ro)
│ └──► Reads active profile ($HERMES_HOME) session metadata, tokens, and reasoning tokens
│
└──► Background Sync Thread (pypresence IPC)
└──► Throttled updates to local Discord client socket
Profile Precedence
$HERMES_HOME/state.db(Authoritative for active profile).- Platform default home:
%LOCALAPPDATA%\hermes\state.dbon Windows,~/.hermes/state.dbon POSIX. - Legacy fallback:
~/.config/hermes/state.db.
Development & Testing
Install development dependencies:
pip install -r requirements.txt -r requirements-dev.txt
Run test suite:
python -m pytest
Validate Hermes plugin contract:
hermes plugins validate . --json
Contributing
Contributions are welcome. Please open an issue or submit a pull request:
- Fork the repository.
- Create your feature branch (
git checkout -b feature/my-feature). - Run test suite and validation (
pytest && hermes plugins validate .). - Commit your changes (
git commit -m 'feat: description'). - Push to your branch and submit a PR.
Authors & Contributors
- Badar Rahman (@DarRahman) - Author & Maintainer
- Marc Ocampo (@marcxxv) - Collaborator
- Hari (@Mr-Neutr0n)
- vergiLgood1 (@vergiLgood1)
License
This project is licensed under the MIT License.