Golden Docker container logo on a black background, representing the Hermes AI agent running in Docker on Windows 11

How to run the Hermes AI agent in Docker on Windows 11 with an admin dashboard

Local AI on Windows series  ·  View all parts
Part 2: Hermes AI agent on Ubuntu via Hyper-V  ·  Part 3 of 3

Hermes is a local AI agent from NousResearch that can answer questions, execute tasks, and write files — all running on your own hardware. This guide walks you through setting it up in Docker on Windows 11, with two containers: one for the agent itself and one for the admin dashboard and chat interface.

No cloud dependency, no system-wide installation. When you’re done testing, one command removes everything.

Prerequisites

  • Docker Desktop installed and running on Windows 11
  • PowerShell (no admin rights needed)
  • An API key for a supported LLM provider — DeepSeek, OpenAI, or similar
  • About 10 minutes

How the setup works

The final result is two permanently running containers and two types of temporary containers:

  • hermes-agent — the gateway container that runs the AI brain. Listens internally on port 8642, exposed on host port 8643.
  • hermes-dashboard — the dashboard container that serves the web UI (admin panel + chat interface) on port 9120. Talks to the gateway over a private Docker network.
  • Setup wizard — a temporary container that runs once to configure the agent, then removes itself.
  • CLI chat — an optional temporary container for interactive terminal-based chat sessions.

All containers share the same config folder on your Windows machine, mounted as a volume. Anything Hermes writes to /opt/data/ inside the container appears directly in that folder on your PC — even after the containers stop.

Step 1: Create the config folder

Each Hermes instance stores its settings in a local folder. Create a dedicated folder for this installation:

mkdir C:\Users\YourUsername\hermes-data

Replace YourUsername with your actual Windows username throughout this guide. You can find your username by running echo $env:USERNAME in PowerShell.

Step 2: Run the setup wizard

This command starts an interactive configuration wizard. It asks for your LLM provider, API key, and a few preferences. When it’s done, it writes the config to your folder and the container removes itself automatically.

docker run -it --rm -v C:\Users\YourUsername\hermes-data:/opt/data nousresearch/hermes-agent:latest setup

When prompted for a terminal backend, select none — this is the safe option for a first setup and works on all systems.

Step 3: Start the gateway container

The gateway is the core of the agent. It loads your config, connects to the LLM, and handles all requests. Run it in the background with a unique name and port:

docker run -d --name hermes-agent -v C:\Users\YourUsername\hermes-data:/opt/data -p 8643:8642 nousresearch/hermes-agent:latest gateway run

Verify it started correctly:

docker ps

You should see hermes-agent listed with status Up.

Step 4: Create a custom Docker network

By default, Docker containers cannot find each other by name. A user-defined bridge network fixes this — it lets the dashboard container reach the gateway using its container name instead of an IP address.

docker network create hermes-net
docker network connect hermes-net hermes-agent

Step 5: Start the dashboard container

The dashboard serves the web interface on port 9120. It connects to the gateway over the private network using its container name, and mounts the same config folder so both containers share the same state.

docker run -d --name hermes-dashboard --network hermes-net -p 9120:9119 -v C:\Users\YourUsername\hermes-data:/opt/data -e GATEWAY_HEALTH_URL=http://hermes-agent:8642 nousresearch/hermes-agent:latest dashboard --host 0.0.0.0 --insecure

The --insecure flag is safe here because the dashboard only listens on localhost — it is not exposed to the internet.

Step 6: Open the dashboard and start chatting

Open your browser and go to:

http://localhost:9120

You’ll see the Hermes dashboard with the admin panel (shown in green) and the chat interface. Type a question and the agent will respond using the LLM you configured in the setup wizard.

Step 7: Interactive CLI chat (optional)

If you prefer a terminal-based chat session, you can start a temporary container that connects to the running gateway:

docker run -it --rm --network hermes-net -v C:\Users\YourUsername\hermes-data:/opt/data -e GATEWAY_HEALTH_URL=http://hermes-agent:8642 nousresearch/hermes-agent:latest

After startup you’ll see a prompt (>) where you can type your questions directly. Exit with exit or Ctrl+C. The gateway container keeps running in the background, so your next CLI session connects to it immediately.

Step 8: Finding files written by the agent

When you ask Hermes to save something — a summary, a script, a list — it writes the file to /opt/data/ inside the container. Because of the volume mount, that file appears directly on your Windows machine at:

C:\Users\YourUsername\hermes-data

Via File Explorer:

  1. Press Windows key + E to open File Explorer
  2. Navigate to C:\Users\YourUsername\hermes-data
  3. Sort by date modified — the newest file will be at the top

Via PowerShell:

cd C:\Users\YourUsername\hermes-data
dir

To read a file directly in the terminal:

Get-Content .\filename.txt

You can also inspect the folder from inside the container without stopping it:

docker exec hermes-agent ls -la /opt/data

The volume is always in sync — no extra Docker commands needed to access your files. Even if you remove both containers, the files in hermes-data remain on your machine.

Step 9: Stop and clean up

When you’re done, stop and remove the containers and network:

docker stop hermes-agent hermes-dashboard
docker rm hermes-agent hermes-dashboard
docker network rm hermes-net

If you also want to delete the config folder and all files Hermes wrote:

Remove-Item -Recurse -Force C:\Users\YourUsername\hermes-data

Leave the folder in place if you want to reuse the same configuration next time — just re-run steps 3 through 5 and everything picks up where it left off.

Why this works

  • Unique container names and ports prevent conflicts if you already have other Docker containers running
  • User-defined bridge network (hermes-net) lets the dashboard reach the gateway by container name (hermes-agent) without hardcoding an IP address
  • Volume mount (-v) keeps all config and output files on your Windows machine — containers are disposable, your data is not
  • --insecure flag disables HTTPS for the dashboard, which is fine because it only accepts connections from localhost
  • CLI chat container is stateless — it uses the running gateway and the shared config folder, then disappears cleanly when you exit

Conclusion

Two permanent containers, one config folder, and a browser tab — that’s the core Hermes setup. The gateway handles the AI logic, the dashboard handles the web interface, and the volume mount ensures your files outlive the containers.

If you also used the CLI chat in step 7, that was a third container — but a temporary one that removes itself the moment you exit. The two that matter long-term are the gateway and the dashboard.

When you want to reset, one cleanup command removes all containers and the network. Your files in hermes-data stay until you explicitly delete them.

Featured image by Rubaitul Azad on Unsplash.

Leave a Reply

Your email address will not be published. Required fields are marked *