Skip to content

Hermes Agent

Install the openquok-core skill and OpenQuok CLI on a Hermes Agent host (Telegram, Discord, Slack, and more).

7 min read

Connect your agent today

Draft from chat, review in your calendar, and publish only what you approve.

Start for $0

Prerequisites

  • Shell access on the host where Hermes runs terminal commands (local machine, Docker, SSH, Daytona, or Modal).
  • A working Hermes chat before adding skills — run hermes and confirm the agent responds.
  • For OAuth device login: you can authorize the sign-in link on your phone when the agent asks you to log in.

OAuth mobile login

Installation

Install Hermes Agent

On Linux, macOS, WSL2, or Android (Termux):

curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
source ~/.bashrc   # or source ~/.zshrc

On native Windows (PowerShell):

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

Then choose a provider — fastest path with Nous Portal:

hermes setup --portal

Or run hermes model to pick Anthropic, OpenRouter, OpenAI, Gemini, or a custom endpoint. See the Hermes quickstart for provider tables and troubleshooting.

Connect a messaging gateway (optional)

After CLI chat works, connect Telegram, Discord, Slack, WhatsApp, or another platform:

hermes gateway setup

Check status with hermes gateway status. Messaging is optional for OpenQuok — the agent can draft and schedule from the terminal alone.

Install the global OpenQuok CLI

In the same environment Hermes uses for shell tools:

npm install -g @openquok/auto-cli@latest
openquok --version

Production auth uses the API at https://cli-auth.openquok.com and opens the browser on https://www.openquok.com/cli/device/verify.

Install the openquok-core skill

The skill file lives at agent/skills/openquok-core/SKILL.md in the monorepo. Hermes loads skills from ~/.hermes/skills/. Choose one install path:

Start a new Hermes session after install so skill descriptions reload. You should see ~/.hermes/skills/openquok-core/SKILL.md on disk. In the Hermes CLI, hermes skills list or /reload-skills confirms the skill is loaded.

Authenticate

Recommended (Telegram / messaging): device OAuth in two CLI steps — Hermes stops the shell after the first JSON from auth:login --json, so credentials are never stored unless you use --no-poll and a follow-up poll:

openquok auth:login --json --no-poll
# open verification_uri_complete on your phone → Authorize → tell the agent you're done
openquok auth:login:poll --device-code "<device_code from stdout>"
openquok auth:status

Alternative for fully headless hosts (VPS, Docker, Telegram bots): rotate a programmatic token from the OpenQuok dashboard (AccountSettingsDevelopersAccess):

export OPENQUOK_API_KEY=opo_your_programmatic_token
openquok auth:status

Confirm the agent can run commands

After auth:

openquok integrations:list

Hermes + messaging notes

  • Start a new chat session after installing the skill or upgrading the CLI so Hermes reloads skills and checks openquok --version once at session start.
  • If the agent reports an old CLI version after you upgraded, run command -v openquok and which -a openquok — another binary may be earlier on PATH.
  • Hermes separates secrets (~/.hermes/.env) from config (~/.hermes/config.yaml). export OPENQUOK_API_KEY in your shell profile before starting hermes gateway.
  • On Telegram, use auth:login --json --no-poll then auth:login:poll after you authorize on your phone — not auth:login --json alone.
  • For posting with images in chat, the user must provide a file or an image URL for upload-from-url.

Real World Use case: Chat model vs image generation

Hermes uses two separate systems:

RoleConfigured viaExample
Main chat (Telegram, CLI, scheduling)hermes modelmodel.default in ~/.hermes/config.yamlclaude-sonnet-4-6
Image generation (on demand)hermes toolsimage_gen in config.yamlfal-ai/nano-banana-pro via the image_generate tool

Do not set an image-only model (for example gemini-3-pro-image) as your main Telegram model. Hermes will fail with Provider authentication failed.

Set the main chat model

hermes model

Pick Anthropic and a chat model such as claude-sonnet-4-6. The terminal handles credentials for you:

  • OAuth — Claude Max plan with extra usage credits (Hermes routes as Claude Code; see the AI Providers guide).
  • API key — paste your key when prompted. You can also run hermes auth add anthropic --type api-key or hermes config set ANTHROPIC_API_KEY sk-ant-... (saved to ~/.hermes/.env).
  • Claude Code — if you already use Claude Code on the host, Hermes can auto-detect those credentials.

Hermes writes the result to ~/.hermes/config.yaml:

model:
  provider: anthropic
  default: claude-sonnet-4-6

If you use hermes setup --portal (Nous Portal) or OpenRouter instead, pick anthropic/claude-sonnet-4.6 with provider: nous or provider: openrouter — no separate Anthropic API key needed on Portal.

In an existing session you can switch with /model claude-sonnet-4-6 (native Anthropic) or /model anthropic/claude-sonnet-4.6 (aggregator).

See Configuring models and AI Providers for provider tables and auxiliary overrides.

Configure image generation

Image generation is not part of the OpenQuok skill. Set it up once:

hermes tools

Open Image Generation, choose a backend:

  • Nous Subscription — if you use hermes setup --portal (no separate FAL key).
  • FAL.ai — add FAL_KEY to ~/.hermes/.env (get a key at fal.ai).

Pick your image model. For Gemini-class quality and text in images, a common choice is fal-ai/nano-banana-pro. For speed and low cost, the default fal-ai/flux-2/klein/9b is fine.

Hermes saves the selection to config.yaml:

image_gen:
  model: fal-ai/nano-banana-pro
  use_gateway: false

Set use_gateway: true when using Nous Subscription instead of a direct FAL key.

Then ask in Telegram or the CLI:

Generate a square image of a product hero shot on a clean white background

Hermes routes that to image_generate using the configured image_gen.model — your main chat model stays on Sonnet.

Full model list, aspect ratios, and editing: Hermes image generation.

Auxiliary models (optional)

Hermes can route side tasks (vision analysis, session titles, context compression) to a different model than main chat. Run hermes modelConfigure auxiliary models, or edit the auxiliary: block in config.yaml.

Run on a VPS or serverless host

Hermes supports six terminal backends: local, Docker, SSH, Daytona, Singularity, and Modal. Mount a persistent ~/.hermes/ volume (or set HERMES_HOME), install openquok-core and the global CLI in the container shell, then authenticate.

On headless hosts prefer OPENQUOK_API_KEY or auth:login --json so the user opens verification_uri_complete on another device. See the Hermes installation guide for per-user vs root layout and service-account installs.

Troubleshooting

Skill source on GitHub

agent/skills/openquok-core/SKILL.md — authoritative instructions the skill installer copies.
Search documentation
Find a docs page
Discord Support