$ -weight: 500;">curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/-weight: 500;">install.sh | bash
-weight: 500;">curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/-weight: 500;">install.sh | bash
-weight: 500;">curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/-weight: 500;">install.sh | bash
source ~/.bashrc # or source ~/.zshrc
source ~/.bashrc # or source ~/.zshrc
source ~/.bashrc # or source ~/.zshrc
hermes --version
hermes --version
hermes --version
hermes model
hermes model
hermes model
adduser hermes --disabled-password --gecos ""
usermod -aG -weight: 600;">sudo hermes
adduser hermes --disabled-password --gecos ""
usermod -aG -weight: 600;">sudo hermes
adduser hermes --disabled-password --gecos ""
usermod -aG -weight: 600;">sudo hermes
su - hermes
su - hermes
su - hermes
-weight: 600;">sudo -weight: 500;">apt-get -weight: 500;">install -y ufw
-weight: 600;">sudo ufw default deny incoming
-weight: 600;">sudo ufw default allow outgoing
-weight: 600;">sudo ufw allow ssh
-weight: 600;">sudo ufw --force -weight: 500;">enable
-weight: 600;">sudo -weight: 500;">apt-get -weight: 500;">install -y ufw
-weight: 600;">sudo ufw default deny incoming
-weight: 600;">sudo ufw default allow outgoing
-weight: 600;">sudo ufw allow ssh
-weight: 600;">sudo ufw --force -weight: 500;">enable
-weight: 600;">sudo -weight: 500;">apt-get -weight: 500;">install -y ufw
-weight: 600;">sudo ufw default deny incoming
-weight: 600;">sudo ufw default allow outgoing
-weight: 600;">sudo ufw allow ssh
-weight: 600;">sudo ufw --force -weight: 500;">enable
-weight: 500;">curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/-weight: 500;">install.sh | bash
source ~/.bashrc
hermes --version
hermes doctor
-weight: 500;">curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/-weight: 500;">install.sh | bash
source ~/.bashrc
hermes --version
hermes doctor
-weight: 500;">curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/-weight: 500;">install.sh | bash
source ~/.bashrc
hermes --version
hermes doctor
chmod 600 ~/.hermes/.env
nano ~/.hermes/.env
chmod 600 ~/.hermes/.env
nano ~/.hermes/.env
chmod 600 ~/.hermes/.env
nano ~/.hermes/.env
OPENROUTER_API_KEY=sk-or-your-key-here
OPENROUTER_API_KEY=sk-or-your-key-here
OPENROUTER_API_KEY=sk-or-your-key-here
hermes config set model.provider openrouter
hermes config set model.default anthropic/claude-sonnet-4
hermes config set model.provider openrouter
hermes config set model.default anthropic/claude-sonnet-4
hermes config set model.provider openrouter
hermes config set model.default anthropic/claude-sonnet-4
hermes -m "What is 2+2? Reply with just the number."
hermes -m "What is 2+2? Reply with just the number."
hermes -m "What is 2+2? Reply with just the number."
nano ~/.hermes/.env
nano ~/.hermes/.env
nano ~/.hermes/.env
TELEGRAM_BOT_TOKEN=your-bot-token-from-botfather
TELEGRAM_ALLOWED_USERS=your-telegram-user-id
TELEGRAM_BOT_TOKEN=your-bot-token-from-botfather
TELEGRAM_ALLOWED_USERS=your-telegram-user-id
TELEGRAM_BOT_TOKEN=your-bot-token-from-botfather
TELEGRAM_ALLOWED_USERS=your-telegram-user-id
hermes gateway
hermes gateway
hermes gateway
hermes gateway -weight: 500;">install
hermes gateway -weight: 500;">install
hermes gateway -weight: 500;">install
-weight: 500;">systemctl --user -weight: 500;">enable --now hermes-gateway
-weight: 500;">systemctl --user -weight: 500;">status hermes-gateway
-weight: 500;">systemctl --user -weight: 500;">enable --now hermes-gateway
-weight: 500;">systemctl --user -weight: 500;">status hermes-gateway
-weight: 500;">systemctl --user -weight: 500;">enable --now hermes-gateway
-weight: 500;">systemctl --user -weight: 500;">status hermes-gateway
journalctl --user -u hermes-gateway -f
journalctl --user -u hermes-gateway -f
journalctl --user -u hermes-gateway -f - Are comfortable using a terminal and SSH
- Want full control over your infrastructure, API keys, and models
- Enjoy learning how the system works under the hood
- Need custom configurations that a managed platform might not expose - Don't want to manage Linux servers, updates, or dependency issues
- Need Hermes online 24/7 with guaranteed uptime
- Expect backups and monitoring to be handled for you
- Are you setting it up for a team or business workflow where downtime costs real time - Updates: Hermes has shipped nine releases in seven weeks. Run hermes backup first, then hermes -weight: 500;">update, then hermes config migrate, and hermes doctor to apply any new configuration defaults. Restart the gateway -weight: 500;">service afterwards.
- Backups: Your agent's brain lives in ~/.hermes/ - memories, skills, sessions, configuration, and persona. Since v0.9.0, Hermes includes a built-in backup command: hermes backup creates a timestamped snapshot. Schedule daily backups with cron and sync them off-server. A backup kept only on the same VPS doesn't protect against disk failure.
- Security: You're running an agent with shell access on a public server. Use a non-root user, restrict SSH to key-only authentication, keep UFW active, lock .env to 600 permissions, whitelist messaging-platform user IDs, and audit the skills directory periodically as you would any code.
- Monitoring: Check that the gateway -weight: 500;">service is running, disk space isn't filling up, and API costs aren't spiralling. A simple cron job that pings the health endpoint is enough for early detection.
- Cost tracking: API costs are usage-based and can surprise you. A VPS might cost $5-6/month, but LLM API calls vary wildly depending on model and volume. Some users report that 73% of API call cost comes from fixed overhead like tool definitions and system prompts alone - switching to a provider-agnostic setup with hermes model gives you flexibility to optimise. - Installing before deciding the goal. Decide first: testing, personal use, always-on assistant, or team workflow? Your goal determines your hosting method.
- Ignoring backups until it's too late. Hermes becomes more valuable as it builds memory. If those files matter, back them up from day one.
- Exposing services without security. Don't open anything publicly until you understand authentication, firewall rules, and platform permissions. An agent with shell access demands caution.
- Overcomplicating the first setup. Beginners often try to add Docker, Open WebUI, messaging, voice, MCP tools, and scheduled tasks all on day one. Don't. Install Hermes, configure a model, and run a basic conversation. Expand later.
- Underestimating ongoing maintenance. The difference between "it runs" and "it runs reliably for months" is where most of the work lives. - Test locally. Run the one-line installer on your laptop. Have a few conversations. Learn the commands.
- Move to a VPS if you want full control and 24/7 uptime. Start simple - don't add every integration at once.
- Add the gateway or Open WebUI later, once the agent is stable.
- Decide if maintenance is worth your time. After a few weeks of self-hosting, ask: "Is this infrastructure work worth my time, or would I rather focus on using the agent?" Your honest answer tells you whether to stick with self-hosting or switch to managed hosting.