Hermes Agent doesn’t run natively on Windows. You install it inside WSL2 (Windows Subsystem for Linux). On a Windows VPS or a Windows dedicated server, the path is the same: enable WSL2, install Ubuntu, and run the Linux installer inside that environment.
This guide covers the full setup on Windows Server 2022 and 2025, plus the Task Scheduler and systemd tricks needed to keep Hermes running 24/7.
Time: about 25 minutes, mostly WSL2 setup.
What you need
- A Windows Server VPS or dedicated server with Windows Server 2022 or 2025
- Windows VPS: 4 GB RAM minimum, 8+ GB for local Ollama models
- Windows dedicated server: for large local models or multi-agent setups
- Administrator access
- An API key for your chosen model provider (OpenRouter, Anthropic, OpenAI, Nous Portal, etc.), or plan to use local Ollama models
Step 1: Connect to your Windows server
- Log into the Client Portal and grab your RDP credentials
- From your local machine, open Remote Desktop Connection (
mstscon Windows, Microsoft Remote Desktop on macOS/iOS/Android) - Connect to the server IP and log in as Administrator
Step 2: Enable WSL2 on Windows Server
Open PowerShell as Administrator and run:
wsl --install
On Windows Server, this sometimes needs the manual path. If wsl --install doesn’t work:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Restart when prompted.
After restart, set WSL2 as the default:
wsl --set-default-version 2
Step 3: Install Ubuntu inside WSL2
wsl --install -d Ubuntu-24.04
When install finishes, Ubuntu opens a terminal and asks you to create a Linux username and password. Keep it simple (lowercase, no spaces).
Test:
cat /etc/os-release
You should see Ubuntu 24.04 details.
Step 4: Update Ubuntu
Inside the Ubuntu terminal:
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git
Step 5: Install Hermes Agent
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
The installer handles Python 3.11+, Node.js, and all dependencies.
Reload shell:
source ~/.bashrc
Verify:
hermes --version
Step 6: Run Hermes setup
hermes setup
The wizard asks:
- Model provider (Nous Portal, OpenRouter, Anthropic, OpenAI, Ollama, etc.)
- API key if using a cloud provider
- Default model
- Storage location (defaults to
~/.hermesinside WSL2)
To switch providers later: hermes model.
Step 7: Install Docker inside WSL2
For sandboxed tool execution, install Docker directly inside WSL2 (cleaner than Docker Desktop on Windows Server):
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
Close the WSL2 terminal, reopen it with wsl from PowerShell, then:
sudo service docker start
Tell Hermes to use Docker sandboxing:
hermes config set terminal.backend docker
Enable systemd inside WSL (recommended)
WSL2 doesn’t run systemd by default on older versions. To make Docker auto-start and enable systemd services, edit /etc/wsl.conf:
[boot]
systemd=true
From PowerShell: wsl --shutdown, then reopen WSL. Docker autostarts, and you can use systemd for the Hermes service (Step 10 below).
Step 8: First run
hermes
You’re in the Hermes TUI. Try:
> list all running Windows services on the host
Hermes plans, uses its shell and web tools, and responds. Interactions go into memory automatically.
Exit with Ctrl+D or /quit.
Step 9: Messaging gateway (optional)
To reach Hermes from Telegram, Discord, Slack, WhatsApp, or Signal:
hermes gateway
First run walks through linking each platform. Telegram and Discord are the easiest. Paste a bot token, done.
Step 10: Keep Hermes running 24/7 on Windows
Two options. The simplest covers Windows reboots.
Option A: Windows Task Scheduler (simplest)
Have Windows start WSL and launch Hermes on boot.
-
In WSL2 Ubuntu, create
~/start-hermes.sh:#!/bin/bash cd /home/YOUR_USERNAME exec /home/YOUR_USERNAME/.local/bin/hermes gateway -
Make it executable:
chmod +x ~/start-hermes.sh -
In Windows Task Scheduler:
- Create Basic Task → “Hermes Agent Gateway”
- Trigger: When the computer starts
- Action: Start a program
- Program:
wsl.exe - Arguments:
-d Ubuntu-24.04 -u YOUR_USERNAME /home/YOUR_USERNAME/start-hermes.sh - Finish, then edit: enable Run whether user is logged on or not and Run with highest privileges
-
Right-click the task, Run, to test.
Option B: systemd inside WSL2
If you enabled systemd in Step 7, create /etc/systemd/system/hermes.service:
[Unit]
Description=Hermes Agent Gateway
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=YOUR_USERNAME
WorkingDirectory=/home/YOUR_USERNAME
ExecStart=/home/YOUR_USERNAME/.local/bin/hermes gateway
Restart=on-failure
[Install]
WantedBy=multi-user.target
Enable and start:
sudo systemctl daemon-reload
sudo systemctl enable --now hermes
Combine this with Option A (a task to start WSL on boot) so WSL comes up automatically after Windows restarts.
WSL2 notes for Windows servers
- Files. Keep Hermes data inside the WSL2 filesystem (
~/.hermes) for performance. Windows files via/mnt/c/are slower. - Networking. WSL2 has its own virtual network. Outbound connections (to Telegram, Discord, model APIs) work fine. For inbound webhooks, you’d need Windows port-forwarding rules. Most people avoid this by using outbound-only gateway protocols.
- Windows Updates. Can briefly break WSL networking. Restart WSL (
wsl --shutdownthen reopen) if things act weird.
VPS vs dedicated server for Windows + Hermes
Same installation, different scale.
Windows VPS
Fine for:
- Personal assistant or small team
- Cloud model APIs only
- Small local models (3B-7B via Ollama) with 8+ GB RAM
Windows dedicated server
Better for:
- Large local models (13B-70B) without paying API fees on high-volume use
- Multiple isolated Hermes profiles (one per client/project)
- Heavy sandboxed workloads: build pipelines, browser automation at scale
- GPU-backed inference
- Predictable performance without shared-host variance
Troubleshooting
wsl --install fails on Windows Server. Use the manual dism.exe commands in Step 2. Windows Server’s path differs from Windows 10/11 desktop.
hermes: command not found inside WSL. Run source ~/.bashrc or add ~/.local/bin to PATH.
Docker won’t start after reboot. Enable systemd in /etc/wsl.conf (Step 7), or run sudo service docker start each time.
Task Scheduler runs but Hermes doesn’t respond. Check Windows event logs, and test the wsl.exe command manually in PowerShell with the exact arguments you used in the task.
Deploy a ServerPoint Windows VPS or a Windows dedicated server and run Hermes Agent via WSL2. Prefer native Linux? See Install Hermes Agent on Linux.