Getting started
Hermes Agent is an open-source AI agent built by Nous Research. You can chat with it in a terminal, a desktop app, or through messaging apps like Telegram and Discord, and it can run commands, edit files, browse the web and use other tools on your behalf.
Its main selling point is a learning loop: it keeps curated memory about you and your setup, saves reusable procedures as skills, and can search its own past conversations.
Hermes Agent README (GitHub)↗ (opens in a new tab)
Asked often by the community
Yes. The software itself is free and open source under the MIT license. What you pay for is the AI model behind it: usage fees from whichever provider you connect, such as OpenRouter or OpenAI, or a Nous Portal plan if you choose that route.
For free models, Nous Portal has a $0 Free plan. Sign in with hermes model (pick Nous Portal) or hermes setup --portal, choose the Free plan in the browser, then pick a model marked as free tier, such as a variant with a :free tag. A fresh Hermes Desktop install can also start you on a free tier before you sign in, and hermes auth upgrade in a terminal (or /login in a chat) signs you in later.
If you run a local model on your own hardware, there are no model fees at all. The free tier is rate-limited, so heavy agent use usually needs a paid plan or your own provider key.
Nous Portal↗ (opens in a new tab) Run Nemotron 3 Ultra free in Hermes Agent↗ (opens in a new tab) Nous free-tier sign-in code (GitHub)↗ (opens in a new tab)
Asked often by the community
If you don't want a terminal, install Hermes Desktop: first-run onboarding gets you to a first message quickly, and you can connect Nous Portal (one sign-in for models plus web search, images, voice and a browser) or pick a provider later. If you like terminals, run the installer, then hermes setup.
Then follow the official Learning Path page, which has reading orders by level (beginner, intermediate, advanced) and by goal: coding assistant, Telegram or Discord bot, automation, a team of bots, or building your own skills. Beginners need about an hour: install, quickstart, CLI basics and configuration.
For help, the official channels are the docs (including the FAQ & Troubleshooting page), GitHub issues and the Nous Research Discord.
Learning Path↗ (opens in a new tab) Hermes Desktop↗ (opens in a new tab) FAQ & Troubleshooting↗ (opens in a new tab)
Asked often by the community
They are all front ends to the same agent, with the same config, keys, memory, skills and session history, so you can start a session in one and resume it in another. Pick by situation.
Hermes Desktop (hermes desktop) is the most complete: multiple chat tabs and windows, file browser and previews, Git review and worktrees, Bot Mode, voice, scheduled jobs and settings without YAML. The CLI (hermes) and TUI (hermes --tui) suit terminal users and servers. The web dashboard (hermes dashboard) is a browser admin panel for config, keys, sessions, logs, cron and skills.
Messaging apps through the gateway (Telegram, Discord, Slack and many more) are how you reach Hermes from your phone and run it around the clock. A few commands are surface-specific; for example /handoff and /browser connect are CLI-only, while /sethome and /restart are messaging-only.
Hermes Desktop↗ (opens in a new tab) TUI↗ (opens in a new tab) Slash Commands Reference↗ (opens in a new tab)
Asked often by the community
Yes. Settings > Appearance has theme presets plus a live VS Code Marketplace search that converts any color theme into a Desktop theme, a Chat Font (desktop.font_family, including readability fonts like OpenDyslexic once installed) and a Terminal Font for the embedded terminal. Most bindings can be remapped in Settings > Keyboard Shortcuts.
For layout, the layout editor (titlebar button or Cmd/Ctrl+Shift+\) offers Simple (chat-first) and Advanced modes and saved layouts, and Hide keeps panes like the in-app Browser or Terminal running while collapsed. The in-app browser has a comment mode for annotating live pages.
The app's interface language can be switched in-app, and language packs can add or override UI languages. That only changes interface text; to have the agent answer in another language, just ask it to. Desktop plugins can add your own panes, pages and commands.
Hermes Desktop↗ (opens in a new tab) Language Packs↗ (opens in a new tab) Desktop Plugin SDK↗ (opens in a new tab)
The docs list macOS on Apple Silicon, Windows 10 and 11 (native, no WSL required), Linux, WSL2 and Docker as top-priority (Tier 1) platforms. Nix and Android via Termux (aarch64 only) are best-effort Tier 2. The Windows MSIX desktop package needs Windows 11 22H2 or later; the PowerShell installer covers Windows 10.
Intel Macs: stable releases build the desktop bundle for Apple Silicon only, so on an Intel Mac install the CLI with the regular installer and run hermes desktop. 32-bit Macs are unsupported.
Docker hosts such as a NAS or unRAID box can run the official nousresearch/hermes-agent image with a data folder mounted at /opt/data; update by pulling a new image. Installing through pip/PyPI, Homebrew or the AUR is not supported.
Platform Support↗ (opens in a new tab) Docker↗ (opens in a new tab) Windows (Native) Guide↗ (opens in a new tab)
Start with something that recurs and that you'd otherwise do by hand, because that's where memory, skills and scheduling pay off. Good first projects: a morning briefing delivered to your phone (/blueprint morning-brief), a news or paper digest, research fanned out to subagents, turning notes into a weekly plan, or an inbox and calendar helper through the Google Workspace skill.
The docs' Automation Blueprints and Guides sections have ready recipes, from a daily briefing bot to GitHub PR review, uptime checks and revenue summaries. On a computer, it's also a full coding and file assistant in your terminal or Desktop.
Tell it about yourself and your setup early, so it can write useful memory, and correct it when it gets something wrong; that's how it improves.
Automation Blueprints↗ (opens in a new tab) Daily Briefing Bot↗ (opens in a new tab) Learning Path↗ (opens in a new tab)
For a normal installer-based (source) install, run hermes update. It moves you to the latest published stable release, refreshes dependencies, syncs bundled skills to every profile and restarts running gateways. hermes update --check previews first, and you can also send /update from a connected messaging app.
Hermes Desktop checks for updates in the background and offers a one-click update (About > Update now, or Update Hermes in the command palette). The app and the backend it talks to update separately; when you're connected to remote gateways, that button updates the backends first and the app last.
Other install types update their own way: Docker users pull a new image and recreate the container, Termux uses pkg upgrade hermes-agent, and Microsoft Store installs update through the Store. Check your version with hermes --version.
Updating & Uninstalling↗ (opens in a new tab) Hermes Desktop↗ (opens in a new tab)
In a terminal, hermes model is the full picker: add providers, sign in or enter keys, and set your default model. Inside a chat, /model switches between providers you've already set up, for example /model provider:model; add --global to keep it beyond the current session.
In Hermes Desktop the model picker sits in the composer, left of the microphone. A pick there applies to the current chat and follows you to new chats on that device, but doesn't change your saved default; set that in Settings > Model > Main model and click Apply. Each profile has its own default.
Switching mid-conversation makes the next message re-read the whole conversation at full price, so on long chats a fresh session on the new model is often cheaper.
Configuring Models↗ (opens in a new tab) Hermes Desktop↗ (opens in a new tab) FAQ & Troubleshooting↗ (opens in a new tab)
Start with hermes import-agent. It auto-detects ~/.claude or ~/.codex, or you can name one: hermes import-agent claude-code or hermes import-agent codex. It shows a plan before writing anything, and --dry-run never touches disk.
For Claude Code it maps global CLAUDE.md into memory, Bash permission rules into command_allowlist and approvals.deny, MCP servers into mcp_servers, and skills into ~/.hermes/skills/claude-code-imports/. Your project instruction files keep working too, because Hermes reads CLAUDE.md and AGENTS.md as context files.
You don't have to choose one or the other. Hermes ships claude-code and codex skills that let it hand coding work to those CLIs, and hermes acp puts Hermes inside editors such as VS Code and Zed.
Import from Other Agents↗ (opens in a new tab) Context Files↗ (opens in a new tab) ACP Host Integration↗ (opens in a new tab)
Largely, yes. Describe what you want in chat and it can create scheduled jobs, install and write skills, and walk you through connections such as Google Workspace, whose setup is agent-driven. The bundled hermes-agent skill teaches it how Hermes itself is configured and extended.
Some steps still need you: signing in to providers (hermes model or Desktop's Providers page), creating bot tokens with services like Telegram's @BotFather, approving risky commands, and confirming blueprint jobs before they're scheduled. Those are deliberate checkpoints.
After it changes something, confirm it worked: hermes cron list for jobs, hermes skills list for skills, hermes doctor for overall health.
hermes-agent skill (GitHub)↗ (opens in a new tab) Google Workspace skill↗ (opens in a new tab) Automation Blueprints Catalog↗ (opens in a new tab)
If it's published as a profile distribution (a git repository), install it with hermes profile install github.com/<owner>/<repo> --alias. It brings the author's SOUL.md, config, skills, cron jobs and MCP connections; your own credentials, memories and sessions stay on your machine. hermes profile update <name> pulls the author's next version and keeps your data, and hermes profile info <name> shows its manifest.
If someone sends you a single .tar.gz export instead, run hermes profile import <file> --name <name>, or /import in chat, or Import profile… in Desktop. API keys are stripped from exports, so sign in again.
Read what you're installing first. A profile can schedule jobs and enable tools, so treat one from a stranger like any other third-party code.
Profile Distributions↗ (opens in a new tab) Profiles↗ (opens in a new tab) CLI Commands Reference↗ (opens in a new tab)
On Linux, macOS or WSL2, run: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash. On native Windows, run iex (irm https://hermes-agent.nousresearch.com/install.ps1) in PowerShell. Desktop app packages are also available for macOS and Windows.
Afterwards reload your shell (for example source ~/.bashrc) and type hermes to start chatting. Don't run the installer with sudo; it installs into your user account.
Installation↗ (opens in a new tab) Hermes Agent README (GitHub)↗ (opens in a new tab) FAQ & Troubleshooting↗ (opens in a new tab)
Run hermes uninstall. For source installs, preview what it will do first with hermes uninstall --dry-run. By default it can keep your configuration and data; --full also removes data, and --data removes user data only. Make a backup first, since these are destructive.
Desktop and package installs are removed with their own tools, for example Windows Settings for the MSIX/Store app or moving the macOS app to Trash.
Updating & Uninstalling↗ (opens in a new tab)
Yes. hermes setup detects ~/.openclaw and offers to migrate, or you can run hermes claw migrate anytime. Add --dry-run to preview, or --preset user-data to skip infrastructure config (no preset imports secrets without --migrate-secrets).
It can bring over your SOUL.md persona, MEMORY.md and USER.md entries, user-created skills (into ~/.hermes/skills/openclaw-imports/), command allowlist, messaging settings, allowlisted API keys and, with --workspace-target, AGENTS.md.
Hermes Agent README (GitHub)↗ (opens in a new tab) Migrate from OpenClaw↗ (opens in a new tab)
There is an official Termux package for 64-bit ARM (aarch64) Android devices. You add a signed APT repository, install it with pkg install hermes-agent, then run hermes setup. The package bundles Python, Node.js, ffmpeg and the other runtime pieces, so nothing has to compile on the phone. Don't use the desktop install.sh there.
Check the Termux page before you start: at the time of writing it carries a warning that the Termux package is currently broken and a fix is in progress.
Android / Termux↗ (opens in a new tab) Platform Support↗ (opens in a new tab)
Either works. Native Windows needs no WSL, Cygwin or Docker: the PowerShell installer puts Hermes in %LOCALAPPDATA%\hermes without admin rights, and the CLI, TUI, messaging gateway, cron, browser tool, MCP servers and web dashboard all run natively. hermes gateway install registers a Scheduled Task so the gateway starts at login.
WSL2 suits people who want a POSIX environment, for example fork semantics or Linux-style file watchers. The two installs coexist, because WSL keeps its data in ~/.hermes.
Windows (Native) Guide↗ (opens in a new tab) Windows (WSL2) Guide↗ (opens in a new tab)
Memory & context
Asked often by the community
Start with built-in memory. It's always on, costs nothing extra, and together with session search covers most personal use. An external provider is additive: it runs alongside MEMORY.md and USER.md, never replacing them, and only one can be active at a time.
Add one when you want richer recall across many sessions or memory shared between profiles. The docs cover Honcho, Hindsight, Supermemory, Mem0, OpenViking and Holographic (from the plugin catalog) plus bundled RetainDB and ByteRover, with a comparison table. Run hermes memory setup to pick and configure one, hermes memory status to check it, and hermes memory off to go back.
For a knowledge base you can read and edit yourself, an Obsidian vault works well alongside memory: the bundled Obsidian skill lets the agent read, search and write notes there. Keep durable facts in memory and long notes in the vault.
Memory Providers↗ (opens in a new tab) Persistent Memory↗ (opens in a new tab) Obsidian skill↗ (opens in a new tab)
Asked often by the community
Long conversations fill the model's context window, so Hermes compresses older history automatically, by default at 50% of the context limit (compression.threshold). Run /context (or click the context meter in Desktop) to see what is filling the window: system prompt, tool schemas, skills, MCP, memory and the conversation itself. /context all adds per-skill and per-toolset costs.
The warning “Context is over the compression threshold … but compression is currently blocked” means Hermes wanted to compress but couldn't at that moment, so the session will keep growing until the provider refuses it. Do what it says: /compress to retry now, or /new to start fresh. Memory and the session history stay searchable after a reset.
To prevent it, start a new session when you switch tasks, use /compress here to keep the latest exchanges verbatim, and trim MCP servers or toolsets that take a big share. If limits hit surprisingly early, check the context length Hermes detected at startup.
Slash Commands Reference↗ (opens in a new tab) Troubleshooting: My Agent Feels Dumber↗ (opens in a new tab) Configuration↗ (opens in a new tab)
Built-in memory is two small files in ~/.hermes/memories/: MEMORY.md for the agent's own notes about your environment and lessons learned, and USER.md for your preferences and communication style. The agent edits them with its memory tool. Every session also lands in a searchable history the agent can look back through.
Both files are loaded into the system prompt as a frozen snapshot when a session starts, so something saved mid-session shows up in the next session, not the current one. Starting a new session at natural breaks (a finished task, a new topic) is what lets memory pay off.
Memory belongs to a profile, not to an app. The CLI, Desktop and your messaging chats on the same profile share the same memory and session history; a different profile (or Bot Mode bot) has its own.
Persistent Memory↗ (opens in a new tab) Profiles↗ (opens in a new tab)
SOUL.md in your Hermes home is who the agent is (tone, style, personality, standing instructions), and you edit it yourself. USER.md (who you are) and MEMORY.md (what the agent has learned) live in ~/.hermes/memories/ and are maintained by the agent through its memory tool. AGENTS.md or .hermes.md in a project holds that project's rules.
Keep each one short and on topic. The memory files are capped (about 2,200 characters for MEMORY.md and 1,375 for USER.md), so they suit durable facts, not long procedures; put step-by-step workflows in a skill, which only loads when needed. Project details belong in that project's AGENTS.md, not in SOUL.md.
A common mix-up: facts about yourself written into SOUL.md never feed USER.md. To have them remembered, just tell the agent. For a temporary change of tone, use /personality instead of editing files, and start a new session after editing SOUL.md so it loads cleanly.
Which File Does What?↗ (opens in a new tab) Persistent Memory↗ (opens in a new tab) Personality & SOUL.md↗ (opens in a new tab)
The memory files are plain text, so you can open and edit them directly: ~/.hermes/memories/MEMORY.md and USER.md (inside the profile's folder for other profiles). You can also ask the agent to add, patch or remove an entry, or use /journey (Desktop's Star Map) to browse, edit or delete learned memories and skills.
Deleting an entry removes it from what is loaded into future sessions, but not from everywhere. Past conversations stay in the session history the agent can search (hermes sessions delete or hermes sessions prune removes them), and an external memory provider may hold its own copy, so check it there too.
To stop memory entirely, set memory.memory_enabled and memory.user_profile_enabled to false in config.yaml. To review writes before they land, set memory.write_approval: true and use /memory pending, /memory approve and /memory reject.
Persistent Memory↗ (opens in a new tab) CLI Commands Reference↗ (opens in a new tab) Slash Commands Reference↗ (opens in a new tab)
No, not by default. Each profile has its own memory, sessions and skills, and the docs warn against running two agents on one profile or Hermes home: both write memory automatically and load each other's writes at session start, so the stored state degrades with every session. There's no conflict resolution between profiles because they never write to the same store.
Run one agent per profile. For genuinely shared memory, connect the profiles to one external memory provider. Honcho, for example, keeps one shared user across all profiles in a workspace while each profile keeps its own view. To seed a new profile with existing memories and sessions, hermes profile create accepts --clone-all.
FAQ & Troubleshooting↗ (opens in a new tab) Memory Providers↗ (opens in a new tab) Profiles↗ (opens in a new tab)
Start a new one (/new) whenever you switch tasks or topics. Shorter sessions are cheaper and faster, and a fresh session is when updated memory loads. Nothing useful is lost: past sessions stay searchable by the agent. Continue a session (hermes --continue, /resume) when you're picking up the same piece of work.
Messaging chats are one long-running session that survives restarts, so on Telegram or Discord the reset is up to you; send /new at natural breaks. In a Bot Mode bot's own chat, /new compacts the conversation instead of forking it.
To tidy up, hermes sessions prune deletes sessions by filters such as --older-than 30d or --source telegram (default: older than 90 days; try --dry-run first), hermes sessions archive hides matching sessions without deleting, and hermes sessions optimize reclaims disk space.
Persistent Memory↗ (opens in a new tab) CLI Commands Reference↗ (opens in a new tab) Bot Mode↗ (opens in a new tab)
Not through Hermes' built-in memory files, which belong to one profile. The route is a memory service that both agents connect to. Hermes supports several external memory providers, including Honcho, Supermemory and Hindsight; if the other agent has an integration for the same service, point both at the same account or workspace.
The Nous team has said on X that Honcho, Supermemory and Hindsight each offer a Claude Code plugin as well as a Hermes provider. Check each service's own docs for the current integrations.
A simpler shared store is a folder of notes both agents can read, such as an Obsidian vault, or project rules in AGENTS.md, which Hermes and many coding agents read automatically.
Memory Providers↗ (opens in a new tab) Context Files↗ (opens in a new tab) Nous Research team reply on X (October 2026)↗ (opens in a new tab)
Yes, built-in memory is deliberately small. MEMORY.md is capped at 2,200 characters (about 800 tokens) and USER.md at 1,375 characters (about 500 tokens). The limits are memory.memory_char_limit and memory.user_char_limit in config.yaml.
Memory doesn't silently drop old entries when full. The write fails and the agent has to consolidate or remove entries to make room. For longer history, it relies on session search.
Persistent Memory↗ (opens in a new tab)
First check the file. Memory only saves when the model actually calls the memory tool, and weaker or small local models sometimes say "saved" without doing it. Other common causes: writes are staged because write_approval is on, you're on a different profile, memory is disabled, or the session that needs it started before the save.
Start a fresh session with /new after saving so the updated snapshot loads.
Persistent Memory↗ (opens in a new tab)
Yes. External memory providers run alongside the built-in files, never replacing them. RetainDB and ByteRover ship with Hermes; Honcho, Hindsight, Supermemory, Mem0, OpenViking and Holographic install from the plugin catalog with hermes plugins install <name>.
Run hermes memory setup to choose and configure one, hermes memory status to check what's active, and hermes memory off to disable it.
Persistent Memory↗ (opens in a new tab) Memory Providers↗ (opens in a new tab)
Yes. Every CLI and messaging session is stored in a SQLite database at ~/.hermes/state.db with full-text search, and the agent has a session_search tool to find and scroll through past conversations. Searching costs no extra LLM calls.
You can browse sessions yourself with hermes sessions list, and filter it with options such as --source telegram.
Persistent Memory↗ (opens in a new tab) Sessions↗ (opens in a new tab)
Use hermes --continue (or -c) to resume the most recent CLI session; in each terminal it prefers that terminal's own last session. Use hermes --resume <id or title> for a specific one, or --resume latest.
Session IDs are shown when you exit and in hermes sessions list. Inside a session, /resume <title> works too.
Sessions↗ (opens in a new tab)
Context files are project instructions Hermes loads automatically. It looks for .hermes.md or HERMES.md, AGENTS.override.md, AGENTS.md, CLAUDE.md and .cursorrules, and loads only the first type it finds. Inside a git repo, AGENTS.md files from the repo root down to your working directory are combined.
SOUL.md is separate. It sets the agent's global personality and lives in your Hermes home folder.
Context Files↗ (opens in a new tab)
Use an @ reference. @file:path/to/file.py injects a file (append :10-25 for a line range), @folder: a directory listing, @diff and @staged your git changes, @git:5 the last five commits with patches, and @url: a fetched web page. In the interactive CLI, typing @ offers tab completion.
References are capped to protect the context window: a warning at 25% of the context length and a refusal at 50%. Sensitive paths are always blocked from @file: to avoid exposing credentials.
Context References↗ (opens in a new tab)
Skills, plugins & MCP
Asked often by the community
Skills: use hermes skills browse or hermes skills search <query>, preview with hermes skills inspect <id>, then hermes skills install <id>, which runs a security scan first. Official optional skills use ids like official/security/1password; other sources include skills.sh, GitHub repos and direct SKILL.md URLs. In Hermes Desktop the Skills tab lists the whole optional catalog with one-click Install. hermes skills check and hermes skills update keep hub skills current.
Plugins: hermes plugins search <term> searches the curated plugin catalog and hermes plugins install <name> installs the reviewed, SHA-pinned version. In Desktop the same catalog lives under Capabilities > Plugins, with Official, Verified and Community tier filters.
There's no single must-have list. Hermes already ships dozens of bundled skills (GitHub, Google Workspace, Obsidian, PDF and Office files, research and more), so start with those, then add an official skill or plugin when a specific task needs it. Disable what you don't use with hermes skills config and hermes tools, since every enabled tool costs context.
Skills System↗ (opens in a new tab) Plugin Catalog↗ (opens in a new tab) CLI Commands Reference↗ (opens in a new tab)
Asked often by the community
Yes. With its skill_manage tool the agent creates, updates and deletes skills, for example after working out a multi-step workflow, finding a fix after dead ends, or being corrected by you. A background review after a session can also suggest or stage skill changes. The docs call this procedural memory.
It's a judgment call by the model, so don't rely on it happening silently. To make it explicit, ask ("save this as a skill") or use /learn followed by what to learn from: a folder, a URL, notes, or the workflow you just walked it through. It then writes a SKILL.md to the house standards.
It can build plugins too, such as Desktop UI plugins in ~/.hermes/desktop-plugins/, guided by the bundled hermes-agent skill, but review plugin code before you enable it because plugins aren't sandboxed. If you'd rather approve skill changes first, turn on skills.write_approval.
Skills System↗ (opens in a new tab) Slash Commands Reference↗ (opens in a new tab) Hermes Desktop↗ (opens in a new tab)
The agent's web_search and web_extract tools run on a backend you choose with hermes tools (in Desktop, Capabilities > Tools > Web Search & Scraping). You don't need a paid key: DDGS (DuckDuckGo) needs none and self-hosted SearXNG is free, though both are search-only, and Firecrawl, Exa, Parallel and Tavily have keyless or free options. A Nous Portal plan includes managed search through its Tool Gateway.
You can mix providers per capability, for example SearXNG for search and Firecrawl for extraction. For logged-in or interactive pages, the agent uses its browser tools instead.
DeepSeek Search & Fetch isn't a built-in backend, but the plugin catalog lists community plugins that add it, such as deepseek-search-fetch (hermes plugins install deepseek-search-fetch). It needs your own DeepSeek API key and is billed to your DeepSeek balance.
Web Search & Extract↗ (opens in a new tab) Nous Tool Gateway↗ (opens in a new tab) deepseek-search-fetch catalog entry (GitHub)↗ (opens in a new tab)
Not out of the box. Hermes' built-in computer use drives desktops (macOS, Windows, Linux), and your phone is normally just a chat client through Telegram, WhatsApp or another messaging app.
The plugin catalog does list community plugins for it. phone-harness drives an iPhone through iPhone Mirroring on a Mac, an Android phone over adb, or a cloud phone, and android-emulator controls a headless Android emulator on Linux. These are community-tier, not maintained by Nous, and act on your real phone and accounts, so read their disclosures first; phone-harness sends each action to Hermes' approval prompt unless you opt in to auto-run.
Android users can also run Hermes itself on the phone through the official Termux package (64-bit ARM only).
Plugin Catalog↗ (opens in a new tab) phone-harness catalog entry (GitHub)↗ (opens in a new tab) Android / Termux↗ (opens in a new tab)
For a skill, call it directly: every installed skill is a slash command (/<skill-name>, or /skill <name>), which loads it for that message. Naming it in your request also helps, as does attaching skills to scheduled jobs with --skill.
For tools, change what's available. Web search and extraction run on whatever backend you pick in hermes tools (for example SearXNG or DDGS instead of Firecrawl), and the agent can't fall back to an unselected one. Turn off toolsets you don't want with hermes tools, or /tools disable <name> for the current session.
If a preference should always apply, write it into SOUL.md or the project's AGENTS.md ("use the X skill for Y").
Skills System↗ (opens in a new tab) Nous Tool Gateway↗ (opens in a new tab) Slash Commands Reference↗ (opens in a new tab)
Skills scale well. The agent sees only a short index of names and descriptions and loads a skill's full instructions when it needs one, so hundreds of installed skills cost little.
Tools are different: core tool schemas are sent on every call. MCP and plugin tools are deferred by default through Tool Search, which lets the model look up and load a tool's schema only when it needs it, but every enabled toolset still adds weight.
To see your real cost, run /context all (per-skill and per-toolset costs) or hermes prompt-size (the fixed prompt sent on every call). Then disable what you don't use with hermes tools and hermes skills config.
Skills System↗ (opens in a new tab) Tool Search↗ (opens in a new tab) Slash Commands Reference↗ (opens in a new tab)
From the curated catalog: run hermes mcp to pick interactively, or hermes mcp install <name> to add one; hermes mcp login <name> handles servers that need OAuth. In Hermes Desktop, Capabilities > Connectors has the catalog and an add-server form; after installing, start a new chat and ask for it by name.
For a custom server, add it under mcp_servers in ~/.hermes/config.yaml. Local servers use command and args; remote ones use url and optional headers. For a remote OAuth server you can also run hermes mcp add --url <url> --auth oauth <name>. Hermes discovers the tools at startup, and /reload-mcp picks up changes.
Use the per-server tools.include and tools.exclude settings to expose only the tools you need.
MCP (Model Context Protocol)↗ (opens in a new tab) Manage Hermes Cloud with MCP↗ (opens in a new tab) Desktop Connectors pages (GitHub)↗ (opens in a new tab)
Hermes has no built-in Composio integration, and it isn't in the official MCP or plugin catalogs. If a service offers an MCP server you trust, you can add it like any custom MCP server under mcp_servers.
What Hermes does provide: hosted connectors (apps such as Gmail reached through the Nous Tool Gateway, managed with hermes connectors), a curated MCP catalog with vendor-hosted servers for Atlassian, Notion, Linear, Stripe and others (hermes mcp install <name>), the plugin catalog, and bundled skills like Google Workspace and Notion.
Prefer the route that grants the least access for the job, and connect only the accounts the agent needs.
Nous Tool Gateway↗ (opens in a new tab) MCP (Model Context Protocol)↗ (opens in a new tab) CLI Commands Reference↗ (opens in a new tab)
Skills are on-demand instruction documents, each a folder with a SKILL.md file, that teach the agent how to do a particular task. They follow the agentskills.io open standard. The agent only sees a short list of names and descriptions until it actually needs a skill, which keeps token use down.
Every installed skill also works as a slash command, such as /github-pr-workflow.
Skills System↗ (opens in a new tab)
All skills live in ~/.hermes/skills/. Bundled skills are copied there on install, and hub-installed and agent-created skills land there too. You can also point Hermes at extra external skill directories.
Each profile gets its own skills folder, and hermes update adds newly bundled skills to every profile.
Skills System↗ (opens in a new tab) FAQ & Troubleshooting↗ (opens in a new tab)
Plugins are Python packages in ~/.hermes/plugins/ (a plugin.yaml manifest plus code) that add tools, hooks and integrations directly inside Hermes. Install them with hermes plugins install and enable them with hermes plugins enable <name>.
MCP servers are separate programs that speak the Model Context Protocol. Hermes connects to them and uses their tools. Choose MCP when a tool already exists as an MCP server, and a plugin when you're building something Hermes-specific.
Plugins↗ (opens in a new tab) MCP (Model Context Protocol)↗ (opens in a new tab)
Yes. hermes mcp serve runs Hermes as a stdio MCP server, so other MCP clients can use its messaging side: list conversations, read message history and send messages across all the platforms your gateway has connected. Add it to the client's MCP config with command hermes and args mcp serve; the client starts and stops the process.
It's handy when a coding agent should post to or read from Telegram, Discord or Slack through your existing Hermes setup.
MCP (Model Context Protocol)↗ (opens in a new tab) CLI Commands Reference↗ (opens in a new tab)
Telegram allows at most 100 bot commands and also limits the menu's total payload size, so a long skill list can overflow it. Run hermes skills config to disable skills per platform (it writes skills.platform_disabled in config.yaml), then restart the gateway with hermes gateway restart, because the menu is rebuilt at startup.
Skill descriptions are truncated to 40 characters in the Telegram menu. Disabling skills you don't use there helps with both limits.
FAQ & Troubleshooting↗ (opens in a new tab)
Models, providers & cost
Asked often by the community
Yes. The easiest route is Local Models: in Hermes Desktop open Settings > Providers > Local Models, or in a terminal run hermes model and choose Local models. Hermes installs a pinned llama.cpp runtime, then prices every catalog model against your machine before you download anything: green means it fits your GPU (or Apple unified memory), amber means it spills into system RAM and runs slower, red means it's too big. A star marks the recommendation.
Hermes picks the best quantization that fits, never goes below 4-bit, and gives every recommended model at least a 64K context window, which is also the minimum Hermes needs. Nothing leaves your computer once the model is downloaded.
You can still point Hermes at your own server instead: run hermes model, choose Custom endpoint, and enter an address such as http://localhost:11434/v1 for Ollama (vLLM, llama.cpp server, SGLang and LocalAI work too). Make sure the context length you set matches what the server actually uses. Very small models can struggle with tool calling, for example claiming to save memory without doing it.
Local Models↗ (opens in a new tab) FAQ & Troubleshooting↗ (opens in a new tab) Persistent Memory↗ (opens in a new tab)
Asked often by the community
There are two documented routes. The official plugin claude-subscription-directsdk (hermes plugins install claude-subscription-directsdk) runs Hermes turns through the official Claude Code CLI on your Pro or Max plan, with no API key; it needs claude installed and logged in, and each turn counts against your subscription's Agent SDK allowance. The catalog marks it experimental.
Anthropic OAuth in hermes model routes as Claude Code against your account, but the docs say it only works on Claude Max with purchased extra-usage credits, and it uses those credits rather than your base allowance. Pro can't use that path; an ANTHROPIC_API_KEY is the alternative.
Hermes can't promise how Anthropic treats any account. Check your plan's terms and usage settings in your Anthropic account, which govern quota and overage.
claude-subscription-directsdk catalog entry (GitHub)↗ (opens in a new tab) AI Providers↗ (opens in a new tab)
Asked often by the community
Hermes uses auxiliary models for side jobs such as context compression, session titles, image analysis, web extraction, approval checks, the skills curator and Kanban planning. By default each one runs on your main chat model, which adds meaningful cost on an expensive reasoning model.
You can route each job separately. Run hermes model and choose Configure auxiliary models, use Settings > Model > Auxiliary models in Desktop, or set keys like auxiliary.compression.provider and auxiliary.compression.model in config.yaml. The post-session memory and skill review has its own slot, auxiliary.background_review.
Subagents get their model from delegation.model and delegation.provider (or Settings > Model > Subagents), and the backup model used when your main one fails comes from hermes fallback add. A fast, cheap model is usually fine for compression, titles and approvals.
Configuring Models↗ (opens in a new tab) Configuration↗ (opens in a new tab) Persistent Memory↗ (opens in a new tab)
Asked often by the community
First find out what's expensive. /context breaks down what fills each request (system prompt, tool schemas, skills, MCP, memory, conversation), hermes prompt-size shows the fixed cost sent on every call, and hermes insights shows usage over the last 30 days.
Then trim. Disable toolsets and MCP servers you don't use (hermes tools), start a new session with /new when you switch tasks instead of letting chats grow, and /compress long ones. Move side jobs such as compression, titles and approvals to a cheaper model under auxiliary models, and give subagents a cheaper model with delegation.model.
Avoid needless mid-chat model switches, which re-read the whole conversation at full price, and watch the cache hit rate in Desktop's status bar; a warm cache makes long sessions much cheaper. Script-only cron jobs (--no-agent) run with no model call at all.
FAQ & Troubleshooting↗ (opens in a new tab) Slash Commands Reference↗ (opens in a new tab) Configuring Models↗ (opens in a new tab)
Asked often by the community
For the main agent, pick a strong tool-calling, agentic model; Hermes runs a fast loop of tool calls, so that matters more than chat polish. The Nous Portal docs suggest examples such as anthropic/claude-sonnet-4.6 as a general-purpose agentic model, openai/gpt-5.5-pro for reasoning, google/gemini-3-pro-preview for huge context and deepseek/deepseek-v4-pro as a cost-effective coder. They also say Nous' own Hermes 4 chat models are not recommended inside the agent.
For side tasks, a fast cheap model is usually enough. The docs suggest a flash-class model for compression, titles, approvals and web extraction. The background review defaults to your main model, which reuses its warm cache; route it with auxiliary.background_review if your main model is expensive.
Small local models (roughly under 30B) often fumble tool calls, so use a stronger model at least for setup. Rankings change quickly, so test on your own tasks.
Nous Portal↗ (opens in a new tab) Configuring Models↗ (opens in a new tab) Persistent Memory↗ (opens in a new tab)
Hermes itself has no usage cap; limits come from your model provider or plan. /usage shows token use and, when the provider reports it, remaining quota, and hermes usage prints account limits for some providers without starting a session.
On transient errors (rate limits, dropped connections, 5xx) Hermes retries each provider agent.api_max_retries times (default 3) before moving to your fallback providers, and waits out a rate limit that names its reset. After retries and fallbacks are spent on an outage, agent.auto_recovery_cycles (default 5) keeps waiting and retrying; set 0 to turn it off.
If you have a fallback configured (hermes fallback add) and want to fail over faster, set api_max_retries to 0. On the free Nous tier, a session you're watching ends quickly with the time the limit lifts instead of waiting long.
Configuration↗ (opens in a new tab) Fallback Providers↗ (opens in a new tab) CLI Commands Reference↗ (opens in a new tab)
Billing and account details are managed on Nous Portal itself, not in Hermes. hermes portal open opens the subscription management page, and hermes portal info shows your login, subscription and routing status.
If something is wrong with a charge or the account, contact Nous: after Send diagnostics, Desktop's error card links to Nous Portal Support, and the Nous Research Discord is the community channel the docs point to. Hermes can't change Portal billing settings for you.
If Hermes reports a billing failure mid-chat, Desktop's error card names it as billing and offers Switch provider, so you can keep working on another model while it's sorted.
Nous Portal↗ (opens in a new tab) Hermes Desktop↗ (opens in a new tab) FAQ & Troubleshooting↗ (opens in a new tab)
In hermes model, choose ChatGPT or Codex Subscription. Hermes signs in with ChatGPT's device-code login (or hermes auth add openai-codex --browser for a browser login), stores the credentials in ~/.hermes/auth.json, uses Codex models, and can import an existing Codex CLI login.
The docs say which plan tiers qualify and how Hermes usage counts against your plan's Codex limits are not yet documented, so watch your usage in ChatGPT. Some models return an error such as “not supported when using Codex with a ChatGPT account”; that's a plan entitlement.
The Nous team has said on X that a newer “Sign in with ChatGPT” option links your plan to your Nous Portal account under Linked Accounts, with a usage cap you choose, and that the older Codex login still works. Check Nous Portal for the current flow.
AI Providers↗ (opens in a new tab) Credential Pools↗ (opens in a new tab) Nous Research team reply on X (October 2026)↗ (opens in a new tab)
Hermes works with any OpenAI-compatible API. The docs list OpenRouter, Nous Portal, OpenAI, Anthropic, Google Gemini, z.ai/GLM, Kimi/Moonshot, MiniMax and others, plus local models through Ollama, vLLM, llama.cpp, SGLang and similar servers.
Run hermes model to add providers and pick a model. Inside a chat, /model switches between providers you've already set up.
FAQ & Troubleshooting↗ (opens in a new tab) Hermes Agent README (GitHub)↗ (opens in a new tab) AI Providers↗ (opens in a new tab)
Nous Portal is Nous Research's paid subscription service. One OAuth login gives you access to 300+ models plus the Tool Gateway, which handles web search, image generation, text-to-speech and a cloud browser without separate accounts. The docs recommend it for newcomers.
It's optional. Hermes works with your own provider keys, and you can mix the two per tool. Set it up with hermes setup --portal and check it with hermes portal info.
Nous Portal↗ (opens in a new tab) Hermes Agent README (GitHub)↗ (opens in a new tab) Nous Tool Gateway↗ (opens in a new tab)
Hermes itself costs nothing. Your costs come from model usage with your chosen provider, an optional Nous Portal subscription, and wherever you host it if not on your own computer. Local models have no usage fees.
To keep bills down, run hermes prompt-size to see your fixed prompt cost, disable tools and skills you don't use, use /compress, and start new sessions instead of letting chats grow forever.
FAQ & Troubleshooting↗ (opens in a new tab) Hermes Agent README (GitHub)↗ (opens in a new tab)
It can. The prompt cache key includes the model, so the first message after a /model switch re-reads the whole conversation at full input price. On a long session it can be cheaper to start a new session on the right model, or to delegate the task to a subagent, than to switch back and forth.
A plain /model switch lasts only for the current session unless you add --global. /model also lists only providers you have already configured; to add new ones, exit and run hermes model.
FAQ & Troubleshooting↗ (opens in a new tab) Troubleshooting: My Agent Feels Dumber↗ (opens in a new tab)
Hermes has layers of resilience. A credential pool, meaning several keys for the same provider, is tried first. Then a fallback chain switches to a different provider and model mid-session on rate limits, server overload, auth failures or connection drops, without losing the conversation.
Set it up with hermes fallback, which reuses the hermes model picker and has add, list, remove and clear subcommands. Entries are stored under fallback_providers in config.yaml, and each needs both a provider and a model.
Fallback Providers↗ (opens in a new tab) Credential Pools↗ (opens in a new tab)
Inside a session, /usage shows token usage, an estimated cost breakdown, context window state and, when the provider reports it, remaining credits or quota. hermes insights analyses token usage, cost estimates, tool use and activity over the last 30 days, with --days and --source filters such as telegram.
For scripts, hermes usage prints account limits for openai-codex, anthropic or openrouter without starting a session, and hermes prompt-size breaks down the fixed prompt sent on every call.
Slash Commands Reference↗ (opens in a new tab) CLI Commands Reference↗ (opens in a new tab)
Messaging & the gateway
Asked often by the community
There are a few routes. The bundled Google Workspace skill covers Gmail, Calendar, Drive, Sheets and Docs through your own Google OAuth app; ask Hermes to set it up and it walks you through. With a Nous identity, hosted connectors such as Gmail run through the Tool Gateway and are managed with hermes connectors or Desktop's Connectors page. For plain IMAP/SMTP mail (Gmail, Outlook and others), the bundled Himalaya skill works with an app password.
To be safe, start with a dedicated mailbox for the agent rather than your main inbox, use app passwords or OAuth (never your main password), and keep risky actions behind approvals. Email content is untrusted input, so be careful about letting it act on instructions found in messages.
Separately, the Email gateway lets people chat with Hermes by emailing it; Outlook / Microsoft 365 works there over IMAP and SMTP.
Google Workspace skill↗ (opens in a new tab) Give Your Agent Its Own Email Address↗ (opens in a new tab) Email↗ (opens in a new tab)
Create a bot with @BotFather to get a token, then run hermes gateway setup and choose Telegram. It asks for the token and your allowed user IDs. Or add TELEGRAM_BOT_TOKEN and TELEGRAM_ALLOWED_USERS to ~/.hermes/.env yourself. Start the gateway with hermes gateway and message your bot. In Hermes Desktop, Messaging has a Create with QR card that creates the bot, detects your user ID and restarts the gateway for you.
For several separately addressable bots, give each its own profile and its own BotFather token. A bot token can only be used by one profile at a time, and each profile keeps its own memory, skills and sessions.
In groups, Telegram's privacy mode hides ordinary messages from bots until you turn it off in BotFather, and telegram.require_mention: true makes a bot answer only when mentioned.
Telegram↗ (opens in a new tab) Profiles↗ (opens in a new tab) Hermes Desktop↗ (opens in a new tab)
Telegram is usually the quickest: one token from @BotFather, and Hermes Desktop can even create the bot from a QR code. Discord needs an application in the developer portal with Message Content Intent turned on. Slack uses Socket Mode, so none of them needs a public URL.
The core is the same everywhere: one agent with the same memory, skills, tools, slash commands and cron delivery. Differences come from the platforms. Telegram caps bot command menus at 100 entries, Discord can join voice channels for live conversation, and sessions are keyed differently (Slack shares a thread, Discord a channel, while most others are per user).
You can run several at once from one gateway; set each up with hermes gateway setup.
Telegram↗ (opens in a new tab) Discord↗ (opens in a new tab) FAQ & Troubleshooting↗ (opens in a new tab)
Yes, from the CLI. Run /sethome once in the destination chat (for example your Telegram DM with the bot), then in the CLI session run /handoff telegram. The gateway picks the session up with its full history, and your CLI exits with a hint for resuming locally later with /resume.
It works with Telegram, Discord, Slack, WhatsApp, Signal and Matrix, needs the gateway running, and is refused mid-turn, so wait for the current reply to finish.
Separately, Desktop and the CLI share sessions with each other, so on your own machines you can simply resume a conversation in another interface.
Sessions↗ (opens in a new tab) Slash Commands Reference↗ (opens in a new tab)
The gateway is a single background process that connects Hermes to all your configured chat platforms, manages their sessions, runs scheduled cron jobs and delivers voice messages. Supported platforms include Telegram, Discord, Slack, WhatsApp, Signal, Email, Matrix, Microsoft Teams, Home Assistant and many more.
Set it up with hermes gateway setup, then run it with hermes gateway or as a service with hermes gateway install and hermes gateway start.
Messaging Gateway↗ (opens in a new tab)
For Discord, create an application and bot token in the Discord developer portal, turn on Message Content Intent (without it Discord refuses the connection), then run hermes gateway setup and pick Discord.
Slack uses Socket Mode, which connects over WebSockets so you don't need a public URL. Create a Slack app, enable Socket Mode, and add the tokens through hermes gateway setup.
Discord↗ (opens in a new tab) Slack↗ (opens in a new tab)
Yes. The built-in bridge is based on Baileys, which emulates a WhatsApp Web session, so it needs no Meta developer account or public URL. Run hermes whatsapp and scan the QR code with your phone.
Because it isn't the official Business API, the docs warn about ban risk, and each WhatsApp number supports one paired session. A separate WhatsApp Cloud API option also exists.
WhatsApp↗ (opens in a new tab) FAQ & Troubleshooting↗ (opens in a new tab)
Use allowlists, meaning specific user IDs such as TELEGRAM_ALLOWED_USERS, or DM pairing. With pairing, an unknown user gets an 8-character code and you approve it with hermes pairing approve <platform> <code>. Codes expire after an hour.
unauthorized_dm_behavior can be pair, ignore or decline. An open allow-all mode exists but the docs advise against it.
Security↗ (opens in a new tab) FAQ & Troubleshooting↗ (opens in a new tab)
Run hermes gateway install to install it as a user service (systemd on Linux, launchd on macOS), then hermes gateway start, stop, restart and status to manage it. On Linux, sudo hermes gateway install --system installs a boot-time system service.
On WSL, where systemd is often unreliable, the docs suggest hermes gateway run in the foreground, inside tmux, or with nohup.
Messaging Gateway↗ (opens in a new tab) FAQ & Troubleshooting↗ (opens in a new tab)
Telegram bots have privacy mode switched on by default, so in groups they don't receive ordinary messages. Turn it off in @BotFather under Bot Settings, Group Privacy, then remove and re-add the bot, because Telegram caches the setting when a bot joins. Promoting the bot to group admin also works.
TELEGRAM_ALLOWED_USERS still applies in groups. To stop the bot replying to general chatter, set telegram.require_mention: true.
Telegram↗ (opens in a new tab)
Set display.tool_progress in config.yaml. off shows only the final response, new shows brief one-liners as new tool calls happen, all includes tool results and verbose adds full arguments and outputs. For messaging platforms the docs suggest off or new. Restart the gateway after editing.
Setting display.tool_progress_command: true enables /verbose in the gateway so you can toggle it per session.
FAQ & Troubleshooting↗ (opens in a new tab)
Yes. The docs walk through giving the agent a dedicated mailbox with the bundled Himalaya email skill, which drives the himalaya CLI over IMAP and SMTP so the agent can read, search, send and organise mail. Create a fresh account rather than handing over your personal inbox, and use an app password if the provider uses 2FA.
This is separate from the Email gateway adapter, which lets people chat with Hermes by emailing it. You can run both, ideally on separate accounts.
Give Your Agent Its Own Email Address↗ (opens in a new tab) Email↗ (opens in a new tab)
Automation & scheduling
Asked often by the community
A profile is a separate agent with its own config, keys, memory, sessions, skills and cron jobs (hermes profile create <name>). A Bot Mode bot is simply a profile shown in Desktop's Bots roster with an avatar, a permanent Bot Chat and its own routines. A messaging bot is a platform account (such as a Telegram bot) connected to a profile.
A subagent is a temporary child started by delegate_task for one job, with a fresh conversation; only its summary comes back. Use it for quick parallel research or side work inside the current conversation.
Kanban is a durable task board shared across profiles. Use it when work spans several named agents, must survive restarts, or needs your review between steps. Rule of thumb: one assistant, profiles for separate roles, subagents for quick fan-out, Kanban for pipelines.
Profiles↗ (opens in a new tab) Bot Mode↗ (opens in a new tab) Kanban (Multi-Agent Board)↗ (opens in a new tab)
Asked often by the community
Create the board once with hermes kanban init and keep the gateway running, since it hosts the dispatcher that hands tasks to profiles. Add tasks with hermes kanban create, /kanban in chat, or the board UI.
In Hermes Desktop the Kanban board is a bundled plugin that ships switched off, so it doesn't appear until you enable it in Capabilities > Plugins; it then adds a Kanban page and sidebar entry. The web dashboard (hermes dashboard) has a Kanban tab too.
The board is only a view. For an agent to create and route tasks from chat, enable the kanban toolset on the profile that orchestrates work, for example hermes -p planner tools enable kanban, and start a new chat. Leave it off on profiles that only talk to people; workers get their task tools automatically.
Kanban (Multi-Agent Board)↗ (opens in a new tab) Kanban tutorial↗ (opens in a new tab) Desktop Kanban plugin source (GitHub)↗ (opens in a new tab)
Asked often by the community
The easiest way is Bot Mode in Hermes Desktop, on by default as the Bots tab. Click New Agent, give it a name, title and description, and optionally its own model, SOUL.md, skills, toolsets and MCP servers. Each bot is a profile, so it also works from the CLI (hermes -p <bot> chat).
Bots can message each other with @mentions (@researcher have a look at this), you can open group chats where several bots deliberate, and each bot can have recurring routines. Group bots into sections to keep the roster tidy.
For structured pipelines with handoffs and review steps, put the work on the Kanban board. The docs' learning path has a "team of specialist bots" reading order: Desktop, Profiles, Bot Mode, Cron, then Multi-connection Desktop.
Bot Mode↗ (opens in a new tab) Learning Path↗ (opens in a new tab) Kanban (Multi-Agent Board)↗ (opens in a new tab)
Just ask in plain language, like "every morning at 9am, send me an AI news summary on Telegram," and Hermes creates the cron job itself. You can also use /cron add "every 2h" "Check server status" in chat or hermes cron create from the shell, optionally attaching skills with --skill.
Automation blueprints are ready-made jobs with a couple of fields to fill in. Type /blueprint to list them and /blueprint <name> (for example /blueprint morning-brief) to be asked for what it needs, or use the Blueprints tab on the Cron page in Desktop or the dashboard. Nothing is scheduled until you confirm.
Agent-backed jobs run inside the gateway, so keep it running. Results can go back to the original chat, to files, or to other configured platforms, and /cron or hermes cron list manages what you've created.
Scheduled Tasks (Cron)↗ (opens in a new tab) Automation Blueprints Catalog↗ (opens in a new tab) Automation Blueprints↗ (opens in a new tab)
Yes, in two ways. Bot-to-bot: register the other gateway as a peer with hermes peer add <name> --url http://host:port --key <API_SERVER_KEY> (the remote side runs the api_server platform), then hermes peer dm <peer> "message". Bots learn about registered peers automatically, so they can message cross-machine teammates themselves.
A2A: the Agent2Agent plugin lets your Hermes call other A2A agents as tools and receive tasks over HTTP, including from non-Hermes frameworks. Enable it with hermes gateway setup and turn on the outbound tools with hermes tools enable a2a --platform cli.
Hermes Desktop can also connect to several machines at once, so bots on different hosts appear in one roster. For agents on the same machine, use subagents or Kanban instead.
CLI Commands Reference↗ (opens in a new tab) A2A (Agent-to-Agent)↗ (opens in a new tab) Connecting Desktop to Many Hermes Instances↗ (opens in a new tab)
On messaging platforms, a message sent while the agent is working redirects the current turn by default: running tools finish safely and your correction is picked up at the next step. /stop is the hard stop.
/busy (or display.busy_input_mode in config.yaml) changes that. queue holds each follow-up and runs it as its own turn, in arrival order, once the current task finishes. steer slips it into the current run after the next tool call. In the CLI, /steer and /queue (or /q) do the same thing one message at a time.
In Hermes Desktop, queued messages appear above the composer, where you can edit, send or delete them. The queue lives on the gateway, so it survives an app or gateway restart.
Messaging Gateway↗ (opens in a new tab) Slash Commands Reference↗ (opens in a new tab) Hermes Desktop↗ (opens in a new tab)
Failures are never silent. A failed subagent reports a one-line reason in the CLI and in chat (even with tool progress hidden), and the parent gets status: "failed" with the error so it can retry or reroute. Children have no wall-clock timeout by default, but a stalled one (no activity for 450 seconds, or 1,200 inside a tool) is interrupted and reported.
By default subagents share the parent's working folder, which is fine for reading but risky for parallel edits. Set delegation.worktree_isolation: true and each child works in its own git worktree and branch, which the parent can review and merge. That works for git repos on the local terminal backend.
A restart doesn't resume a running subagent. For work that must survive restarts or hand off between agents, use Kanban or a cron job.
Subagent Delegation↗ (opens in a new tab) Kanban (Multi-Agent Board)↗ (opens in a new tab)
Yes, if each one gets its own checkout. Two agents editing the same working folder can overwrite each other's changes, so the docs recommend git worktrees: start with hermes --worktree (-w), create one mid-session with /worktree new <name>, or in Desktop use New worktree on a project (Cmd/Ctrl+Shift+B).
For subagents, delegation.worktree_isolation: true gives each child its own worktree. Each worktree also gets its own checkpoint history for /rollback.
Shared files outside git (a notes folder, a spreadsheet) have no such protection, so give each agent its own file or coordinate through Kanban.
Git Worktrees↗ (opens in a new tab) Subagent Delegation↗ (opens in a new tab) Hermes Desktop↗ (opens in a new tab)
Only /moa exists in Hermes; there is no /council command in the current release. /moa <prompt> runs one prompt through your default Mixture of Agents preset and then switches back to your normal model.
A MoA preset sends your conversation to several reference models for their views, and an aggregator model writes the answer and does the tool calls; the aggregator is billed for the whole run. Create presets with hermes moa configure, list them with hermes moa list, and select one like any model (it appears under a Mixture of Agents provider) to use it for a whole session.
If you want several distinct agents to discuss something, Bot Mode group chats in Hermes Desktop are the closest built-in equivalent.
Mixture of Agents↗ (opens in a new tab) CLI Commands Reference↗ (opens in a new tab) Bot Mode↗ (opens in a new tab)
hermes pause is an emergency stop for new work: no cron jobs fire, no Kanban tasks are dispatched and no new gateway turns start (CLI, TUI and Desktop turns included) until hermes resume. Turns already running finish; nothing in flight is killed, and held cron work catches up after you resume. /pause and /pause off do the same from a chat.
/restart (in a messaging chat) restarts the gateway gracefully: it waits for active turns to finish first (up to agent.restart_after_turn_timeout, 30 minutes by default), then confirms in your chat when it's back.
Other stops, such as hermes gateway stop or an update, interrupt running chat turns immediately by default (agent.restart_drain_timeout: 0). Queued messages are kept and run after the restart.
CLI Commands Reference↗ (opens in a new tab) Configuration↗ (opens in a new tab) Scheduled Tasks (Cron)↗ (opens in a new tab)
Agent-backed cron jobs run inside the gateway, which checks for due jobs every 60 seconds. If the gateway isn't running, those jobs are skipped with a logged reason and fire on the next tick after you start it with hermes gateway start; their schedule is not penalised. Script-only (no_agent) jobs are the exception and still run from a bare hermes cron tick. hermes cron list shows each job's status and reason.
Hermes also validates a job before running it. Missing API keys, unready skills or unknown delivery targets set its status to blocked_config and send a single alert.
Scheduled Tasks (Cron)↗ (opens in a new tab)
Yes. The delegate_task tool starts child agents, each with a fresh, isolated conversation and its own terminal session. Only the child's final summary comes back to the main chat. By default up to 10 can run in parallel.
You can give subagents a different model, for instance a cheaper one, with delegation.model and delegation.provider in config.yaml.
Subagent Delegation↗ (opens in a new tab) FAQ & Troubleshooting↗ (opens in a new tab)
Yes, in two ways. No-agent mode runs a script from ~/.hermes/scripts/ on a schedule and delivers its stdout verbatim with no LLM call, and empty output means no message. Create one with hermes cron create plus --no-agent and --script, or just describe the watchdog in chat and Hermes sets it up.
For agent-backed jobs, a pre-check script can print {"wakeAgent": false} as its last line to skip that run without calling the model.
Script-Only Cron Jobs↗ (opens in a new tab) Scheduled Tasks (Cron)↗ (opens in a new tab)
Set the job's deliver target. origin goes back to the chat where the job was created (the default on messaging platforms), local saves to ~/.hermes/cron/output/ (the CLI default), and a platform name like telegram or discord uses that platform's home channel. You can also target a specific chat or Telegram topic, list several targets separated by commas, or use all.
Send /sethome in a chat to make it the home channel. The agent's final response is delivered automatically, so the job prompt doesn't need to send anything.
Scheduled Tasks (Cron)↗ (opens in a new tab) Telegram↗ (opens in a new tab)
delegate_task works like a function call: the parent waits for an anonymous child and gets a summary back. Kanban is a durable work queue in ~/.hermes/kanban.db where named profiles with their own memory pick up tasks, hand off, recover from crashes and take comments from you.
Use subagents for quick answers that feed the current conversation. Use Kanban when work crosses agents, must survive restarts or might need your input. Start with hermes kanban init, keep the gateway running because it hosts the dispatcher, and add tasks with hermes kanban create.
Kanban (Multi-Agent Board)↗ (opens in a new tab)
Yes, through the webhook adapter. Enable it with hermes gateway setup (it listens on port 8644 by default), then define routes in config.yaml or create them with hermes webhook subscribe, which returns the URL and HMAC secret to give the service. Incoming events become agent prompts, and results can go to Telegram, Discord, Slack or a GitHub comment.
--deliver-only skips the agent and forwards the rendered message at zero LLM cost, and --script can filter or reshape payloads first.
Webhooks↗ (opens in a new tab) CLI Commands Reference↗ (opens in a new tab)
Security & permissions
Asked often by the community
Check where it comes from. Skills: built-in and official/... skills are fully trusted, a few well-known registries are "trusted", and everything else is community. Every hub install runs a security scan; a dangerous verdict is blocked even with --force. Preview first with hermes skills inspect <id>, and re-scan later with hermes skills audit.
Plugins: catalog entries are human-reviewed, pinned to an exact commit and scanned at admission, and tagged Official, Verified or Community. Raw git URLs are flagged as unreviewed. The docs are blunt that catalog listing isn't a code audit, and plugins (especially Desktop plugins) aren't sandboxed, so read the code and the disclosure for anything with broad access.
hermes security audit checks your environment, plugin requirements and pinned MCP servers against known vulnerabilities. If in doubt, try new things in a separate profile with a sandboxed terminal backend.
Skills System↗ (opens in a new tab) Plugin Catalog↗ (opens in a new tab) CLI Commands Reference↗ (opens in a new tab)
Asked often by the community
On the default local terminal backend, the agent can do what your user account can: run commands, read and write files. Profiles don't sandbox it. Guardrails are on by default: dangerous commands need approval, a hardline blocklist can't be overridden, writes to credential files such as ~/.ssh and .env are blocked, and secrets are redacted from output. Computer use (clicking and typing in apps) also goes through approvals.
To tighten it: set approvals.mode: manual to confirm every command, add approvals.deny rules, restrict file writes with HERMES_WRITE_SAFE_ROOT, and move command execution off your machine with terminal.backend: docker or ssh. In Desktop, Settings > Workspace can limit which folders it scans for repositories.
Tools run on whichever backend Desktop is connected to. Connect it to a remote gateway and the commands, files and computer use happen on that machine, not yours.
Running Hermes on a Personal or Work Machine↗ (opens in a new tab) Security↗ (opens in a new tab) Computer Use↗ (opens in a new tab)
Give each person their own profile (hermes profile create <name>). A profile has its own memory, sessions, skills, keys and cron jobs, and each gets its own messaging bot, since a bot token can only belong to one profile.
If several people share one bot, lock it down with allowlists or DM pairing (hermes pairing approve <platform> <code>). Most platforms keep a separate session per user, but they share the profile's memory and tools, so don't share a bot that has access to your private accounts.
Profiles separate data, not machines: on the default local backend every profile can still reach your files. For real isolation between people, use a sandboxed terminal backend (Docker or SSH) or separate hosts.
Profiles↗ (opens in a new tab) Security↗ (opens in a new tab) FAQ & Troubleshooting↗ (opens in a new tab)
Hermes itself sends no telemetry; your conversations, memory and skills stay on your machine, and requests go only to the provider you choose. Once you send a request through Nous Portal, the Nous Research privacy policy applies.
That policy (last updated September 28, 2026) says Nous collects prompts and outputs as workflow data and shares them with the third-party model providers that serve each model, under those providers' terms. It offers an opt-in Privacy Mode under which Nous says it won't store your inference payloads or use them for training, with exceptions for operational metadata and security or legal needs, and it applies only from when you turn it on. No retention period is stated for inference content.
Separately, Hermes warns before you pick discounted data-training model tiers (names ending in -contributor), where the vendor may train on your prompts.
Nous Research Privacy Policy↗ (opens in a new tab) Is my data sent anywhere? (FAQ)↗ (opens in a new tab) Configuring Models↗ (opens in a new tab)
Through its built-in vault (Passwords & Logins). The first time the agent hits a sign-in page with no saved login, it asks you in a masked prompt; the password is encrypted on your machine, bound to that site, and filled into the page without the model ever seeing it. 1Password and Bitwarden CLIs are picked up automatically if installed and signed in.
Cards and addresses work the same way (Settings > Passwords & Logins, or hermes vault add), and every card fill asks you first. Unattended runs such as cron and webhooks can't confirm, so they can't spend. Two-factor codes are generated from a saved authenticator key or typed by you into a prompt.
The vault protects against filling the wrong site, not against a compromised one: once a password is in a page, that site has it. On a hosted gateway, you can also take over the Bot Screen and type sensitive steps yourself.
Passwords & Logins↗ (opens in a new tab) Bot Screen↗ (opens in a new tab)
A plan is guidance, not an enforced contract. /plan writes an implementation plan to .hermes/plans/ without executing anything, and the agent will usually follow it, but nothing technically stops a model from straying.
What is enforced are the controls around actions: dangerous commands need approval, approvals.mode: manual makes it ask for every command, approvals.deny blocks patterns outright, and checkpoints (hermes chat --checkpoints) let you /rollback file changes.
To keep it on track, ask it to check back with you before anything outside the plan; it has a clarify tool for questions. In Desktop's Git review pane, the Last turn view shows exactly what changed.
Slash Commands Reference↗ (opens in a new tab) Security↗ (opens in a new tab) Checkpoints and /rollback↗ (opens in a new tab)
Treat any app as unofficial unless the official docs or the NousResearch GitHub link to it. The official distributions are the installer scripts and Hermes Desktop from hermes-agent.nousresearch.com, the Microsoft Store and MSIX packages, the nousresearch/hermes-agent Docker image, the Termux package and the NousResearch/hermes-agent repository.
Community projects can be useful; the plugin catalog even lists community mobile adapters. But they're built by their authors, not Nous, and a client that connects to your agent can see your conversations and possibly your tools.
Before connecting one, check who publishes it, read what access it needs, and prefer apps that connect through Hermes' own authenticated gateway rather than asking for your API keys.
Installation↗ (opens in a new tab) Platform Support↗ (opens in a new tab) Plugin Catalog↗ (opens in a new tab)
Prefer official, scoped connections. The MCP catalog includes vendor-hosted servers (Atlassian for Jira and Confluence, plus Linear, Notion and others) that sign in with OAuth (hermes mcp install <name>), and each MCP server can expose only chosen tools with tools.include or tools.exclude. Use a service account or read-only token where the system offers one.
On a work machine, follow the docs' hardening guide: manual approvals, your own deny rules, a write sandbox, and running commands in Docker or over SSH. Keep secrets in a manager such as 1Password or Bitwarden rather than .env.
Systems without an MCP server or plugin can still be reached through scripts or APIs, but then access is whatever that credential allows, so keep it narrow and check your company's policy first.
Running Hermes on a Personal or Work Machine↗ (opens in a new tab) MCP (Model Context Protocol)↗ (opens in a new tab) Secrets↗ (opens in a new tab)
With hosted connectors you can connect two or more accounts of one app, each with a short name such as home and work. There is no default: when several named accounts exist, the agent must say which one, and a call that leaves it out fails with the list of valid names. Results report the account they ran under.
Name, rename and remove accounts in Desktop's Connectors page, /connectors in the TUI, hermes connectors in a shell, or on Nous Portal. The agent may name a new account but never removes one.
Skills that use their own credentials, such as Google Workspace or Himalaya, use whatever account you set up for them.
Nous Tool Gateway↗ (opens in a new tab) CLI Commands Reference↗ (opens in a new tab)
According to the FAQ, Hermes doesn't collect telemetry, usage data or analytics. API calls go only to the model provider you configure, and your conversations, memory and skills are stored locally in ~/.hermes/.
Keep in mind that whatever you send to a cloud model provider is subject to that provider's policies. If you enable an external memory provider, Hermes masks recognisable secrets before sending data to it.
FAQ & Troubleshooting↗ (opens in a new tab) Memory Providers↗ (opens in a new tab)
Not by default. Commands are checked against dangerous patterns, and approvals.mode controls what happens: smart (default) uses a helper model to auto-approve low-risk commands, deny clearly dangerous ones and ask you about the rest; manual always asks; off disables checks.
A hardline blocklist, covering things like filesystem wipes and fork bombs, can't be overridden even in YOLO mode. Cron jobs deny dangerous commands by default.
Security↗ (opens in a new tab)
YOLO mode skips dangerous-command approval prompts for the current session. Turn it on with hermes --yolo, the /yolo toggle, or HERMES_YOLO_MODE=1. The status bar shows a warning while it's active.
The hardline blocklist still applies. The docs recommend YOLO only for trusted commands in disposable environments.
Security↗ (opens in a new tab)
Choose "always" when approving, and Hermes saves the pattern to command_allowlist in ~/.hermes/config.yaml, approving it silently from then on. Entries can be exact commands, shell-style globs like podman *, or rule keys shown in the prompt.
To block commands outright, add your own rules under approvals.deny.
Security↗ (opens in a new tab)
Yes. Change terminal.backend in config.yaml. The default is local, but docker runs commands in a hardened container, ssh runs them on a remote server, and singularity, modal, daytona and vercel_sandbox offer other isolated or cloud environments.
For file edits there is also an optional write sandbox (HERMES_WRITE_SAFE_ROOT) and a list of protected paths that are always blocked.
Tools & Toolsets↗ (opens in a new tab) Security↗ (opens in a new tab)
Yes, with approvals.deny in config.yaml: a list of glob patterns, such as git push --force*, that block matching terminal commands unconditionally. They're checked before --yolo, /yolo or approvals.mode: off, match case-insensitively, see through simple quoting tricks and apply to every terminal backend. Changes take effect without restarting.
Always quote the patterns in YAML. The docs stress this is a command policy, not a sandbox, so use an isolated backend for real containment.
Security↗ (opens in a new tab)
Partly. Context files such as AGENTS.md and .cursorrules are scanned before they enter the system prompt, looking for instructions to ignore earlier instructions, hidden HTML comments, attempts to read secrets, credential exfiltration via curl and invisible Unicode. A flagged project file is not loaded. The docs call these checks heuristics, not semantic intent detection.
Your own SOUL.md in your Hermes home only gets a warning, not a block. Separately, the command checker flags curl or wget uploads of secrets and hidden Unicode in commands.
Security↗ (opens in a new tab)
Yes. At startup Hermes can pull keys from Bitwarden Secrets Manager, 1Password (op:// references through the op CLI) or any CLI vault via a command helper. Only the secret manager's bootstrap token stays in .env, and everything else can rotate centrally. Configure sources under secrets in config.yaml.
By default a value already in your .env or shell wins unless the source sets override_existing: true, which Bitwarden does by default.
Secrets↗ (opens in a new tab) 1Password↗ (opens in a new tab) Bitwarden↗ (opens in a new tab)
Yes, if checkpoints are on. They're opt-in: start with hermes chat --checkpoints or set checkpoints.enabled: true. Hermes then snapshots your files into a shadow git store under ~/.hermes/checkpoints/ before file writes, patches and destructive commands such as rm or mv, without touching your project's own .git.
In a session, /rollback lists checkpoints and /rollback with a number restores one while keeping your hand-edits; add --all for a full restore, or use /rollback diff to preview. hermes checkpoints shows storage use.
Checkpoints and /rollback↗ (opens in a new tab)
Running & deploying
Asked often by the community
Not yet. The current release has no official iOS or Android app; there's no mobile app in the official repository and none in the docs. The Nous team has said on X that one is in the works, without a public date.
Today, the supported way to use Hermes from your phone is the messaging gateway: run Hermes on a computer, server or Hermes Cloud and chat with it on Telegram, Discord, WhatsApp, Signal, Slack and other apps. You can even move a live CLI session to your phone with /handoff.
Android users can also run Hermes itself on the phone through the official Termux package (64-bit ARM). Be wary of third-party apps claiming to be the official one.
Messaging Gateway↗ (opens in a new tab) Android / Termux↗ (opens in a new tab) Nous Research team reply on X (October 2026)↗ (opens in a new tab)
Asked often by the community
Yes. Desktop can attach to a backend on another machine and act as the client: your sessions, memory and tools all live on that host. Go to Settings > Gateways. Hermes Cloud lets you sign in and pick an agent with nothing to paste; Remote gateway takes the URL of a backend you run; SSH opens a tunnel to a Hermes install for you.
For your own server, run hermes serve there (the headless backend; hermes dashboard works too) bound to a reachable address, for example hermes serve --host 0.0.0.0 --port 9119. A non-loopback bind requires sign-in: use a username and password only on a trusted network or VPN such as Tailscale, and OAuth through Nous Portal (hermes dashboard register) for anything reachable from the internet. Then enter http://<host>:9119 in Desktop and sign in.
Without a local runtime the app offers to connect or install, and hermes desktop --ignore-existing skips an installed one so no local backend starts. The messaging gateway on the server is a separate process you keep running yourself.
Hermes Desktop↗ (opens in a new tab) Connecting Desktop to Many Hermes Instances↗ (opens in a new tab) Hermes Web Dashboard↗ (opens in a new tab)
Asked often by the community
For a whole setup, run hermes backup on the old machine. It creates ~/hermes-backup-<timestamp>.zip with config, credentials, memories, skills, sessions and profiles (not the app itself, browser profiles or caches). Install Hermes on the new machine, copy the zip over, run hermes import <file>, then hermes setup to check your keys. Review the backup's skipped-file report before you wipe the old machine.
To move or share one profile (a Bot Mode bot is a profile), run hermes profile export work -o work.tar.gz and on the other side hermes profile import work.tar.gz --name work. In Desktop the same thing is Export profile… and Import profile… in the command palette, and /export and /import work in chat. Profile exports strip API keys and logins, so sign in again on the new machine.
Going to Docker instead? The official image keeps all user data in one folder mounted at /opt/data, and the image itself holds no state.
FAQ & Troubleshooting↗ (opens in a new tab) Hermes Desktop↗ (opens in a new tab) Docker↗ (opens in a new tab)
Asked often by the community
Tools run where the backend runs. With Desktop connected to a cloud or VPS gateway, terminal commands, file edits, computer use and the browser all happen on that remote machine, not on your PC. That's why a remote agent can't click around your local apps or read your local files.
A few things are tied to the machine running the app, so they behave differently remotely: Open containing folder only works for local sessions (use Reveal in filetree), artifacts download through the gateway, logs for a failed turn live on the remote host, and settings, sessions and memory follow the gateway you're connected to.
To have an agent act on your computer, run Hermes on it, either as Desktop's local gateway or as a second registered gateway, and switch between gateways in the Sessions sidebar.
Hermes Desktop↗ (opens in a new tab) Computer Use↗ (opens in a new tab) Connecting Desktop to Many Hermes Instances↗ (opens in a new tab)
Asked often by the community
Bot Screen gives each bot its own desktop on a headless Linux gateway host (a server, cloud VM or Hermes Cloud), which the bot's computer use and browser act on, streamed live into Hermes Desktop. Your Mac or PC is only the viewer, and the bot keeps working when you close the app. It isn't offered when the gateway itself runs on macOS or Windows, which already have a real display.
It's off by default. Start it from the Screen pane in Desktop or with hermes computer-use screen start on the host; hermes computer-use screen status shows whether the needed TigerVNC and Xfce packages are installed, and hermes computer-use screen install adds them. Unused screens stop after 30 minutes.
Plan for about 1.1–1.5 GB of RAM per open screen with a browser: the desktop is cheap, the browser is the cost. 4 GB runs it and 8 GB is comfortable for takeovers. With a Docker or SSH terminal backend, the screen runs inside that sandbox.
Bot Screen↗ (opens in a new tab) Computer Use↗ (opens in a new tab)
Asked often by the community
When the bot hits a step it shouldn't do itself (a login, a 2FA prompt, a CAPTCHA, a payment), it says so in chat and ends its turn. On a hosted gateway with Bot Screen, open the bot's Screen, click Take over, do the step, then click Hand back and tell it to continue.
While you hold control its computer-use and browser tools are refused; on hand-back it re-captures the screen and carries on in the same conversation, with the session you just signed in to. The browser profile persists per bot, so the login usually sticks for later runs.
On your own computer you can simply watch: set browser.headed: true for a visible browser. For many sites the vault can fill saved logins and generate 2FA codes without a takeover.
Bot Screen↗ (opens in a new tab) Passwords & Logins↗ (opens in a new tab) Browser Automation↗ (opens in a new tab)
Asked often by the community
Hermes Cloud is Nous Research's hosted Hermes Agent: an always-on agent on a dedicated cloud instance with its own workspace and dashboard, managed from the agents page in Nous Portal. Hermes Desktop connects to it from Settings > Gateways > Hermes Cloud.
According to the Cloud page, instances are billed daily from your Nous credit based on actual use (compute plus storage), stopped instances pay only storage, and model and tool use is billed separately. Deploying needs at least $2 in credits or an active subscription; current instance sizes and prices are listed in Nous Portal.
Storage is persistent: files, memory and configuration are kept whether the agent is running or stopped, and disks never shrink. The Nous team has said on X that each instance has roughly a 12 GB persistent volume at /opt/data holding the Hermes home; check the Portal for current sizes.
Hermes Cloud (Nous Portal)↗ (opens in a new tab) Manage Hermes Cloud with MCP↗ (opens in a new tab) Nous Research team reply on X (October 2026)↗ (opens in a new tab)
Yes. In the CLI, turn on /voice on and press Ctrl+B to record; Hermes detects silence and replies. In Hermes Desktop, the microphone does dictation and the voice button starts a spoken conversation. On Telegram and Discord it can send spoken replies, and on Discord it can join a voice channel.
Desktop also offers a full-duplex mode: set Settings > Voice > Voice Chat Mode to GPT-Live (voice.voice_chat_mode: gpt-live). It uses OpenAI's gpt-live-1, needs your own OpenAI key, is billed by OpenAI per minute of session time, and hands real work to your normal Hermes model. Configure speech-to-text and text-to-speech providers with hermes tools; a Nous Portal plan can supply text-to-speech.
Phone calls aren't built in, but the official optional Telephony skill (hermes skills install official/productivity/telephony) covers Twilio numbers, SMS and AI outbound calls with your own Twilio account.
Voice Mode↗ (opens in a new tab) Telephony skill↗ (opens in a new tab)
Run hermes backup. It writes ~/hermes-backup-<timestamp>.zip with your config, credentials, memories, skills, sessions and profiles, and it's safe to run while Hermes is working. Restore with hermes import <file>. Check its report of files that failed to copy, and store the zip somewhere private, since it contains your keys.
hermes backup --quick saves only selected state files. Updates take a quick snapshot automatically; hermes update --backup, or updates.pre_update_backup: full, makes a full one before each update.
For a VM or Docker host, back up the Hermes data folder itself (/opt/data in the official image), or snapshot the whole VM with your provider's tools.
FAQ & Troubleshooting↗ (opens in a new tab) Updating & Uninstalling↗ (opens in a new tab) Docker↗ (opens in a new tab)
A terminal backend decides where the agent's shell commands actually run. Hermes has seven: local, docker, ssh, singularity, modal, daytona and vercel_sandbox. Set one with terminal.backend in config.yaml or hermes config set terminal.backend <name>.
The README notes that Daytona and Modal can hibernate when idle, so a cloud environment costs very little between sessions.
Tools & Toolsets↗ (opens in a new tab) Hermes Agent README (GitHub)↗ (opens in a new tab)
Yes, that's a common setup. The README mentions running it on a $5 VPS. Install it on the server, connect a chat app with hermes gateway setup, and keep the gateway running as a service (hermes gateway install, or sudo hermes gateway install --system for a boot-time service on Linux).
Then chat with it from Telegram or another platform while it works on the server.
Hermes Agent README (GitHub)↗ (opens in a new tab) Messaging Gateway↗ (opens in a new tab)
Mount a data folder and run the setup wizard once: docker run -it --rm -v ~/.hermes:/opt/data nousresearch/hermes-agent setup. Then start a long-running gateway with docker run -d --name hermes --restart unless-stopped -v ~/.hermes:/opt/data nousresearch/hermes-agent gateway run.
Docker installs don't support hermes update. To upgrade, pull a new image and recreate the container with the same data mount.
Docker↗ (opens in a new tab) Platform Support↗ (opens in a new tab) Updating & Uninstalling↗ (opens in a new tab)
Yes, with profiles. Each profile is a separate Hermes home with its own config, keys, memory, sessions, skills and cron jobs. hermes profile create coder creates one and also gives you a coder command, so you can run coder chat or coder gateway start.
Profiles don't share memory, and two profiles can't use the same bot token, so give each one its own bot.
Profiles↗ (opens in a new tab) FAQ & Troubleshooting↗ (opens in a new tab)
Yes. hermes dashboard starts a local web server and opens http://127.0.0.1:9119. From there you can manage config, API keys, MCP servers, messaging pairing, webhooks, the gateway, memory, sessions, logs, analytics, cron jobs and skills instead of editing YAML. --port changes the port and --no-open skips opening the browser.
It binds to localhost by default. If you bind it elsewhere with --host, a public bind always requires an auth provider, either a password or OAuth.
Hermes Web Dashboard↗ (opens in a new tab)
Yes, through ACP (Agent Client Protocol). hermes acp runs Hermes as an ACP server over stdio, and editors can show its chat, tool activity, file diffs, terminal commands and approval prompts. In VS Code, install the ACP Client extension and pick Hermes Agent. In Zed, add a custom agent server with command hermes and args acp. JetBrains works through an ACP-compatible plugin.
ACP sessions keep your provider setup, memory and skills but leave out messaging delivery and cron management. hermes acp --check verifies the install.
ACP Host Integration↗ (opens in a new tab)
Troubleshooting
Asked often by the community
Updates are designed to be safe. hermes update follows the stable release channel by default, hermes update --check previews it, a quick snapshot of each profile's state is taken first, and if critical files fail to load after the update it rolls the code back automatically. Afterwards run hermes doctor and hermes --version.
For extra safety, hermes update --backup makes a full backup first. To roll back, stop the gateway, check out the older release (a source install that followed main can return to the latest release with hermes update --set-channel stable), then restore the pre-update snapshot with /snapshot restore <id> or the full backup with hermes import. Running an old release on a database a newer one has upgraded is refused, so restore the data too.
Desktop app, Docker, Store and Nix installs roll back through their own packaging (for Nix, nix profile rollback).
Updating & Uninstalling↗ (opens in a new tab) Slash Commands Reference↗ (opens in a new tab)
“No inference provider configured” means Hermes has nothing to talk to yet: run hermes setup or hermes model and sign in or add a key. A 401 or invalid-key error means the credential is missing, expired or for the wrong provider (an OpenAI key won't work on OpenRouter); re-enter it with hermes model and check ~/.hermes/.env for conflicting entries.
“Model not found” or a 400 on the first run usually means the model id doesn't exist on that provider, or your plan or credits don't cover it. Messages like “model is not supported when using Codex with a ChatGPT account” are plan entitlements. Pick a model the provider actually lists in hermes model.
/status shows the active model and provider, and hermes doctor checks the setup. Remember /model only lists providers you've already configured.
FAQ & Troubleshooting↗ (opens in a new tab) Credential Pools↗ (opens in a new tab)
Reinstalling rarely helps. Slowness usually comes from the model (large reasoning models and busy providers are slow), a long session, or a heavy prompt with many tools. First make sure you're on the latest version (hermes --version, hermes update).
Then try a faster model, start a fresh session with /new (or /compress a long one), and disable toolsets and MCP servers you don't use. In Desktop, turn on tokens per second in the status bar to see whether the model itself is slow. For local models, make sure the model fits in GPU memory, since spilling into system RAM is much slower.
If it's still slow, hermes doctor and hermes logs help find the cause, and hermes debug share produces a report you can give to helpers.
FAQ & Troubleshooting↗ (opens in a new tab) Hermes Desktop↗ (opens in a new tab) Local Models↗ (opens in a new tab)
Windows locks files that running programs are using, so close Hermes Desktop windows and other Hermes processes before updating, and follow any diagnostic naming a specific process; don't kill every Python process. hermes update --plan, the update log and hermes pm status show what failed, and the log is in the profile's logs/update.log.
If security software quarantined updater files, repair the installation and review the quarantine report rather than turning protection off. The Nous team has said on X that failures are often Windows file permissions (“Access is denied” in Hermes' tools folder) and that Smart App Control can block a locally built Desktop app.
If you'd rather avoid local builds, the MSIX package (Windows 11 22H2 or later) or the Microsoft Store version ships prebuilt and updates through the app or the Store.
Updating & Uninstalling↗ (opens in a new tab) Windows (Native) Guide↗ (opens in a new tab) Nous Research team reply on X (October 2026)↗ (opens in a new tab)
Sometimes. Many settings apply without a restart: model.context_length and compression.* take effect on the next message, approvals.deny changes apply immediately, and some session settings apply to the next new session. In a session, /reload picks up new keys from .env, /reload-mcp reloads MCP servers and /reload-skills rescans skills.
Display settings like display.tool_progress, Telegram command-menu changes, platform credentials and unloading plugin code need a restart. Use hermes gateway restart, or /restart from a chat, which waits for active turns to finish.
Desktop's Messaging page shows a Restart now banner whenever a credential change needs one.
Configuration↗ (opens in a new tab) FAQ & Troubleshooting↗ (opens in a new tab) Slash Commands Reference↗ (opens in a new tab)
Your shell hasn't picked up the updated PATH yet. Run source ~/.bashrc (or source ~/.zshrc), or open a new terminal. The installer puts the hermes command in ~/.local/bin.
If it still fails, check with which hermes, and add export PATH="$HOME/.local/bin:$PATH" to your shell config if needed.
FAQ & Troubleshooting↗ (opens in a new tab)
Check the gateway is running with hermes gateway status and start it with hermes gateway start. Then look at the end of ~/.hermes/logs/gateway.log for errors, and make sure your user ID is on the allowlist or approved through pairing.
On Discord, a disabled Message Content Intent stops the bot from connecting at all.
FAQ & Troubleshooting↗ (opens in a new tab) Discord↗ (opens in a new tab)
Run hermes doctor to check config and dependencies. hermes doctor --fix tries to repair what it can. hermes logs views and filters agent, gateway and error logs, and hermes debug share uploads a debug report and prints a link you can give to helpers.
Inside a session, /status shows the active model and provider.
CLI Commands Reference↗ (opens in a new tab) FAQ & Troubleshooting↗ (opens in a new tab)
Search or open an issue on GitHub at github.com/NousResearch/hermes-agent/issues, or ask in the Nous Research Discord. When filing a bug, include your OS, Python version, hermes --version output, and the full error message.
The official docs at hermes-agent.nousresearch.com/docs include an FAQ and troubleshooting page that covers many common problems.
FAQ & Troubleshooting↗ (opens in a new tab) Hermes Agent README (GitHub)↗ (opens in a new tab)
Hermes builds each session's shell environment from a bash login shell, which doesn't read ~/.bashrc by itself. Hermes sources ~/.bashrc automatically, but tools set up in ~/.zshrc or a standalone init file can stay invisible, especially under systemd.
List the extra files under terminal.shell_init_files in config.yaml, for example ~/.zshrc or ~/.nvm/nvm.sh. Setting that list replaces the default ~/.bashrc auto-source, so include it too if you need both. On macOS, if the gateway can't find tools you installed later, rerun hermes gateway install to re-capture your PATH.
FAQ & Troubleshooting↗ (opens in a new tab)
The docs give a checklist. First confirm the model with /status or /model: a /model switch is session-only by default, and model changes from the dashboard apply only to new sessions. Next check context pressure with /usage or /context, and run /compress or /new if the session is long.
Then check the context length shown at startup and set model.context_length if it's wrong. Finally, remember memory is a frozen snapshot, so something saved mid-session only appears in the next session.
Troubleshooting: My Agent Feels Dumber↗ (opens in a new tab)
Usually the context length Hermes assumes doesn't match the server. Set model.context_length, or a per-model context_length under providers, to the window your server really uses, such as llama.cpp's --ctx-size. Otherwise Hermes may stop with a message that compression couldn't shrink the request enough.
On single-slot servers like Ollama or LM Studio, a too-large rejection can mean a background memory review is holding the slot, so wait and /retry. For timeouts on very large contexts, set HERMES_STREAM_READ_TIMEOUT=1800 in .env.
FAQ & Troubleshooting↗ (opens in a new tab) Local LLM on Mac↗ (opens in a new tab)