Deploy Your Own Personal Hermes Agent

A private AI agent you can reach from Telegram. Install it once, connect a model and Telegram, then mostly just message it like a colleague.

1. How Hermes actually works

Hermes is not just a chatbot. It is an agent: a program that can reason, use tools, remember key facts, run scheduled work, and talk to you through messaging platforms like Telegram. It can also connect to services such as Google Workspace when you explicitly set that up.

TelegramYour chat window
Hermes AgentReasoning + actions
SOUL.md
Memory
Skills
Tools
AI modelThe brain — self-hosted, EU-hosted, or API
Agent

The agent runs the reasoning, memory, skills, and tools. Telegram is just the chat window.

SOUL.md

The agent identity, personality, and tone. It lives at ~/.hermes/SOUL.md, is auto-created on install, and is slot #1 of the system prompt. Rule: if it should follow the agent everywhere, it goes in SOUL.md.

/personality

A temporary mode overlay on top of SOUL.md. Examples: /personality concise, /personality technical, /personality teacher.

Memory

Two files in ~/.hermes/memories/: MEMORY.md for the agent’s notes about your environment, and USER.md for your profile and preferences. The agent manages these itself. You can simply say “remember that …”.

AGENTS.md

Optional project-specific instructions. Use it for a repository, app, or client project. This is different from SOUL.md, which is global personality.

Skills and tools

Skills are reusable abilities in ~/.hermes/skills/ and can appear as slash commands. Tools include web search, browser use, image generation, text-to-speech, file work, and more through the Tool Gateway.

2. What you will set up

1. A machine

A small always-on computer, EU server, or local mini-PC.

2. A model

The AI brain. It can be self-hosted, EU-hosted, or an API model.

3. Telegram

Your private chat window to the agent.

After this, the terminal is mostly done. Daily briefings, reminders, watchdogs, skills, and Google Workspace setup are normally driven by plain-English messages to the agent in Telegram.

3. Prepare your machine

Note: Prices and hardware notes are approximate — check current values before buying.

Use a dedicated always-on device. Do not run a business agent from a laptop that sleeps every night. Never paste real secrets into public examples; use placeholders only.

Option A — EU server

Best for most businesses. It is always online, cheap, and easy for OEJ or your operator to maintain. Pick an EU/EEA region during provisioning.

Option B — on-premises

Best when data should stay physically inside your office. Use a dedicated mini-PC and put both the router and the machine on a UPS battery backup.

Recommended EU server providers

For sensitive business data, choose data sovereignty, not just data residency. A US-owned cloud with EU servers can still be exposed to the US CLOUD Act. For sensitive client data, avoid AWS, DigitalOcean, Vultr, and Linode even if the region is EU.

Provider
Jurisdiction
EU/Baltic locations
Notes
Hetzner
Germany
Falkenstein, Nuremberg, Helsinki
Recommended default. Best value; AMD EPYC + NVMe from about €4/month, approximate as of mid-2026. Helsinki gives low Baltic latency.
UpCloud
Finland
Helsinki, Frankfurt, Amsterdam, Madrid
Premium performance, EU-owned, 99.99% SLA; entry around €7/month, approximate as of mid-2026.
Scaleway
France
Paris, Amsterdam, Warsaw
Deep EU cloud stack.
OVHcloud
France
France, Germany, Poland
Largest EU provider, anti-DDoS included.
Local Baltic options
Estonia / Lithuania
Zone.ee, Pilvio, and other local server providers
Maximum local sovereignty. Check current plans before buying.

Suggested server size for a Hermes agent using an API model: about 2 vCPU, 4 GB RAM, and 40 GB NVMe. Examples: Hetzner CX22/CAX11 class or UpCloud 2 GB+ class. The browser tool is happier with 4 GB+ RAM. Self-hosting a model on a rented server needs a GPU instance; see hardware tiers below.

Recommended hardware

Plain rule: if you use an API model, almost any small always-on machine works. If you self-host the model, the model must fit in the machine’s RAM or, on Apple Silicon, unified memory.

Tier A — Agent only, model via API

Most SMBs want this. Fanless Intel N100/N150 mini-PC, 8–16 GB RAM, 256 GB+ SSD, or base Mac mini M4 with 16 GB. About 10–30 W, quiet, cheap. Put it on a UPS with the router.

Tier B — Small/medium local model

Mac mini M4 Pro with 48 GB unified memory, approximate $1,799 as of mid-2026; PC with NVIDIA 16–24 GB VRAM; or AMD Ryzen AI Max “Strix Halo” 128 GB mini-PC.

Tier C — Larger local models

For 70B+ models: Mac Studio M-Max/Ultra with 96–128 GB, AMD 128 GB mini-PC, or multi-GPU workstation. More power, more heat, more noise.

Honest performance note: RAM or unified memory decides whether a local model runs. Memory bandwidth decides how fast. For API inference, neither matters much.

4. Data under your control

