two¢ents

Set it up

Install, pick a model and connect three platforms. Then spend the rest of the evening on access control.

1 · Install and pick a model

macOS / Linux / WSL2 / Termux

curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash

Windows (PowerShell)

iex (irm https://hermes-agent.nousresearch.com/install.ps1)

Run hermes once and connect a provider: Nous Portal, OpenRouter, OpenAI or your own endpoint. Start with a mid-tier model, since every message is a model call, and move up once you’ve seen the volume. Config is in ~/.hermes/config.yaml, secrets in ~/.hermes/.env. CLI args beat config.yaml, which beats .env, which beats defaults.

2 · Connect the three platforms

You need a Discord bot token, a Slack app and a WhatsApp link. Variable names and scopes change, so take them from each platform’s page in the messaging docs. Tokens go in ~/.hermes/.env, settings in that platform’s section of config.yaml. Then start the gateway:

Run the gateway (one daemon, all platforms)

hermes gateway

When it works in the foreground, install it as a systemd (Linux) or launchd (macOS) service so it survives reboots. Add Discord first, since it’s easiest to verify, then Slack, then WhatsApp.

3 · Lock it down before you invite it anywhere

Access is in or out: anyone who passes can command the agent. The gateway checks in this order: per-platform allow-all → DM-pairing approved list → platform allowlists → global allowlist → global allow-all → deny. Two rules:

Approve a paired user (per platform)

hermes pairing approve discord <code>

Pair yourself and your mods. Everyone else is community. There are no role tiers inside one instance. If mods need a different bot from the one you run, make a separate profile (hermes profile create mods, run with hermes --profile mods) with its own config, allowlist and toolsets. hermes gateway list shows gateways per profile. Most communities don’t need this on day one.

4 · Set the approval gates

Two settings in config.yaml:

5 · Cron

Jobs live in ~/.hermes/cron/, schedules can be plain language, and output can go to any connected platform (that’s how the pulse reaches your DMs). You’ll create the jobs in the prompts. These manage them:

Cron management

hermes cron list
hermes cron status
hermes cron run <job>      # fire one now to test it
hermes cron pause <job>
hermes cron remove <job>

Before building a changelog fetcher, try hermes skills search and hermes skills install. They pull published skills from the Skills Hub and scan them on install.

Disagree? Pin a note on it →