Hermes Agent Setup on a Hostinger VPS (Ubuntu 24.04)

By Riz Pabani on 08-Apr-2026

Hermes Agent Setup on a Hostinger VPS (Ubuntu 24.04)

Quick context if you're new here.

An AI agent harness is the bit that sits between you and a large language model. The model itself (Claude, GPT-4, Llama, whatever) does the thinking. The harness is what lets you actually use it: it handles the conversation, runs terminal commands on your behalf, remembers things between sessions, connects to Telegram or Slack, and manages tools like web browsing and file access. Without a harness, you're just copy-pasting into a chat window.

OpenClaw was the first open-source harness that got popular. I wrote a guide for setting it up on a Hostinger VPS back in January — it's still one of the most-read things on this site. Since then, Nous Research (the team behind the Hermes family of models) shipped Hermes Agent. It's the same idea (open-source, self-hosted, MIT licence) but it goes further. It has a learning loop that creates and improves its own skills over time, supports 400+ models out of the box, and has a built-in migration path from OpenClaw.

A lot of people running OpenClaw are now looking at it. So here's the same walkthrough again: getting Hermes Agent running on a Hostinger VPS with Ubuntu 24.04. Just the steps.

If you're migrating from OpenClaw, there's a section at the end for that too.

Why Hostinger, why a VPS

Same reasoning as the OpenClaw post. You want your agent running 24/7, not tied to your laptop being open. A VPS gives you that.

Hostinger's KVM 2 plan is the one I'd go with: 2 vCPU cores, 8 GB RAM, 100 GB NVMe SSD, Ubuntu 24.04 LTS. It's more than enough for the Hermes Agent harness. The actual LLM inference happens on the provider side (OpenRouter, Nous Portal, etc.), so you don't need a GPU. You're basically running a Python process, a messaging gateway, and a local SQLite database.

As of April 2026, the KVM 2 plan is still around £50/year.

What you'll need before you start

  • A Hostinger VPS with Ubuntu 24.04 (the default image includes git, which is the only real prerequisite)
  • SSH access to your VPS (Hostinger gives you this through hPanel immediately after provisioning)
  • An API key from an LLM provider. OpenRouter is the easiest starting point (200+ models, pay-as-you-go). Nous Portal works too if you want to stay in the Nous ecosystem
  • If you want a Telegram bot: a bot token from @BotFather (takes 30 seconds) and your Telegram user ID (message @userinfobot to get it)

Step 1: SSH into your VPS

ssh root@your-server-ip

If this is a fresh Hostinger VPS, you'll have set the root password during provisioning. Use that.

First thing I always do on a fresh box is update everything:

apt update && apt upgrade -y

Then create a dedicated non-root user. Don't install Hermes as root. The installer is designed to run as a normal user, and you want the systemd service running under this account too.

adduser --gecos "" hermes
usermod -aG sudo hermes
su - hermes

Run everything from here on as the hermes user.

Step 2: Install Hermes Agent

One command. This handles Python 3.11, Node.js, uv, and all dependencies:

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

Then reload your shell:

source ~/.bashrc

Check it worked:

hermes --version
hermes doctor

hermes doctor runs a quick health check. It'll flag missing dependencies, broken paths, or config issues before you waste time debugging later. You should see something like v0.7.x from the version check. If doctor comes back clean, you're good.

Step 3: Run the setup wizard

hermes setup

This is an interactive wizard. Arrow keys and Enter. It configures everything in one go. Here's what you'll walk through, in order.

First, it checks for an existing OpenClaw install. If it finds one at ~/.openclaw, it asks whether you want to migrate now. Say yes if you're switching over, or skip it and use hermes claw migrate later (there's a full section on this below).

Then it asks you to pick an LLM provider. You'll see a list: Nous Portal, OpenRouter, OpenAI, Anthropic (Claude), DeepSeek, and a "custom endpoint" option for local setups like Ollama or vLLM. I use OpenRouter because it gives you Claude, GPT-4, Llama, Mistral, and everything else through one API key. For Nous Portal, it opens a browser link for OAuth instead of asking for a key.

