Nous ResearchHermes Agent
Deploy Now

Deploy Hermes Agent on Any VPS — Complete Guide

Deploy Hermes Agent on DigitalOcean, Hetzner, or any VPS for 24/7 always-on AI assistance.

Running Hermes on a VPS means your agent is always on — it works while you sleep, handles scheduled tasks, and stays connected to your channels 24/7 without draining your laptop battery.

Before you start:

  • A VPS with at least 1GB RAM (DigitalOcean, Hetzner, Vultr — $5-6/month is sufficient without a local LLM)
  • SSH access to the server
  • The Hermes installer handles Node.js and Python automatically

Steps

  1. 1

    Choose a VPS provider

    Any $5+/month VPS works — DigitalOcean, Hetzner, Vultr, or AWS Lightsail

  2. 2

    SSH into your server

    ssh root@your-server-ip and ensure Node.js 18+ is installed

  3. 3

    Run the installer

    curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash

  4. 4

    Configure channels and API keys

    Edit config.yaml with your Telegram/Discord tokens and model API keys

  5. 5

    Set up process manager

    Install PM2 with npm i -g pm2, then pm2 start hermes --name hermes-agent

  6. 6

    Enable auto-restart

    Run pm2 startup && pm2 save so Hermes survives server reboots

Pro Tips

  • 💡Hetzner CX22 is a popular choice — cheap, fast EU datacenter, excellent uptime for around $4/month
  • 💡Use PM2 ecosystem files to manage multiple Hermes profiles or agents from one config file
  • 💡Set up a daily backup cron to copy ~/.hermes/ to S3 or rsync to another server — losing agent memory is painful

Troubleshooting

Hermes stops running after SSH session closes

You need a process manager. Install PM2: 'npm i -g pm2' then 'pm2 start hermes --name hermes-agent'. This keeps Hermes running after you disconnect.

High memory usage after a few days

This is usually the ChromaDB vector store growing. Set memory limits in PM2: 'pm2 start hermes --max-memory-restart 512M' to auto-restart if it exceeds 512MB.

VPS firewall blocking Telegram webhooks

Open port 8443 in your firewall: 'ufw allow 8443/tcp'. Alternatively use polling mode which doesn't require inbound connections.

Related Guides