How to Deploy Hermes Agent on Your Own VPS: Step-by-Step Guide (2026)

TL;DR: Deploy Hermes Agent on a $6/mo VPS — open-source AI agent with 185k+ GitHub stars, persistent memory, and Kanban task scheduling. Own your automation stack with no lock-in and no data leaving your server.

Why Self-Host Hermes Agent?

Here’s the problem with SaaS AI agents: you pay per seat, your data lives on someone else’s server, and you’re locked into whatever features they decide to ship. Self-hosting Hermes Agent flips that — one VPS, unlimited users in your team, full control over which models you use, and your conversation history stays on hardware you control.

I’ve been running Hermes Agent on a $6/mo DigitalOcean Droplet for the past three months, and it handles everything from daily news summarization (via cron jobs) to GitHub PR reviews (via the Kanban pipeline). The agent never sleeps, never asks for a credit card top-up, and the active community pushes updates almost daily.

Feature Hermes Agent (Self-Hosted) SaaS AI Agent (e.g. ChatGPT Teams)
Monthly cost $6–12 VPS $25–$60 per seat
Data residency Your VPS Provider’s cloud
Model choice Any API (DeepSeek/OpenAI/Anthropic) Provider’s model only
Users per account Unlimited (SSH/WebUI) Per-seat billing
Skills/plugins Open marketplace Closed ecosystem
Persistent memory Hindsight (self-hosted) Provider-managed

So if you’re a solo developer, a small team, or anyone who values data privacy and predictable costs, self-hosting is the way to go.

What You’ll Need to Deploy Hermes Agent

Before we start, make sure you have:

Requirement Recommended Spec Notes
VPS 1 vCPU, 2GB RAM, 25GB SSD $6/mo DigitalOcean Droplet or $6/mo Vultr instance
OS Ubuntu 22.04 LTS or Debian 12 Both have good Python package support
Python 3.11+ Hermes requires Python 3.10–3.12
Domain (optional) Any DNS-managed domain Needed for HTTPS + WebUI access with Cloudflare Tunnel
API Key DeepSeek/OpenAI/Anthropic At least one provider key for the agent to function

My recommendation: Start with a Vultr $6/mo instance (2GB RAM, 1 vCPU). If you hit memory limits during heavy skill usage, scale to the $12/mo plan. I started on a $6 plan and only upgraded after I added six concurrent cron jobs.


Step 1: Provision Your VPS

👉 Get your VPS here (both offer free credits for new users):

  • DigitalOcean$200 credit for 60 days on new accounts. The $6/mo Droplet (2GB RAM, 1 vCPU, 25GB SSD) handles Hermes Agent with room to spare.
  • Vultr$50–$100 credit for new users. Same price tier, great alternative if you prefer the Vultr control panel or want more global data center options.

Disclosure: If you sign up through these links, I may earn a commission at no extra cost to you. I personally use both providers in production and recommend them based on real experience.

Sure, this is the only step that costs money. But it’s the most important one — pick a reliable provider so you’re not rebuilding your agent when the VPS goes down.

Vultr is my top pick for Hermes deployment. Here’s why:

  1. Sign up at Vultr — new users get $50–$100 credit on their first deposit
  2. Deploy a cloud instance with:
    • Ubuntu 22.04 LTS
    • $6/mo plan (2GB RAM, 1 vCPU, 25GB SSD)
    • Add your SSH key for passwordless login
  3. Note the instance IP address
  4. SSH in: ssh root@<your-instance-ip>

Vultr has 32 data center locations worldwide — so you can pick one closest to you for the lowest latency. Their NVMe SSD storage is fast enough for Hermes’s Hindsight memory database.

Option B: DigitalOcean (Alternative)

DigitalOcean also offers a $6/mo Droplet and is a solid choice, especially in North America. The deployment steps are identical once you have SSH access.

Pro tip from my experience: Enable automatic backups ($1/mo extra) on your VPS. When I accidentally broke my Hermes config while experimenting with a custom skill, having a backup saved me a full reinstall. Worth every penny.


Step 2: Install Python 3.11 + uv

Modern Hermes Agent uses uv — a fast Python package manager written in Rust. So don’t use the system Python; install a clean 3.11 via the deadsnakes PPA.

# Update system packages
apt update && apt upgrade -y

# Install Python 3.11
apt install -y software-properties-common
add-apt-repository -y ppa:deadsnakes/ppa
apt install -y python3.11 python3.11-venv python3.11-dev

# Set Python 3.11 as default
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 1

# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.bashrc

# Verify
python3 --version   # Should show Python 3.11.x
uv --version        # Should show uv 0.4.x or newer

Look, I made this mistake myself. In my first deployment I used the system Python 3.10 from Ubuntu’s default repo. Everything worked until I tried to install a skill that required 3.11+. So save yourself the headache — go with 3.11 from the start.


Step 3: Clone and Install Hermes Agent

cd /opt
git clone https://github.com/NousResearch/hermes-agent
cd hermes-agent

# Create virtual environment and install
uv venv
source .venv/bin/activate
uv pip install -e .

Plus, the -e flag installs in editable mode, so pulling future updates is just git pull && uv pip install -e . — no rebuild needed.


Step 4: Configure Hermes Agent API Providers

Hermes needs at least one LLM provider to function. Run the setup wizard:

hermes setup

This prompts you for:

  • Primary provider — I use DeepSeek (cheapest, ~$0.14/M input tokens) for most tasks and fall back to Claude for complex reasoning
  • API key — Paste your key (it’s stored locally in ~/.hermes/config.yaml)
  • Default model — The model used for general tasks

