Hermes Agent is Nous Research’s open-source assistant that runs the same agent core across a CLI, a TUI, an Electron desktop, and ~20 messaging platforms (Telegram, Discord, Slack, Feishu, and others). It learns across sessions via memory and skills, runs scheduled jobs, delegates to subagents, and drives a real terminal and browser. This article walks through an Ubuntu 22.04 / 24.04 install and the first three things you should do after `hermes doctor` is green.
## What you actually get
Hermes ships as a single Python CLI plus an Electron desktop that uses the same `agent/` core. The runtime boots in under a second on warm Python, takes a project directory as input, and writes back changes after you approve them. The CLI is a thin entry point over the agent — every interesting subsystem (memory, skills, plugins, gateway, schedulers) is its own subcommand, and `hermes
Two properties define the project. **Per-conversation prompt caching is sacred** — the agent reuses a cached prefix every turn, so anything that mutates past context mid-conversation will multiply your cost and is not done. **The core is a narrow waist** — most capability lives at the edges (plugins, skills, services), not in the core prompt.
## Install on Ubuntu 22.04 or 24.04
The canonical install is a single curl-pipe that pulls down everything you need: `uv`, Python 3.11, Node.js 22, `ripgrep`, and `ffmpeg` (for voice). It auto-detects your distro and picks the right binary mirror.
“`bash
sudo apt update && sudo apt install -y curl xz-utils git
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
“`
What this doesn’t touch: your system Python stays where it is, your existing Node version isn’t replaced, and your `~/.bashrc` only gets a one-line `PATH` entry for `~/.local/bin`. Refresh the shell or open a new terminal, then:
“`bash
hermes –version
hermes doctor
“`
`hermes doctor` checks Python, the API keys you’ve set, gateways, and disk space. If something’s missing it’ll tell you exactly which line to fix.
## First-run setup
Hermes has a guided `setup` wizard that walks you through providers, channels, and a default workspace:
“`bash
hermes setup
“`
You can pick a model provider (Anthropic, OpenAI, Google Gemini, xAI, local Ollama) and paste one API key per provider. Hermes will use whatever it’s told to use — there’s no telemetry, no required account. If you want everything locally:
“`bash
ollama serve &
ollama pull qwen3:30b-a3b
hermes config set default_provider ollama
hermes config set default_model qwen3:30b-a3b
“`
For the messaging gateway (Telegram, Discord, Slack, Feishu, WhatsApp), each platform has its own `hermes
## Three useful things in the first day
**Skills.** A skill is a Markdown file plus optional scripts under `~/.hermes/skills/
**Memory.** Hermes writes to a compact memory store keyed by topic. After a few sessions, ask it `what do you remember about
**Subagents.** For long-running or context-heavy work, `hermes delegate` spins up a leaf subagent in its own context. The parent stays cheap; the child does the heavy lifting. Useful for research tasks that would otherwise burn the parent’s prompt cache.
## Optional: the Desktop
`hermes desktop` (or `hermes gui`) launches the Electron app — chat, file preview, provider settings, schedules. It uses the same `agent/` core as the CLI, so conversations are shared. Useful when you want a real chat window, less useful when you’re already in a terminal.
## Where to look next
– `hermes config` shows every config knob (most never need touching)
– `~/.hermes/skills/` is where your own skills live — examples ship with the install
– `hermes insights` is a daily/weekly digest of what your agent did and learned
– https://hermes-agent.nousresearch.com/docs has the full reference
Hermes is the agent this article series was written with — everything above works on a fresh Ubuntu VM in under ten minutes.
Comments