Post 2: Setting Up Hermes Agent — Your AI Project Manager

May 28, 2026 · 7 min read

Series: AI Junior Developer — Part 2 of 6

In Post 1, I laid out the vision: an AI junior developer that monitors tickets, fixes bugs, and opens PRs while I sleep. Today we build the brain — the orchestrator that ties everything together.

That orchestrator is Hermes Agent.

If you are new to this series, start with Part 3: Setting Up Claude Code — The Brain Behind the Agent to see how the coding layer works, then continue with Part 4: Building the Agent Team to learn how supervisor, coder, reviewer, and QC agents collaborate.

Think of Hermes as the project manager. It decides what to do, when to do it, and who to tell. It runs on cron, spawns subagents, and delivers results to Telegram. Claude Code does the coding. Hermes runs the show.

Let’s set it up from zero.

What Hermes Agent Actually Is

Post 4 in this series covers how to assemble a full agent team. Hermes Agent is an open-source AI agent framework by Nous Research. It’s the same category as Claude Code or OpenAI Codex — autonomous agents that use tool calling to interact with your system. But Hermes is provider-agnostic (works with any LLM), multi-platform (Telegram, Discord, Slack, 10+ others), and has persistent memory across sessions.

What matters for our use case: Hermes has cron jobs and delegation. Cron runs on a schedule, checks for new tickets, and fires off the code agent. Delegation spawns subagents for parallel work.

Step 1: Install Hermes

One command:

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

Verify:

hermes doctor

You should see all green. If not, hermes doctor --fix auto-repairs most issues.

First run:

hermes

This drops you into interactive chat. You’re talking to an AI agent in your terminal. Type /help to see all slash commands.

Step 2: Configure Your Provider

I use DeepSeek V4 Pro via Ollama Cloud. You pick whatever works for your budget.

hermes setup model

This opens an interactive picker. Choose your provider → choose your model. Or set directly:

hermes config set model.default "deepseek-v4-pro"
hermes config set model.provider "ollama-cloud"

API keys go in ~/.hermes/.env, not config.yaml:

hermes config env-path   # shows where .env lives

Edit that file, add your API keys. Done.

Test: run hermes chat -q "Hello, what model are you?" and it should respond.

Step 3: Connect Telegram

This is how our agent will notify us when a ticket is fixed.

hermes gateway setup

Select Telegram. You’ll need:

  • A bot token from @BotFather
  • Your chat ID (send a message to your bot, then check https://api.telegram.org/bot<TOKEN>/getUpdates)

Once configured:

hermes gateway start   # start the gateway service
hermes gateway status  # verify it's running

Now send a message to your bot on Telegram. Hermes responds. You can use all the same tools from Telegram that you can from the terminal — including spawning Claude Code.

Set your home channel (where notifications go):

/sethome

Step 4: Enable Required Tools

We need terminal access (to spawn Claude Code), cron (for scheduling), and delegation (for subagents):

hermes tools enable terminal
hermes tools enable cronjob
hermes tools enable delegation
hermes tools enable web         # for hitting Jira/GitHub APIs

Check status:

hermes tools list

Important: /reset after enabling tools. Changes only take effect on new sessions.

Step 5: Verify It All Works

Let’s test the full pipeline before we wire up Claude Code. From Telegram, send your bot:

Run: echo "Hermes is alive" && date

Hermes should execute the command and return the output. If this works, the terminal tool is functional and we can spawn Claude Code from cron.

Architecture So Far

┌─────────────┐
│  Telegram   │◀──── Hermes delivers results here
└─────────────┘
       ▲
┌──────┴──────┐
│   Hermes    │  orchestrator: cron + delegation + tools
│   Agent     │
└──────┬──────┘
       │  (soon: spawns Claude Code)
       ▼
┌─────────────┐
│   Terminal  │  shell access, git, make, pytest
└─────────────┘

We haven’t connected Claude Code yet (that’s Post 3), but the foundation is solid. Hermes can:

  • Run on schedule (cron)
  • Execute shell commands (terminal tool)
  • Deliver results anywhere (Telegram)
  • Spawn subagents (delegation)

Quick Config Reference

Here’s what your ~/.hermes/config.yaml should look like after setup:

model:
  default: "deepseek-v4-pro"
  provider: "ollama-cloud"

agent:
  max_turns: 90

terminal:
  backend: local
  timeout: 300

delegation:
  max_iterations: 50
  max_concurrent_children: 1  # one ticket at a time

All manageable from CLI: hermes config edit opens it in your editor.

Troubleshooting

“Gateway not responding”
Check logs: grep -i error ~/.hermes/logs/gateway.log | tail -20
Restart: hermes gateway restart

“Tool not available”
Run hermes tools → check if terminal/web/cron are enabled → /reset

“Model not responding”
Run hermes doctor → check provider credentials in .env

SSH session closes, gateway dies
Enable linger: sudo loginctl enable-linger $USER

What We Just Built

We have an AI orchestrator that can:

  • Accept commands from Telegram
  • Execute shell commands
  • Run on a schedule
  • Delegate work to subagents
  • Deliver results to any platform

Next post: [Post 3] Setting Up Claude Code — CLAUDE.md mastery, skills, subagents, and MCP. This is where the agent actually learns to code.

Series: “AI Junior Developer” — Part 2 of 6


Discover more from Susiloharjo

Subscribe to get the latest posts sent to your email.

Discover more from Susiloharjo

Subscribe now to keep reading and get access to the full archive.

Continue reading