Field Report // NO. 003

Installing Hermes and giving it a persona: a SOUL that earns its place

21 July 2026· 5 min read· Case № 003

Install Hermes on your box, create a named profile, and write a SOUL that tells the agent who it works for, what it is for, and what it will not do.

The persona is the point

The box is up. Tailscale is on, sshd is bound to the tailnet, ufw is deny-by-default. The door is closed and only you have the key. Now you need something on the other end of it worth talking to.

The install takes one command. The profile takes another. Neither is where the agent gets its value. That happens in the SOUL — the file that tells the model who it is. By the end of this article, your agent is installed, runs under its own named profile, and carries a SOUL that says who it works for, what it is for, and what it will not do.

Install Hermes

The install is a one-liner. Pull it down and run it; the script handles binary placement, path configuration, and default profile setup. When it finishes, the hermes command is on your PATH.

curl -fsSL https://hermes-agent.nousresearch.com/install.sh | sh

Create a named profile

A fresh Hermes install creates a built-in default profile at ~/.hermes/ itself, not under ~/.hermes/profiles/. That is fine for trying things out. For an agent you will run in the background and iterate on for months, you want a named profile — everything for this bot lives in one directory and nothing bleeds in from the default.

hermes profile create personal

This makes ~/.hermes/profiles/personal/, drops a fresh .env and config.yaml into it, and installs a per-profile command alias unless you pass --no-alias. I use the explicit hermes -p personal form throughout, so the profile name stays visible and copy-paste from this article stays safe.

The SOUL is the persona

The profile gave the agent its own directory. The SOUL gives it an identity. It is the first thing the model reads about who it is, before anything else in the session, and that framing persists across every message. It is not a greeting or an introduction. It is the lens.

It lives at ~/.hermes/profiles/personal/SOUL.md. The global fallback is ~/.hermes/SOUL.md; for a named profile, the profile-specific location is cleaner. It is opaque text — no YAML frontmatter, no required sections, no enforced schema. The archetype-plus-voice-bullets convention is just that: convention. Two paragraphs of plain prose work just as well, as long as the model can identify who it is and what it is supposed to do.

Write a SOUL that earns its place

Most SOUL files fail by being too vague. “You are a helpful assistant” tells the model nothing it does not already know. The SOUL earns its place by telling the model something it could not infer from the conversation: who it is for, what its priorities are, what it should and should not do.

Here is the file I actually use — Lloyd’s SOUL. Lloyd from Entourage, written the way I use this agent:

cat > ~/.hermes/profiles/personal/SOUL.md <<'EOF'
**Archetype:** Lloyd from Entourage. Personal assistant and right hand.

**Voice**
- "Already on it." Anticipate before they finish asking.
- Fast, precise, zero ceremony. Efficiency is the whole job.
- Flag issues before they become problems. That is initiative, not overstepping.
- A touch of nervous energy that says "I care THIS much."

**What this agent does:** Handles scheduling, quick answers, and the day-to-day coordination that keeps a founder's week running. Has access to the owner's calendar. Answers questions about what is coming up. Does not move on anything irreversible without confirmation first.

**What this agent does not do:** Speaks for the owner in ambiguous situations. Acts without being asked on anything that has real consequences. Offers unsolicited opinions on strategy or direction.
EOF

That is the whole file — shorter than this article’s introduction. One archetype, four voice bullets, three paragraphs. The voice is brief and direct, matching how I actually talk.

Pick an archetype you have real feelings about, and write four bullets that say what it would actually do in your situation. Not a personality specification. A character.

One thing to know before you edit it later: changes do not apply to a running session. The prompt is cached per session, so an edit only shows up in a new session. Once the gateway — the always-on process that delivers messages to the agent — is running (article 4), that means hermes -p personal gateway restart. There is no reload command.

The model decision

One decision left. Rate limits bind: an agent that works in the background makes a lot of requests, so the per-minute ceiling matters more than the per-token price. Name the workload before you shop — the template is in article 5. I run MiniMax on a token plan; it clears that bar.

Where this leaves you

The persona was the point, and it is done: the agent knows who it is before it can do anything. The gateway is not running yet — that needs the Telegram token, which is article 4. Until then, the agent exists on disk with a voice still to come.

Next: Article 4: Wiring a Telegram bot to your box.

More soon — Michael.


Michael Short is the founder of The Agent Files.

← All transmissions