Hermes Agent Setup on a Hostinger VPS (Ubuntu 24.04)
By Riz Pabani on 08-Apr-2026

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
- Open Telegram and search for @BotFather
- Send
/newbot - Give it a name (e.g., "Riz's Hermes Agent")
- Give it a username (e.g.,
riz_hermes_bot) - 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
- Get a Hostinger KVM 2 VPS with Ubuntu 24.04
- Create a non-root user, install as that user
- One-line install:
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash - Run
hermes setupto connect your LLM provider - Set up Telegram via @BotFather and
hermes gateway setup - Register as a systemd service with
hermes gateway install+loginctl enable-linger - 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

OpenClaw vs Hermes vs Cowork: Honest Comparison
OpenClaw vs Hermes vs Cowork compared from real use. Setup, memory, automation, cost, and honest tra...

How to Build a Second Brain in Obsidian Using AI
Karpathy shared his LLM Wiki method for a second brain with AI. I built one in Obsidian. Here's the ...

Claude Cowork vs ChatGPT — Which One Does the Work?
Claude Cowork vs ChatGPT — I use both daily. They're good at completely different things. Here's whe...