A good setup starts with one question: where does the data actually go? Hermes itself can run on your server, but the connected services matter. For example, a Google Workspace OAuth login gives the agent access to Gmail, Calendar, or Drive only within the permissions you approve. An AI model used through an API means the prompt and the needed task data are sent to that model provider. If you use OpenAI, Anthropic, Nous Portal, or another external API, data may leave the EU.

Practical rule: for sensitive work, prefer a self-hosted model or an EU-hosted model service. Use an API only when its data-handling terms fit the workflow. OpenRouter or another gateway is suitable for sensitive work only when you have explicit zero-data-retention terms and confirmation that prompts are not used for training. Give the agent only the OAuth scopes it needs and avoid unnecessary API connections.

5. One-time terminal setup

This is the only beginner terminal zone: install Hermes, connect a model, connect Telegram, make the gateway auto-start, and verify. After that, you mostly use Telegram.

Install Hermes.

Pick the one command for your operating system.

Linux, macOS, WSL2, or Android Termux:

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

Native Windows PowerShell:

iex (irm https://hermes-agent.nousresearch.com/install.ps1)

Reload your Linux/macOS shell if needed:

source ~/.bashrc

macOS default shell:

source ~/.zshrc
Run the setup wizard.

The wizard asks four short things: provider, API key or OAuth login, model, and whether to enable tools / Tool Gateway.

Start the full setup wizard:

hermes setup

To add or change providers later:

hermes model

Lowest-friction Nous Portal path:

hermes setup --portal

Sovereignty caveat: Nous Portal is convenient, but may route data outside the EU.

Connect Telegram inside setup.

Create a bot with @BotFather. Send /newbot, choose a display name and a username ending in bot, then keep the token secret. Get your numeric Telegram user ID from @userinfobot. Paste the bot token and your numeric user ID when Hermes asks.

@BotFather/newbot
Bot token[BOT_TOKEN_PLACEHOLDER]
+
@userinfobot[YOUR_NUMERIC_USER_ID]

The gateway denies everyone unless they are allowlisted. If a bot token leaks, revoke it in BotFather with /revoke.

Make it always-on.

The gateway is the Telegram connection itself, so this part cannot be done by asking the agent in Telegram yet. Do it once so Hermes restarts with the computer.

Linux server recommended system service:

sudo hermes gateway install --system

Per-user Linux/macOS alternative:

hermes gateway install

Linux per-user services may also need linger enabled:

sudo loginctl enable-linger $USER

Native Windows uses Scheduled Tasks through hermes gateway install. WSL2 can use tmux or Windows Task Scheduler; see appendix.

Verify.

Check the install, check the gateway, then message the bot from Telegram.

Run diagnostics:

hermes doctor

Check gateway status:

hermes gateway status

Optional direct Telegram test:

hermes send --to telegram "Hermes test message from the server."

That is all the terminal work for the beginner path.

6. Now just talk to your agent

This is the main point. Once the gateway is running, most useful setup happens by messaging the bot in Telegram. The same style of commands also works from the CLI if an operator prefers it.

First things to try

Introduce yourself. What can you do for my business?
What tools and skills are available to you right now?

Give it a name and personality

You can tell it in chat, use /personality, or edit ~/.hermes/SOUL.md.

From now on, call yourself Marta. Be concise, practical, and slightly skeptical. If I ask for a vague plan, push me toward one concrete next step.

Tiny SOUL.md example:

# Personality You are Marta, a pragmatic operations assistant for a small Estonian business. Be concise. Prefer clear next actions. Flag risks early. Avoid hype and vague strategy.

It remembers you

Hermes manages memory itself. You do not need to edit memory files manually.

Remember that our invoices go out on the 1st of every month.

Set up a daily briefing

Every weekday at 08:30, fetch up to 7 important AI automation or data-sovereignty items relevant to Estonian small businesses. Use web sources. Return: 1 sentence summary, why it matters, and a link. Keep the tone concise and practical. Deliver it to Telegram.
Golden rule: scheduled prompts must be self-contained. Bad: “Check that thing every morning.” Good: “Every morning at 08:30, check these sources, summarize these items, and deliver to Telegram.”

Ask it to watch itself

You can ask Hermes to create watchdogs and heartbeats. A watchdog is a small scheduled check that only messages you when something is wrong. A dead-man’s switch is an external uptime ping: if the ping stops, an outside service alerts you that the agent or server may be down.

Ping me on Telegram if RAM is over 85%, every 5 minutes.

Hermes can wire this through its native cron tool and script-only no-agent mode. The agent can watch your server, but restarting the gateway itself uses the operator script in the appendix, because a stopped gateway cannot restart itself.

Skills

Skills are reusable abilities. Run one with a slash command or ask the agent to learn a new one.

/plan design a rollout plan for connecting my inbox and calendar.
Learn a reusable skill for preparing my weekly client follow-up list.

Connect Google Workspace

Google Workspace access gives the agent Gmail, Calendar, Drive, Sheets, Docs, and Contacts through OAuth2 with automatic token refresh. Tokens are stored under ~/.hermes/ on the agent machine as google_token.json.

Email only?

Use the simpler himalaya email skill. It works with a Gmail App Password and does not need a Google Cloud project. Create the App Password in Google Account → Security → App Passwords.

Set up email with the himalaya skill.
or

Calendar / Drive / Sheets / Docs?

Use the google-workspace skill. It needs a one-time Google Cloud OAuth client.

Set up Google Workspace — I need Gmail and Calendar.
Tell the agent what you need.

It should ask which services you need so it can guide the setup.

Browser step: create or select a Google Cloud project.

Enable the APIs you need in the API Library: Gmail API, Google Calendar API, Google Drive API, Google Sheets API, Google Docs API, and People API.

Browser step: create OAuth credentials.

Go to Credentials → Create credentials → OAuth 2.0 Client ID → application type “Desktop app”. Download the client secret JSON.

Browser step: add yourself as a test user if needed.

If the OAuth app is still in Testing, add your Google account under Audience → Test users.

Tell the agent where the JSON file is.

If the path starts with /, write it in a sentence so it is not mistaken for a slash command.

The file is at /home/me/Downloads/client_secret_PLACEHOLDER.json
Approve the authorization link.

The agent gives you a link. Open it, sign in, approve access. The browser may redirect to a page that looks broken; that is expected. Copy the entire address-bar URL, or just the code, and paste it back to the agent.

Wait for AUTHENTICATED.

After that, token refresh is automatic.

Example messages after Workspace is connected

Check my unread emails from today and summarise them.
Add a meeting with the accountant to my calendar next Tuesday at 14:00.
Find the latest invoice in my Drive and tell me the total.

Security and sovereignty note: Workspace access is powerful. Keep the bot allowlist to trusted people only. Protect the agent machine because the OAuth token lives there. Gmail, Calendar, and Drive data is processed by Google, a US company, so flag this for clients with strict data-sovereignty needs.

7. Appendix — Advanced / for operators

This section is not the beginner path. It is here for operators who want hand-written scripts, raw cron examples, and service details.

Gateway service details

User service:

hermes gateway install

Linux system service:

sudo hermes gateway install --system

Enable user services after logout on Linux:

sudo loginctl enable-linger $USER

WSL2 foreground run inside tmux:

tmux new -s hermes-gateway 'hermes gateway run'

Native script-only watchdog cron

Create a no-agent watchdog job:

hermes cron create "every 5m" --no-agent --script memory-watchdog.sh --deliver telegram --name "memory-watchdog"

Script files must live in ~/.hermes/scripts/. Empty stdout means silent; non-zero exit or timeout sends an error alert.

Simple health-check script

Save as ~/.hermes/scripts/gateway-health.sh:

#!/usr/bin/env bash set -euo pipefail if ! hermes gateway status >/dev/null 2>&1; then hermes gateway restart || true hermes send --to telegram "Hermes gateway needed a restart on $(hostname)." fi

Dead-man’s-switch ping script

Save as ~/.hermes/scripts/deadman-ping.sh:

#!/usr/bin/env bash set -euo pipefail curl -fsS "https://example.com/ping/YOUR_PLACEHOLDER_TOKEN" >/dev/null

Use your uptime service’s real ping URL privately. Never publish it in logs or docs.

Raw system cron examples

Operator-only crontab examples:

*/5 * * * * /home/hermes/.hermes/scripts/deadman-ping.sh */10 * * * * /home/hermes/.hermes/scripts/gateway-health.sh

Prefer Hermes native cron for agent-facing work. Use raw system cron only when an operator deliberately wants OS-level scheduling.

Updating & backups

hermes update keeps the agent current. Back up ~/.hermes/ — or use hermes backup — to preserve the whole agent: personality, memory, skills, and settings.

8. Troubleshooting

Problem
Likely cause
What to do
Command or action
hermes not found
Shell did not reload PATH.
Reload your shell or open a new terminal.
source ~/.bashrc
Agent does not answer in Telegram
Gateway is not running or user ID is not allowlisted.
Check gateway status and Telegram user ID.
hermes gateway status
API key error
Model provider is not configured.
Run the model wizard again.
hermes model
Scheduled job says the wrong thing
Prompt was not self-contained.
Edit it with the full task, sources, format, and delivery target.
/cron list, then ask the agent to edit the job.
Google OAuth 403
Consent screen or test user setup.
Use External consent when needed and add your account as a test user.
Google Cloud Console → Audience → Test users.

9. Getting help

Contact OEJ OÜ if you want this deployed safely for your business. Before sending logs, remove secrets: API keys, bot tokens, OAuth URLs, IP addresses if sensitive, and customer data.

Talk to OEJ

Disclaimer: This guide is provided for general informational purposes only. You follow these steps at your own discretion and risk. OEJ OÜ accepts no liability for any loss, damage, data loss, downtime, or costs arising from following this guide. Always keep your secrets private and back up your data. For a managed, supported deployment, contact OEJ OÜ.