Or if you prefer manual configuration, edit ~/.hermes/config.yaml directly:

providers:
  deepseek:
    api_key: "***"
    models:
      default: "deepseek-chat"
  openai:
    api_key: "***"
    models:
      default: "gpt-4o"
Provider Cost per 1M input tokens Best For
DeepSeek $0.14 Daily automation, low-cost tasks
Anthropic Claude $3.00 Complex reasoning, code review
OpenAI GPT-4o $2.50 General purpose, stable
OpenRouter Varies Access to 200+ models from one key

Compliance note: Your API key never leaves your VPS — all requests go directly from your Hermes instance to the provider’s API. No middleman, no data logging by a third-party agent platform.


Step 5: Set Up Hermes Hindsight Memory

Still, Hindsight is Hermes’s persistent memory system. Without it, the agent forgets everything between sessions — like starting a new chat every time. With it, the agent remembers past conversations, learns your preferences, and builds context over time.

# Initialize the Hindsight memory store
hermes setup --memory

# Verify it's running
curl http://localhost:8000/health
# Should return: {"status": "ok"}

Hindsight uses a local vector store (SQLite + embeddings) so there’s no dependency on external databases. And for my setup with 3 months of daily usage, the database is under 200MB — negligible on a 25GB disk. By comparison, Supermemory’s approach uses a different persistence strategy that’s worth checking out if you’re evaluating memory systems.


Step 6: Install Skills and Go Live

Skills are what make Hermes useful beyond basic chat. The skill marketplace has everything from web scrapers to GitHub automation to Telegram bots.

# List available skills
hermes skill list

# Install a few to start
hermes skill install web-search
hermes skill install github-pr-review
hermes skill install cron-scheduler

# Start the agent (interactive mode)
hermes run

To run Hermes as a persistent service (recommended for a VPS deployment):

# Create a systemd service
cat > /etc/systemd/system/hermes.service << 'EOF'
[Unit]
Description=Hermes Agent
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/opt/hermes-agent
ExecStart=/opt/hermes-agent/.venv/bin/hermes run --daemon
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable hermes
systemctl start hermes
systemctl status hermes

If you want the WebUI:

hermes webui
# Access at http://<your-vps-ip>:8080

(Optional) Cloudflare Tunnel for HTTPS Web Access

Don’t have a domain? Cloudflare Tunnel gives you a *.trycloudflare.com subdomain with automatic HTTPS:

# Install cloudflared
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o /usr/local/bin/cloudflared
chmod +x /usr/local/bin/cloudflared

# Run tunnel to Hermes WebUI
cloudflared tunnel --url http://localhost:8080

You’ll get a URL like https://hermes-foobar.trycloudflare.com — access your WebUI from anywhere with HTTPS. That said, the tunnel is temporary by default; you can upgrade to a named tunnel with your own domain later.


Hermes Agent Pricing Breakdown

Let’s be honest about costs. Here’s what you’re actually paying:

Component Monthly Cost Notes
VPS (Vultr $6 plan) $6.00 2GB RAM, 1 vCPU, 25GB SSD
API usage (DeepSeek, light) $2–5 ~500k tokens/day for personal use
API usage (DeepSeek, heavy) $10–20 Cron jobs + PR reviews + daily summaries
Domain (optional) $1/mo amortized ~$12/year for a .com
Total (light usage) $8–11/mo One-time setup cost
Total (heavy usage) $16–26/mo Still cheaper than one SaaS seat

So compare that to ChatGPT Teams at $25/seat/month or Claude Enterprise at $30/seat/month — and you’re getting more features, full data control, and unlimited users.


Common Mistakes I Made (So You Don’t Have To)

  1. Using the system Python — Ubuntu ships Python 3.10, but some skills need 3.11+. Install via deadsnakes PPA.
  2. Forgetting to enable swap — 2GB RAM is fine, but if you run multiple skills simultaneously, add 2GB swap: fallocate -l 2G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile
  3. Skipping the firewall — Hermes WebUI on port 8080 is exposed to the internet by default. ufw allow 22/tcp && ufw allow 8080/tcp && ufw enable — and use Cloudflare Tunnel with access rules for production.
  4. Not pinning the Hermes version — Run hermes --version before updating. Once a month I clone the release tag instead of main to avoid breaking changes.
  5. Ignoring logsjournalctl -u hermes -f is your debug best friend. When a skill fails silently, the logs always tell you why.

FAQ

Q: Can I run Hermes on a Raspberry Pi? A: Yes — Hermes runs on ARM64. A Pi 5 with 8GB RAM works, but expect slower skill installs. I use a Pi 4 at home for local testing before deploying skills to the VPS — for lightweight terminal-only coding tasks, oh-my-pi is actually a better fit on lower-end hardware.

Q: Do I need Docker? A: No. Hermes installs natively with Python + uv. Docker is optional if you want container isolation.

Q: How do I update Hermes? A: cd /opt/hermes-agent && git pull && source .venv/bin/activate && uv pip install -e . && systemctl restart hermes

Q: Can I use a different LLM provider? A: Sure — Hermes supports DeepSeek, OpenAI, Anthropic, OpenRouter, and custom providers. So you can run multiple providers and configure which model handles which task type.

Q: Is this production-ready for a team? A: Absolutely — the Kanban scheduler, multi-profile isolation, and skill system are designed for multi-user setups. Each team member gets their own profile with independent memory and skills.


Disclosure: This post contains affiliate links for DigitalOcean and Vultr. If you sign up through these links, I may earn a credit at no extra cost to you. All recommendations are based on my personal experience running Hermes Agent in production for three months.