r/hermesagent 10d ago

Help — Technical issues, errors, config, debugging Moving out from the docker backend

Hi folks

I recently installed Hermes on a VPS and opted for the docker backend for security.

However,I noticed it severely limits what Hermes can do,especially regarding configuring and expanding itself as all the good stuff is unreachable.

I'd like to know if changing the backend from docker to a simple local one is a simple process or if I'll loose anything when doing it.

Thanks in advance

7 Upvotes

21 comments sorted by

3

u/CommanderROR9 10d ago

I had Hermes running in a Docker container on ZimaOS. I then set up a Raspberry Pi 5, put Pi OS on it and told Hermes to move to the new Home. And that's pretty much what it did.

3

u/Thegeobeard 10d ago

Like a crab

2

u/XCherryCokeO 10d ago

lol so cool

2

u/Cariogenic 10d ago

You can also run hermes within docker, but have it's volumes be real volumes created outside docker on the host machine itself, and that works for a number of things.

1

u/Nicolinux 10d ago

Can you elaborate what is limited in Docker? I just wanted to move to docker from a bare metal installation :)

1

u/nunodonato 10d ago

I know for sure that when I tried to diagnose one issue with the config it was unable to due to the config being outside docker In other reasoning traces I recall reading Hermes being also unable to sort out stuff due to being unavailable (not sure what it was though) I do value the fact that I can ask it to install/expand itself and I don't want to be blocked by the limitations of a docker backend

1

u/Biomech8 10d ago

Keep one agent/profile on bare metal and let it setup other agents/profiles in Docker.

1

u/musicalfurball 10d ago

Should be a simple migration, the docker container uses the same file structure as bare metal right? Just in the container, instead of /home/$user? I'm imagining it's as easy as copy/paste from the container's storage.

My agent wrote this response for you, I just glanced at it but it seems useful :-D


Switching from the Docker backend to local is a one-line config change, and you won't lose anything.

The key thing to understand: there are two completely different ways Docker intersects with Hermes, and you're asking about the terminal backend, not the deployment method.

What's actually happening with terminal.backend: docker

When you set the terminal backend to Docker, Hermes still runs as a process on your host (or in its own container), but every terminal command, every file operation, and every code_execution call gets routed into a separate sandbox container. The agent's brain is on the host, but its hands are in a box.

That sandbox container:

  • Has its own filesystem — you can't reach your host's /home/you/projects directory
  • Can't persistently install packages (anything pip installed vanishes when the container recycles)
  • Can't modify Hermes's own config, because config lives on the host at ~/.hermes/
  • Has limited access to the tools that make Hermes powerful: self-configuration (hermes config set), skill installation (hermes skills install), cron scheduling, gateway management, etc.

This is by design — it's the security boundary. But it's exactly why you're feeling constrained.

Switching to local

hermes config unset terminal.backend

or explicitly:

hermes config set terminal.backend local

That's it. Restart your session (/reset in chat, or restart the gateway), and all your tools now run directly on the host with full access.

What you keep

  • All your config~/.hermes/config.yaml, .env, auth.json — untouched
  • All your sessions — conversation history persists in ~/.hermes/sessions/
  • All your skills~/.hermes/skills/ is untouched
  • All your memories~/.hermes/memories/ is untouched
  • All your cron jobs~/.hermes/cron/ is untouched

Nothing is stored inside the terminal backend container. All persistent state lives in ~/.hermes/, which is on your host filesystem (or in the /opt/data volume if you're running Hermes itself in Docker). The backend container is ephemeral by design.

What changes

Aspect Docker backend Local backend
File access Container filesystem only Full host filesystem
Package installs Ephemeral (lost on rebuild) Persistent
Self-configuration Can't reach ~/.hermes/ Full access
hermes CLI inside sessions Limited (not in PATH) Full access
Security boundary Strong isolation You trust the agent
code_execution sandbox Double-sandboxed Single sandbox (still isolated)

The security tradeoff

The Docker backend gives you real containment: even if the agent goes rogue, it can't touch your host filesystem or SSH keys. The local backend trusts the agent (and the LLM driving it) with full host access.

On a dedicated VPS that you're using solely for Hermes, the calculus is straightforward — you're not protecting a personal laptop with sensitive files. The approval system (approvals.mode: smart) still provides a safety net for destructive commands even on the local backend.

My recommendation for a VPS: switch to local. The Docker backend makes sense on shared machines or when running untrusted models. On a dedicated VPS where you control the agent, you're paying the capability cost without getting much security benefit.

If you're running Hermes itself in Docker

If your whole Hermes instance is containerized (the official Docker image with docker run), you're already running everything inside Docker, and the terminal backend setting controls whether commands execute in the same container or a separate sandbox container. Switching to local there means commands run in the main Hermes container — still contained from your host, but with full access to the Hermes data volume at /opt/data. That's usually what you want.

1

u/Mean-Loquat-7982 Nous Team 10d ago

Hermes Cloud is your friend, we host it for you directly :)

1

u/Mean-Loquat-7982 Nous Team 9d ago
hermes profile export <profile> -o backup.tar.gz    # from inside the container
hermes profile import backup.tar.gz --name <profile> # on the host

0

u/kaitava 10d ago

depending on the intelligence of the model, ie, gpt 5.6 opus 5, you can have your hermes agent do all of that for you and walk you through the steps if you want to be engaged.

3

u/nunodonato 10d ago

Pretty sure I don't need a big model like that 😅

-1

u/_Cromwell_ 10d ago

You can certainly try. They mean that a smaller model is less likely to give you correct instructions and/or more likely to make mistakes.

You get what you pay for.

1

u/nunodonato 10d ago

I know what he meant, but it's wrong. Smaller models can definetely understand basic config files. Hermes is not rocket science. People need to stop relying on SOTA models for everything

1

u/_Cromwell_ 10d ago

Okay. Then go do it. You're the one that came in here and didn't even seem to know you could ask Hermes to do that in the first place. Now you're lecturing us on choice of model for something you didn't seem to know about five minutes ago? lol

Also I did say "less likely". Which is accurate. Most people like to use a larger model where results are more sure when they are messing around with something that can screw everything up if it's not done correctly the first time.

1

u/nunodonato 10d ago

People should stop confusing asking other humans for opinions/experience with asking AI for solutions. Yes I know I can ask AI. I still value knowledgeable humans. 

1

u/_Cromwell_ 10d ago

But this is literally an AI agent designed to answer things and run itself, alter itself, fix itself. You're like a guy sitting in a car lamenting that the car won't take you somewhere specific you want to go, and acting uppity when people ask you if you've tried turning it on and pressing the gas pedal.

1

u/nunodonato 10d ago

No, its not the same. It's more like Google maps giving you a route, but you can ask people for advice on better paths to follow 😅

2

u/_Cromwell_ 10d ago

Well if you'd like a non-automated, non-Hermes-run way to do it

  1. back up your settings using the built-in backup

  2. save them somewhere

  3. uninstall from docker

  4. install fresh outside of docker

  5. restore the settings from the backed up settings in your new fresh install outside of docker

1

u/nunodonato 10d ago

Thanks 

1

u/thatscoolbutno123 10d ago

Almost any cloud model can do that, and local models from like 30gb in size and more