Zero to autonomous in about thirty minutes.
The full walkthrough for setting up Hermes — your own persistent-memory autonomous AI agent — on a $5 VPS, front-ended by Telegram, powered by your own API keys. Sixteen steps. Read top to bottom or skip with the table of contents.
Preflight checklist
Five things to have ready before you start. None of them take more than a minute.
- A credit card for the VPS subscription. ~$5/mo at the cheapest tier; annual is fine.
- A Telegram account on your phone or desktop. Free.
- An LLM API key. Anthropic, OpenRouter, or local Ollama. Pick one to start.
- An image/video API key if you want creative output. KIE.ai, Higgsfield, or both.
- 30 minutes of focus. The install runs unattended, but you'll context-switch a few times.
Do not paste any keys into a chat. All keys go directly into Hermes during setup. If a key leaks, rotate it immediately at the provider's dashboard.
What you're building
A high-level map of the moving pieces, so the rest of the guide makes sense.
Hermes is one program running on a small server you rent. You talk to it through Telegram (or Discord). It reads and writes from a small local database (its memory), calls an LLM for thinking, and uses tools to do things in the world — generate images, push code, send messages, run code, post to X.
The whole thing is one Docker container running on the VPS. You don't need to write code to install it. The install path uses Hostinger's one-click VPS template.
Steps 01–08 · ~20 minutes
Get a live agent that responds to you on Telegram. After step 08 you have a working Hermes you can throw real prompts at.
Pick your VPS
Hermes runs on a tiny Linux server. Buy it once, re-use it forever.
Go to Hostinger and buy a KVM 2 plan or higher. KVM 1 will technically work for a single user but the agent feels sluggish at scale. KVM 2 (~$8/mo or $5/mo annual) is the sweet spot.
Why Hostinger? They publish a one-click Hermes template, run year-long subscriptions cheap, and ship updates often. Other VPS providers work but you'll install Hermes manually.
| Plan | Use Case | Cost (annual) |
|---|---|---|
| KVM 1 | Solo, light prompts only | ~$5/mo |
| KVM 2 | Solo or small team, normal use | ~$5–8/mo |
| KVM 4 | Heavy creative output, multi-user | ~$15/mo |
| KVM 8 | Production, many users, agents | ~$30/mo |
Pick a region close to you (latency matters for Telegram round trips). Skip every Hostinger upsell except basic backups.
Deploy the Hermes template
One-click install. No SSH, no Docker, no manual setup.
Inside Hostinger's hPanel:
- Open your VPS dashboard.
- Hit Operating System → Templates.
- Search
Hermesin the template gallery. Click Select. - Confirm and let it deploy. Three to five minutes.
When the template lands, you'll see a green "Hermes Gateway running" status in your VPS panel. The Gateway is the front door — a tiny HTTP server that listens for messages from Telegram and routes them into the agent.
# Optional — most people skip this step ssh root@your-vps-ip systemctl status hermes-gateway # Should print: Active: active (running)
If the dashboard shows green, you're done with step 2. The Gateway has nothing to talk to yet — that's steps 3 and 4.
Create your Telegram bot
Telegram is the front door. The bot is your knock.
In Telegram, search for the user @BotFather. Open the chat and send /newbot.
BotFather will ask for two things:
- A display name — the name you'll see in chats. e.g., "Hermes for Kyle"
- A username — must end in
_bot. e.g.,kyle_hermes_bot
BotFather replies with a token that looks like this:
7842931572:AAH…BqXcVnLm9PoQrStUvWxYz
This token is a password. Anyone with it can post as your bot. Save it somewhere safe (1Password, Bitwarden), never paste it in chat, and never commit it to a public repo.
Paste the token into Hermes' settings panel under Telegram → Bot Token. Hit save. The Gateway will pick it up within ~10 seconds and start polling.
Allowlist your user ID
By default Hermes ignores everyone. Tell it who you are.
In Telegram, search @userinfobot, open the chat, and send /start. It replies with your numeric user ID — a 9-to-10-digit number like 1759384210.
Add that number to the Hermes Allowed Users list. You can add multiple — one per teammate later.
The allowlist is the difference between "my agent" and "someone else's agent that responds to anyone." Keep it tight. We'll add multi-user properly in step 13.
Plug in your LLM key
The brain. Pick the model. Pay for the tokens. Hermes never touches your card directly.
You have three sane choices:
| Provider | Best for | Setup |
|---|---|---|
| Anthropic | Coding, reasoning, agent loops. The default for serious use. | Sign up at console.anthropic.com → API keys → create |
| OpenRouter | Mixing models per task without separate accounts. Cheapest experimentation. | openrouter.ai → Keys → create |
| Ollama (local) | Privacy, offline, zero-cost — at the price of capability. | Install Ollama on the VPS, point Hermes at localhost:11434 |
For 95% of people: Anthropic. Set claude-opus-4-7 as the default model and load $20 of credits. Auto top-up when balance falls below $5.
PROVIDER=anthropic DEFAULT_MODEL=claude-opus-4-7 FALLBACK_MODEL=claude-haiku-4-5-20251001 ANTHROPIC_API_KEY=sk-ant-…your key…
Set a monthly spend cap in the Anthropic dashboard. $50 is plenty for one person; bump to $200 for a small team. We add token tracking inside Hermes in step 14.
Plug in image & video keys
Optional — but these unlock half of what makes Hermes feel magical.
The LLM gives Hermes a brain. These keys give it hands for visual work.
- KIE.ai — fast, cheap image generation. GPT-Image-2 and Nano-banana-2 are both available. Best default for thumbnails and carousels.
- Higgsfield — short-form video generation, avatar lip-sync. Pricier per generation but high-quality.
- ElevenLabs — voice cloning, TTS, dubbing. Wire it if you want voice replies or auto-narration.
KIE_API_KEY=kie-… HIGGSFIELD_API_KEY=hf-… ELEVENLABS_API_KEY=el-… DEFAULT_IMAGE_MODEL=gpt-image-2
Use a dedicated email like support@yourdomain.com when signing up for KIE — newsletter flagging is a real problem on personal addresses.
Send your first message
Smoke test. If this works, the rest is configuration.
Open Telegram. Find your bot (the username from step 3). Send:
Hi. What can you do?
Hermes will think for a moment, then reply with a self-inventory — a short list of capabilities based on what you've connected so far. If you only have an LLM key, it'll list memory, code, web research, and creative writing. As you add more keys (steps 6, 10, 11), the list grows.
If you got a reply, you're 80% done. Everything from here is shaping how it responds and what it can touch.
If nothing happens after 30 seconds, jump to troubleshooting. The two most common causes are a misspelled bot token and a missing user-ID allowlist entry.
Pick your model
The model is your speed/quality/cost dial. Tune it once, revisit quarterly.
Hermes can route prompts to different models based on context. You set a default, plus rules.
| Model | Job | Why |
|---|---|---|
| claude-opus-4-7 | Default for hard thinking | Best frontier reasoning. The right call when you don't know. |
| claude-sonnet-4-6 | Coding, long content | Cheaper, fast, the strongest coding model in the family. |
| claude-haiku-4-5 | Quick replies, classification | Fastest. Use for routing and "did the user mean X or Y" decisions. |
DEFAULT_MODEL=claude-opus-4-7 CODE_MODEL=claude-sonnet-4-6 CLASSIFY_MODEL=claude-haiku-4-5-20251001 ROUTER=on # auto-pick model per task
Steps 09–12 · personality, integrations, sub-agents
Out of the box Hermes is generic. These four steps make it feel like an extension of you.
Wire your Soul prompt
The Soul is a markdown file describing who you are, how you think, and how you want the agent to talk. It's the most underrated step.
Hermes loads soul.md at the top of every conversation. Anything in here is permanent context — projects, voice, do's and don'ts, people in your life, your business model.
# Soul · Kyle Painter ## Who I am - CEO at Disruptors Media (AI implementation agency, US + PH team) - I think in systems and content velocity - I prefer demos over explanations, defaults over options ## How I write - Plain language, no jargon, no emojis, no em dashes - Short sentences. Active voice - If you suggest something, suggest one thing, not three ## My current projects - Hermes onboarding for the Disruptors team - Daily content (M/W/F at 6 PM MT) - SEO-GEO Tool v2 with Bryan ## My team - Bryan (engineering lead, PH) - Rio, Camilo, Kimball (account managers) ## Rules - Never DM clients without my approval - Always confirm before deploying or sending money - If a request looks unusual, ask first
Rewrite every line in your voice. The template is a scaffold; the value is the specifics. Your Soul is what makes your Hermes different from anyone else's.
Connect Workspace
Email, calendar, drive. Once Hermes can read and write here, it stops being a chat tool and starts being an executive assistant.
Open Hermes' Integrations panel. You'll see OAuth buttons for Gmail, Google Calendar, Google Drive, Notion, and Dropbox. Each is a one-click connect.
Read scopes carefully. Most integrations let you choose between read-only and read/write. Start read-only, upgrade to write when you trust the agent's judgment for that surface.
Suggested order:
- Calendar (read-only) first — lets Hermes see your day. Low risk, high signal.
- Drive / Notion (read-only) — gives it your knowledge base.
- Gmail (draft-only) — drafts replies for you to send. Magic for inbox triage.
- Calendar (read/write) after a week of read-only.
- Gmail (send) last, behind the approval flow we set up in step 15.
Connect creative tools
X, WhatsApp, social schedulers, smart home. The "agency" in autonomous agency.
This is where Hermes goes from "answers your questions" to "ships things." Add as many or as few as you want.
- X / Twitter — bring an X API key. Hermes drafts and posts on your behalf.
- WhatsApp Business — via the Meta Cloud API. Hermes can send templated messages, never reads inbound unless you opt in.
- Vista Social or Blotato — multi-platform schedulers. One write, ten platforms.
- Philips Hue / Home Assistant — smart home routines. Yes, you can ask Hermes to dim the lights.
- GitHub — fine-grained access token scoped to specific repos. Hermes can open PRs, write issues, run workflows.
- Stripe / PayPal (read-only) — revenue dashboards on demand. Never give it write access; nothing should auto-charge.
Never connect a payment processor with write scopes. Read-only is plenty for "what's our MRR?" Write scopes mean an agent could move money. Don't.
Spawn your first sub-agent
The leverage move. Sub-agents work in parallel while Hermes manages them — you stay at the directing layer.
Try this prompt verbatim in Telegram:
Spawn three sub-agents: 1. Pull the top 5 AI headlines from the last 24h. 2. Draft a carousel for each in my voice (use my Soul). 3. Generate a thumbnail for each with KIE. Report back when all three are done.
Hermes will fan out into three parallel workers, each with its own scratchpad memory. When all three return, the parent agent stitches the result back to you.
You'll see status updates ("Agent 2: drafting carousel 4 of 5…") in the same thread. The whole thing finishes in 4–6 minutes for a five-headline batch.
Sub-agents share your memory but not each other's. Use them for parallel work, not sequential — for sequential, just keep the conversation going in the parent thread.
Steps 13–16 · scale, safety, uptime
Past this point you're operating Hermes for a team or business. Skip these on day one and revisit when you've outgrown solo use.
Multi-user mode
One Hermes serving multiple humans, each with their own memory namespace and Soul.
Add up to 3 device-bound users by default (this is the IP-based access cap; raise it with a setting flag if you trust your VPN posture).
USERS= - id: 1759384210 # Kyle soul: soul-kyle.md - id: 2103948271 # Bryan soul: soul-bryan.md - id: 3140293847 # Rio soul: soul-rio.md MAX_DEVICES_PER_USER=3
Each user has isolated memory. Bryan's projects don't leak into Rio's context. Same agent, different brains.
Cost & token tracking
Assume you'll overspend. Build the dial before you have to use it.
Open the Hermes dashboard at https://your-vps-ip:8080 (do NOT bind to 0.0.0.0 — keep it on localhost or behind Cloudflare Tunnel). Cost panel shows tokens per model, per user, per day.
DAILY_USD_SOFT_CAP=5 # warn at $5/day DAILY_USD_HARD_CAP=15 # pause new requests at $15/day MONTHLY_USD_HARD_CAP=200 # circuit breaker for the month PER_USER_MONTHLY_CAP=50 # in multi-user mode
Hard caps fail closed: when hit, the agent replies with a diagnostic and stops calling models until the next reset window. This is a feature.
Approval flow for risky tools
For destructive or expensive actions, force the agent to ask before doing.
Some tools — sending email, posting to X, executing arbitrary code, deleting files — can't be undone. Tag them as requires-approval and Hermes will pause and DM you a confirmation card before firing.
REQUIRES_APPROVAL= - gmail.send - x.post - whatsapp.send - github.push_to_main - shell.execute - file.delete
The approval card is a tap-to-confirm message. You see exactly what the agent's about to do, with the input arguments rendered. Tap Approve, the action runs. Tap Reject, the agent retries with feedback or stops.
Most users keep this list short and trim over time as they trust specific agent behaviors. Your tolerance, your rules.
Backups, updates, uptime
The boring step that saves you on day 91.
Three things to set and forget:
- Backups. Hermes' memory lives in
/var/hermes/data/. Mount a Hostinger volume snapshot, schedule daily, retain 7. ~$1/month. - Updates. Hermes self-updates by default (NOS Research ships often — Kanban, level 7, etc.). If you want to pin a version, set
AUTO_UPDATE=offand bump manually. - Uptime. Add a UptimeRobot or Better Uptime check on
/health. Free, pings every 5 min, alerts to your phone if the gateway dies.
AUTO_UPDATE=on BACKUP_PATH=/mnt/snapshots/hermes BACKUP_RETENTION_DAYS=7 HEALTH_ENDPOINT=/health LOG_LEVEL=info
You're done. Sixteen steps. From here it's all use, not setup.
Troubleshooting · Security · Glossary
Things you'll come back to when something breaks or you forget what something means.
Troubleshooting
Common failure modes and the actual fix.
| Symptom | Likely cause | Fix |
|---|---|---|
| Bot says "Not authorized" | Your Telegram user ID isn't on the allowlist | Re-do step 4. Make sure the ID is the numeric one from @userinfobot, not your @handle. |
| No reply at all | Bot token typo OR Gateway not running | SSH to VPS, run systemctl status hermes-gateway. If dead: systemctl restart hermes-gateway. |
| "LLM provider returned 401" | API key invalid, expired, or out of credit | Rotate key in provider dashboard, paste new key into Hermes settings, hit save. |
| Replies are slow (10+ seconds) | Wrong region OR oversized model for the task | Move VPS region closer to you. Switch DEFAULT_MODEL to claude-sonnet-4-6 for everyday tasks. |
| Agent stops mid-task | Hit the daily hard cap from step 14 | Check the cost panel. Either bump the cap or wait for the rollover. |
| "Rate limit exceeded" | LLM provider rate limit, not Hermes | Anthropic: request a tier upgrade. OpenRouter: switch to a less-used model. |
| Image generation broken | KIE / Higgsfield key missing or wrong | Re-paste key in step 6 fields. Verify with the provider's playground first. |
| Sub-agents return empty | Parent agent's prompt was ambiguous OR sub-agents couldn't find tools | Re-prompt with explicit tool names: "use the web_search tool to…" |
| Memory feels short | SQLite database hitting its summary threshold | Open dashboard → Memory → run Compact. Reflection consolidates older memories into summaries. |
| Telegram error: "bot can't initiate conversations with users" | The user must DM the bot first before Hermes can DM them | Send any message to the bot. Now Hermes can reply unprompted. |
Security checklist
Run through this before you open Hermes to anyone besides yourself.
- Rotate every key once after install. Whatever you pasted during setup, generate a fresh one and replace it. Removes paste-history exposure.
- Bot token is not in any chat or file you'd ever share. Live in a password manager only.
- Allowlist is locked. Only your Telegram user IDs. No "anyone in the group."
- Workspace integrations start read-only. Upgrade scopes per integration only after a week of use.
- Approval flow is on for any tool that sends, posts, or deletes. Step 15.
- No payment processor has write scopes. Read-only or not connected.
- Spend caps are set. Soft + hard, daily + monthly. Step 14.
- Dashboard is bound to localhost or Cloudflare Tunnel. Never
0.0.0.0. - VPS root login is key-based, not password-based. Disable password SSH in
/etc/ssh/sshd_config. - Backups are running and tested. Restore one before you ever need to.
Glossary
Plain definitions for the jargon used in this guide.
| Term | Plain meaning |
|---|---|
| Agent loop | The repeating cycle of: think → call a tool → observe → think again. The thing that lets an LLM do work in steps instead of one shot. |
| Allowlist | The list of Telegram user IDs Hermes will respond to. Everyone else gets ignored. |
| Approval flow | A pause-before-action gate for risky tools. Agent shows you what it's about to do; you tap to confirm. |
| Gateway | The small HTTP server on your VPS that listens for Telegram messages and forwards them into Hermes. |
| Hermes | The autonomous agent platform built by NOS Research. Self-hosted, persistent memory, multi-modal. |
| KVM | The type of VPS you want — gives you a real Linux machine, not a shared container. Hostinger labels their plans KVM 1, KVM 2, etc. |
| MCP | Model Context Protocol. The standard for plugging tools into agents. If a service has an MCP server, it works in Hermes. |
| Memory tiers | Hermes splits memory into short-term (in-conversation), medium (recent days, summarized), long (semantic search across history). |
| Reflection | An overnight pass where Hermes summarizes the day, drops trivial details, and elevates patterns into long-term memory. |
| Soul | A markdown file that loads at the top of every chat. Your identity, voice, projects, rules. The thing that makes your Hermes yours. |
| Sub-agent | A child Hermes spawned by the parent for parallel work. Has its own scratchpad, shares your memory, reports back. |
| Tool | Anything the agent can call to interact with the world: web search, code execution, send email, generate image, post to X. |
| VPS | Virtual Private Server. A small Linux machine you rent from a host like Hostinger. |
What's next
Three things to do in your first 48 hours after install.
- Run the "earn back the VPS" prompts. Six of them are on the lead-magnet page. Pick one. Watch it execute. That's the dopamine hit that locks the habit in.
- Rewrite your Soul. First draft is always too generic. After a day of use, you'll know the specific things you wish you'd told it. Add them.
- Tell one friend. The fastest way to lock learning is to teach. Send them this guide and walk them through the install in 30 minutes on a call.
Want help? Comment HERMES on the post you came from, or reach out at kyle@disruptorsmedia.com.