Paste your API key when prompted. Keys get stored in ~/.hermes/.env.

Next it asks for a default model. You'll see a searchable list of what's available from your provider. Popular picks: claude-3.5-sonnet, gpt-4o, llama-3.3-70b, deepseek-r1. You can change this any time with hermes model, so don't overthink it.

After that, the wizard asks which toolsets to enable: terminal/shell execution, web browsing, code interpreter, file system tools, skill creation, browser automation, and others. Toggle them with the spacebar. On a VPS, I'd enable most of them but set the terminal backend to Docker later for safety (hermes config set terminal.backend docker).

It then asks whether to enable persistent memory. Yes. That's half the point of having your own agent. You can also create or import a persona file (SOUL.md) that defines how your agent behaves. If you migrated from OpenClaw, your existing persona and memories are already here.

The wizard also offers to configure messaging gateways (Telegram, Discord, Slack, WhatsApp, etc.). I cover Telegram separately in Step 5 below, but you can set it up here too. It asks for the same bot token and user ID either way.

Final options: terminal backend (Local, Docker, or SSH; Docker is the safest on a VPS) and approval mode (whether the agent should ask before running anything dangerous or auto-approve safe commands).

At the end it shows a summary of everything it's about to write. Confirm, and it saves to ~/.hermes/config.yaml and ~/.hermes/.env. Done.

If you want to tweak individual settings later without re-running the whole wizard:

hermes model       # switch LLM provider or model
hermes tools       # enable/disable tools
hermes config set  # change specific values

Step 4: Test it locally

Before wiring up Telegram or anything else, just check it works:

hermes

You're now in the Hermes CLI. Type something. Ask it to list files, run a command, whatever. If it responds and can execute tools, you're good.

Type /exit to leave.

Step 5: Set up the Telegram gateway

This is the bit that makes it useful. Once the Telegram gateway is running, you can message your agent from your phone, anywhere, any time.

Create a Telegram bot

  1. Open Telegram and search for @BotFather
  2. Send /newbot
  3. Give it a name (e.g., "Riz's Hermes Agent")
  4. Give it a username (e.g., riz_hermes_bot)
  5. Copy the bot token. You'll need it in a second

Connect it to Hermes

Run the dedicated gateway setup:

hermes gateway setup

Select Telegram. It'll ask for two things: your bot token from @BotFather, and your Telegram user ID. The user ID is a security measure. It means only you can talk to the bot, not random people who find the username. If you don't have your user ID, message @userinfobot on Telegram and it'll tell you.

To start the gateway manually and check it's working:

hermes gateway start

Send your bot a message on Telegram. If it responds, you're connected.

Step 6: Run it as a systemd service

You don't want to leave an SSH session open forever. Register Hermes as a systemd service so it starts automatically on boot and restarts if it crashes:

hermes gateway install

This creates a user-level systemd service. One more thing: you need to enable "lingering" so the service keeps running after you close your SSH session. Without this, systemd kills your user services when you log out. This is the single most common "why did my bot stop working?" issue on VPS setups.

loginctl enable-linger hermes

Start it and enable on boot:

systemctl --user enable --now hermes-gateway

To check the status:

systemctl --user status hermes-gateway

To see logs:

journalctl --user -u hermes-gateway -f

To restart after a config change:

systemctl --user restart hermes-gateway

Step 7: Lock it down

Same advice as the OpenClaw post. Don't leave your VPS wide open. You already created a non-root user in Step 1. Now lock down SSH and set up the firewall.

Set up SSH key authentication

From your local machine (not the VPS):

ssh-keygen -t ed25519
ssh-copy-id hermes@your-server-ip

