GoldieBench Blog · 10 min read
Hermes Agent Backend: Every Type Explained, And The Models Worth Putting Behind It
A Hermes Agent backend decides where commands run and which model thinks. See all seven terminal backends, how to switch, and the benched models to pair.

A Hermes Agent backend is the layer that does the work behind the chat, and the main one is the terminal backend, which decides where the agent's shell commands run.
Hermes Agent is the free, open-source AI agent from Nous Research, and its docs list seven terminal backends: local, Docker, SSH, Modal, Daytona, Vercel Sandbox and Singularity.
The word "backend" is also used for the model provider, the web search provider, the browser provider, the memory provider, and Hermes itself running as a backend for other apps.
I took every backend fact on this page from the official Hermes docs and the read-only help output on my own install, which is version 0.21.4.
Below you'll get each backend type, the command that sets it, the security and cost trade-offs, and then a later section on which model to run behind it.
Hermes Agent backend types at a glance
| Backend type | What it decides | Documented options | How you set it |
|---|---|---|---|
| Terminal | It decides where shell commands run. | The options are local, docker, ssh, modal, daytona, vercel_sandbox and singularity. | You run hermes config set terminal.backend docker. |
| Model | It decides which model does the thinking. | The options include Nous Portal, OpenRouter, Anthropic, OpenAI, Bedrock, Ollama, LM Studio and custom endpoints. | You run hermes model. |
| Web | It decides who serves search and page extraction. | The options include Firecrawl, SearXNG, Brave, DuckDuckGo, Exa, Parallel, Tavily and Perplexity. | You run hermes tools or set web.backend. |
| Browser | It decides which browser the agent drives. | The options include Browser Use, Browserbase, Firecrawl, Camofox, Lightpanda and local Chromium. | You run hermes tools and open Browser Automation. |
| Memory | It decides where extra long-term memory lives. | The options include Honcho, OpenViking, Mem0, Holographic, RetainDB, ByteRover and Supermemory. | You run hermes memory setup. |
| Hermes as a backend | It decides how other apps reach your agent. | The options are the API server, ACP, MCP serve and hermes serve. | You run the matching command. |
Hermes is released under the MIT licence, so the software is free and the only costs come from the services you plug into those slots.
The terminal backend: where commands run
The docs say each terminal backend determines where the agent's shell commands actually execute.
| Backend | Where commands run | Isolation | The docs say it's best for |
|---|---|---|---|
local | They run on your machine directly. | There is none. | It's best for development and personal use. |
docker | They run in one persistent Docker container. | It is full, with namespaces and dropped capabilities. | It's best for safe sandboxing and CI/CD. |
ssh | They run on a remote server over SSH. | It is a network boundary. | It's best for remote dev and powerful hardware. |
modal | They run in a Modal cloud sandbox. | It is a cloud VM. | It's best for ephemeral cloud compute and evals. |
daytona | They run in a Daytona workspace. | It is a cloud container. | It's best for managed cloud dev environments. |
vercel_sandbox | They run in a Vercel Sandbox. | It is a cloud microVM. | It's best for cloud execution with snapshot-backed persistence. |
singularity | They run in a Singularity or Apptainer container. | It uses namespaces. | It's best for HPC clusters and shared machines. |
The default is local, and my own config is still set to it.
How to switch your Hermes Agent backend
You check the current terminal backend with hermes config get terminal.backend.
You change it with hermes config set terminal.backend docker, and you swap in any of the other six names.
The value is saved in ~/.hermes/config.yaml under the terminal: block, so you can edit the file by hand too.
If a new backend fails, you set the value back to local and run hermes doctor.
| Backend | What it needs before you switch |
|---|---|
| local | It needs nothing. |
| docker | It needs Docker Desktop or Docker Engine running, and Podman works with HERMES_DOCKER_BINARY=podman. |
| ssh | It needs TERMINAL_SSH_HOST and TERMINAL_SSH_USER in ~/.hermes/.env. |
| modal | It needs MODAL_TOKEN_ID and MODAL_TOKEN_SECRET, or a ~/.modal.toml file. |
| daytona | It needs DAYTONA_API_KEY. |
| vercel_sandbox | It needs VERCEL_TOKEN, VERCEL_PROJECT_ID and VERCEL_TEAM_ID. |
| singularity | It needs the apptainer or singularity binary on your path. |
How each terminal backend behaves
Local
Commands run with your real home folder, so tools like git, gh and npm find the logins they already use.
The docs warn that the agent has the same filesystem access as your user account.
Docker
Hermes starts one long-lived container on first use and sends every terminal, file and code call into it with docker exec.
A package the agent installs once is still there on the next command, and it's still there after you restart Hermes.
Setting container_persistent: false gives every chat its own fresh container.
Setting docker_network: false runs the container with no network at all.
Container backends default to 1 CPU core and 5 GB of memory, and you can raise both.
SSH
Hermes keeps one shell alive on the remote host, so the working directory and environment variables survive between commands.
The tools page recommends SSH for security, because the agent can't modify its own code from a different machine.
Modal, Daytona and Vercel Sandbox
These three are cloud sandboxes, and each needs its own account.
They save your files between sessions when persistence is on, and the docs say they don't save running processes.
Daytona caps disk at 10 GiB, and Vercel Sandbox supports the node24, node22 and python3.13 runtimes.
Singularity
This backend exists for HPC clusters and shared machines where Docker isn't available.
The model backend: which provider does the thinking
The second meaning of a Hermes Agent backend is the model provider.
You add a provider with hermes model in your terminal, which is the full wizard for logins and keys.
You switch between providers you've already added with /model inside a chat.
| Provider backend | How you set it |
|---|---|
| Nous Portal | You run hermes setup --portal on a new install, or pick it in hermes model. |
| OpenRouter | You add OPENROUTER_API_KEY to ~/.hermes/.env. |
| Anthropic | You pick it in hermes model, with a login or an API key. |
| OpenAI API | You add OPENAI_API_KEY, and the provider name is openai-api. |
| AWS Bedrock | You pick AWS Bedrock in hermes model, and it uses your standard AWS credentials. |
| Ollama | You choose Custom endpoint and enter http://localhost:11434/v1. |
| LM Studio | You pick LM Studio in hermes model, and its server starts on port 1234. |
| Custom endpoint | You set provider: custom and a base_url for any OpenAI-compatible server. |
The docs call Nous Portal the recommended way to run Hermes, because one login covers 300+ models and the Tool Gateway.
The docs warn that Ollama starts with a small context window, so you set context_length for a local model.
You can add a backup chain with hermes fallback, which switches provider when the main model fails.
The AWS route has its own page, Hermes Agent on Bedrock.
Web, browser and memory backends
Hermes has two web tools, web_search and web_extract, and Firecrawl is the default backend for both.
The docs also list SearXNG, Brave Search, DuckDuckGo, Exa, Parallel, Tavily, Perplexity, Keenable, xAI and OpenAI Native.
A fresh install works with no key, because requests rotate across the free tiers of Exa, Parallel, Firecrawl and Keenable.
You can split the work with web.search_backend and web.extract_backend.
The browser toolset has its own backends, which are Browser Use, Browserbase, Firecrawl, Camofox, Lightpanda, your own Chrome over CDP and a local Chromium.
I explain that toolset in the Hermes Agent browser guide.
Memory has a built-in layer in MEMORY.md and USER.md, and that layer is always on.
You can add one external provider with hermes memory setup, and I rank them in the best Hermes Agent memory.
Using Hermes Agent as a backend
The last meaning flips the direction, because Hermes becomes the backend for another app.
| Mode | How you start it | What connects to it |
|---|---|---|
| API server | You set API_SERVER_ENABLED=true and API_SERVER_KEY in ~/.hermes/.env, then run hermes gateway. | Any OpenAI-compatible frontend connects on port 8642. |
| ACP server | You run hermes acp. | Editors such as VS Code, Zed and JetBrains connect over stdio. |
| MCP server | You run hermes mcp serve. | Other agents such as Claude Code and Cursor connect over stdio. |
| Backend server | You run hermes serve. | The Hermes desktop app and remote clients connect on port 9119. |
| Subscription proxy | You run hermes proxy start. | Apps that only need the raw model connect to it. |
The API server speaks the OpenAI Chat Completions and Responses formats, and the docs name Open WebUI, LobeChat and LibreChat as frontends.
The agent answers with its full toolset, so the frontend gets terminal, files, web search, memory and skills behind it.
The hermes serve command binds to 127.0.0.1 by default, and a public bind always requires an auth provider.
Security trade-offs: local versus Docker
| Backend | Isolation | Dangerous command check |
|---|---|---|
| local | It has none, because it runs on the host. | The check is on. |
| ssh | It is a remote machine. | The check is on. |
| docker | It is a container. | The check is skipped, because the container is the boundary. |
| singularity | It is a container. | The check is skipped. |
| modal, daytona, vercel_sandbox | They are cloud sandboxes. | The check is skipped. |
On local, Hermes checks commands against a list of dangerous patterns and asks you before it runs a match.
On Docker, the container starts with all Linux capabilities dropped, no privilege escalation and a limit of 256 processes.
The docs recommend docker, modal, daytona or vercel_sandbox for production gateway deployments.
A prompt only protects you when a human is there to read it, and a container protects you when nobody is watching.
Any secret you list in docker_forward_env can be read by code inside the container, so forward as few as you can.
Performance and cost
The local backend has no sandbox to start, so nothing sits between the agent and your shell.
The Docker backend reuses one running container, and the SSH backend reuses one connection and one shell.
Every command has a 180 second timeout by default.
The docs warn that slow shell startup files add delay to every command, because the agent starts many shells.
Local, Docker, SSH and Singularity cost nothing beyond your own hardware or server.
Modal, Daytona and Vercel Sandbox are paid cloud services with their own pricing, and your model provider bills separately.
If you want the agent to keep working on these backends after you log off, read Hermes Agent background tasks.
Which model to put behind your Hermes Agent backend
Hermes Agent doesn't ship its own model, so the model backend you pick decides how good the agent is.
I use GoldieBench to shortlist that model, and I want to be straight about what the board measures.
GoldieBench gives each model the same one-shot prompt to build a game, a page, a simulation or a visual, then scores the rendered result from 0 to 10.
It doesn't test terminal backends, Docker sandboxes or tool calling, so there is no GoldieBench score for local versus Docker.
The scores do show how well a model handles hard, multi-step build work, which is the closest public signal I have for an agent's brain.
| Model | Live GoldieBench average | Builds scored | How it reaches Hermes |
|---|---|---|---|
| Claude Opus 5 | 8.27 | 50 | It runs through a cloud provider backend. |
| GPT-5.6 Sol | 8.16 | 50 | It runs through a cloud provider backend. |
| MiniMax M3 | 7.97 | 47 | It runs through a cloud provider backend. |
| Kimi K3 | 7.89 | 50 | It runs through a cloud provider backend. |
| GLM-5.2 | 7.77 | 47 | It runs through a cloud provider backend. |
| Qwable 5 27B Coder | 7.14 | 41 | It runs on your own machine through a custom endpoint. |
Those numbers are the live averages on each model page when I checked on 12 October 2026.
How I'd pair a model with each backend
A heavy terminal job inside Docker involves many decisions in a row, so I'd put a frontier model such as Claude Opus 5 behind it.
A cheap job that runs all day is a better fit for a lower-cost model such as MiniMax M3.
A private job on the local backend pairs naturally with a local model from the local board, such as Qwable 5 27B Coder.
The live page describes Qwable as MLX-only, so it reaches Hermes through a custom OpenAI-compatible endpoint and not through a hosted provider.
A local model is free to run, and it's slower and weaker than the frontier models in that table.
My wider picks are in the best LLMs for Hermes Agent and the best local model for Hermes Agent.
My simple decision rule
I'd stay on local while I'm the only person who talks to the agent.
I'd move to Docker the day a second person can message it.
I'd use SSH when I want the agent on a server that never sleeps.
I'd pick the model after the terminal backend, because safety comes before speed.
The rest of my stack is in the best Hermes Agent setup, and the toolsets that sit on top are in the best Hermes Agent tools.
Also On Our Network
- Agent Operatorsthe exact commands for switching every Hermes backend
- AI Income Deskwhich Hermes backend a business should run
- AI Tool Verdictall seven Hermes terminal backends scored
- agentos.guidea quick-start for Hermes backends inside an Agent OS
- aiprofitboardroom.comJulian's Hermes Agent Docker walkthrough
Pick the room first and the brain second, and you'll have the right Hermes Agent backend.
FAQ
What is a Hermes Agent backend?
It most often means the terminal backend, which decides where the agent's shell commands run. The Hermes docs list seven: local, docker, ssh, modal, daytona, vercel_sandbox and singularity. The word also covers the model provider, web provider, browser provider and memory provider.
How do I switch the Hermes Agent backend?
Run hermes config set terminal.backend followed by a name such as docker. The value is saved under terminal.backend in ~/.hermes/config.yaml. For the model provider run hermes model, and for web and browser providers run hermes tools.
Is the Docker backend safer than local?
Yes. On local the agent has the same file access as your user account. On Docker, commands run inside a container with all capabilities dropped, no privilege escalation and a 256 process limit.
Does Hermes Agent come with its own model?
No. Hermes Agent runs on whichever model backend you connect, such as Nous Portal, OpenRouter, Anthropic, OpenAI, Bedrock, Ollama or a custom endpoint. Julian uses GoldieBench scores to shortlist the model and then tests it on his own work.
Which model is best behind a Hermes Agent backend?
For long terminal jobs Julian picks Claude Opus 5, which averages 8.27 on GoldieBench. For cheap repeated jobs he looks at MiniMax M3 at 7.97, and for private local work he looks at Qwable 5 27B Coder at 7.14.
Does GoldieBench test Hermes terminal backends?
No. GoldieBench scores one-shot builds such as games, pages and simulations from 0 to 10. It does not measure Docker, SSH or any other terminal backend, so the scores only help you choose the model.
Can Hermes Agent be a backend for another app?
Yes. The API server exposes Hermes as an OpenAI-compatible endpoint on port 8642 for frontends such as Open WebUI. Hermes also runs as an ACP server with hermes acp and as an MCP server with hermes mcp serve.