Then on the VPS, disable password authentication and root login. Edit /etc/ssh/sshd_config (you'll need sudo for this):

PasswordAuthentication no
PermitRootLogin no

Restart SSH:

sudo systemctl restart sshd

Firewall

Some minimal Hostinger Ubuntu images don't ship with ufw, so install it first:

sudo apt install ufw -y
sudo ufw allow OpenSSH
sudo ufw --force enable

You don't need to open any other ports. The Telegram gateway makes outbound connections. It doesn't need inbound traffic.

Migrating from OpenClaw

If you're already running OpenClaw on this VPS (or another machine), Hermes has a built-in migration tool:

hermes claw migrate

This imports your SOUL.md persona, memories, custom skills, API keys, messaging settings (Telegram tokens, etc.), and workspace instructions. Basically everything that made your OpenClaw agent yours.

If you want to preview what it'll do before committing:

hermes claw migrate --dry-run

To skip secrets (if you'd rather re-enter API keys manually):

hermes claw migrate --preset user-data

To overwrite if you've already partially migrated:

hermes claw migrate --overwrite

I didn't actually bother migrating myself. I'd been running OpenClaw for a few months and decided to start Hermes from scratch. Fresh persona, fresh memory, clean slate. If your OpenClaw setup is working well and you've invested time in your SOUL.md and skills, the migration tool is there. But if you're not precious about your existing config, starting fresh is fine too. Hermes spins up fast enough that you won't miss much.

What Hermes does differently from OpenClaw

I've written a full comparison of OpenClaw, Hermes Agent, and Claude Cowork separately. But the short version of why I switched.

Hermes just feels faster. It spins up quickly, responds quickly, and I drive it almost entirely from Telegram now. That's the main thing. It's become my default interface for talking to an LLM, not a chat window in a browser.

The learning loop is the other big difference. Hermes creates skills from things it does repeatedly, then refines them over time. OpenClaw had a similar concept, but Hermes is more aggressive about it. It actively improves its own skills between sessions.

Provider flexibility is better too. OpenClaw was more locked to specific backends. Hermes gives you 400+ models through Nous Portal and lets you switch mid-conversation with /model. I bounce between Claude and Llama depending on the task.

It also has built-in cron scheduling (daily research briefs, weekly reports, whatever) without needing external tools. And as of v0.7.0 (April 2026), it can act as an MCP server, so other tools can plug into it. There's also subagent delegation (spinning up parallel agents for complex tasks), though I haven't used that yet myself.

Troubleshooting

"hermes: command not found" after install Run source ~/.bashrc (or ~/.zshrc). The installer adds hermes to your PATH but your current shell session doesn't know that yet.

Gateway starts but Telegram bot doesn't respond Check the bot token is correct. Try hermes gateway start manually to see error output. Most common issue is a typo in the token.

Systemd service keeps crashing Run journalctl --user -u hermes-gateway -n 50 to see the last 50 log lines. Usually it's a missing API key or an expired token.

Gateway stops when I close my SSH session You forgot loginctl enable-linger hermes. Run it, then systemctl --user daemon-reload and restart the service.

Provider returns errors Run hermes model and make sure your provider and model are set correctly. If using OpenRouter, check your credit balance.

Summary

  1. Get a Hostinger KVM 2 VPS with Ubuntu 24.04
  2. Create a non-root user, install as that user
  3. One-line install: curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
  4. Run hermes setup to connect your LLM provider
  5. Set up Telegram via @BotFather and hermes gateway setup
  6. Register as a systemd service with hermes gateway install + loginctl enable-linger
  7. Lock down SSH and enable the firewall

The whole thing takes about 20 minutes. Less if you've done the OpenClaw version before.

If you want me to do this with you live (setting up Hermes, configuring it for your specific use case, building your first custom skills), that's exactly what a training session covers. Book one if you want to skip the trial-and-error.


Have questions? Message me — I'll tell you honestly whether this is something you need help with or can handle yourself.

Related Articles