Hermes Profile — Multiple Agent Personas, One Set of Tools Does It All

You’ve raised an Agent well inside Hermes — it remembers your code style, your project structure, your frequently used commands. Now you have a second need: an Agent dedicated to managing deployments, and one more dedicated to ops inspections. They’re three completely different roles, needing different memories, different skills, and even different model preferences. Surely you’re not going to reinstall Hermes every time? That’s exactly what Hermes’s Profile mechanism was designed for.

1. The Problem: One Hermes Isn’t Enough

A quick recap: Hermes Agent stores each Agent’s configuration, memory, and skills under the ~/.hermes/ directory:

~/.hermes/
├── config.yaml       # main config (model, tools, etc.)
├── .env              # environment variables (API Key, etc.)
├── MEMORY.md         # episodic memory
├── USER.md           # user profile
├── SKILL.md          # procedural memory
└── skills/           # skills directory

This structure is good — for one Agent, one role. But the real-world scenario is that you might need:

  • A code review Agent: leaning toward code quality and refactoring suggestions, using a model with a large context
  • A deployment Agent: leaning toward K8s and CI/CD operations, using a small, fast model
  • An ops inspection Agent: running inspection tasks on a schedule and logging inspection records, using the cheapest model

The three roles’ memory contents are completely different. The code review Agent remembers your coding conventions, the deployment Agent remembers your K8s cluster topology, and the ops Agent records historical failure patterns. Mix them together and the memory files turn into a pot of porridge.

You might think: then why not copy ~/.hermes/ three times, one for each role? Sure, that works — but that’s exactly what Profile does, only it manages it better for you.

2. What Is a Profile

A Profile is Hermes’s built-in configuration isolation mechanism. Each Profile is an independent Hermes configuration environment, containing its own config files, memory files, skills directory, and environment variables. One Profile = one logical Agent persona.

To put it more plainly: without installing three Hermes instances, you can have three completely independent Agents. Each keeps its own memories, configures its own model, and installs its own skills.

The Profile mechanism is everywhere in Hermes. With the --profile (or -p) global parameter, you can make any command act on a specified Profile; with hermes profile use you can switch the default Profile:

hermes profile create my-agent                  # create a new profile
hermes --profile my-agent chat "帮我看一段代码"  # run one conversation with the specified profile
hermes profile use my-agent                     # switch the default profile (omit --profile from then on)
hermes -p my-agent config set model qwen2.5     # configure using the -p shorthand
hermes -p my-agent skill add k8s-deploy-guide   # install a skill for the specified profile

When you don’t specify --profile, Hermes uses the currently active default Profile (named default by default).

3. Hands On: Creating Your First Persona

Assume your default Profile is already a code review Agent. Now create a deployment Agent.

3.1 Creating a New Profile

# create a blank profile named deployer
hermes profile create deployer

You can also use --clone to copy the configuration from the current Profile:

# copy the current profile's config.yaml, .env and SOUL.md into the new profile
hermes profile create deployer --clone

# a full clone — memories, sessions and skills copied along too
hermes profile create deployer --clone-all

After creation, a deployer/ subdirectory is generated under ~/.hermes/profiles/, containing a brand-new set of config and memory files.

The two Profiles are completely isolated:

~/.hermes/
├── config.yaml          # the default profile's configuration
├── MEMORY.md            # the default profile's memory
├── USER.md              # the default profile's user profile
├── SKILL.md             # the default profile's skills
├── .env                 # the default profile's environment variables
│
├── profiles/
│   └── deployer/
│       ├── config.yaml  # the deployer profile's configuration (separate!)
│       ├── MEMORY.md    # the deployer profile's memory
│       ├── USER.md
│       ├── SKILL.md
│       └── .env

3.2 Switching Profiles

There are two ways. One is to set the default Profile, after which all commands point to it automatically:

# set deployer as the default profile
hermes profile use deployer

# from now on, chat directly and deployer is used automatically
hermes chat "Write a K8s deployment template for me"

The second is to specify it temporarily for each command, without changing the default:

# temporarily chat with the deployer profile
hermes --profile deployer chat "帮我写一个 K8s deployment 模板"

# temporarily install a skill with the deployer profile
hermes -p deployer skill add k8s-deploy-guide

3.3 Viewing All Profiles

# list all profiles
hermes profile list

The output is something like:

* default
  deployer
  maintainer

The one with a leading * is the currently active default Profile. Use hermes profile use <name> to switch.

3.4 Deleting a Profile

# delete the deployer profile (removing all of its configuration and memory)
hermes profile delete deployer

Note: a delete operation is irreversible. But each Profile is independent, and deleting deployer won’t affect default.

4. Isolation and Sharing Between Profiles

We just said “completely isolated,” but some things are shared:

Item Isolated? Description
Conversation history Isolated Each Profile has its own conversation records
MEMORY.md / USER.md / SKILL.md Isolated Each keeps its own
Model configuration Isolated Each Profile can use a different model
Skill files Isolated Each Profile installs different skills
Global plugins Shared Plugins are global and shared by all Profiles
Tool authorization Isolated Each Profile authorizes tool permissions independently

You can configure them flexibly according to each role’s needs:

  • The code review Agent uses Qwen2.5-14B, with file operation tools enabled
  • The deployment Agent uses DeepSeek-V3, with Shell execution tools enabled
  • The ops Agent uses a small local model, with only log-reading tools enabled

Three Profiles, three sets of memories, three differently positioned Agents — but all on the same machine, under the same Hermes installation.

5. Why Profiles Are the Foundation for Multi-Agent Collaboration

By now you might feel that three Agents running independently, each keeping its own memories, is already pretty good. But once you really step into a multi-Agent collaboration scenario, you’ll find a key problem: they need to share some knowledge.

For example:

  • The code review Agent remembers that “your microservices are written in Go and deployed on K8s”
  • The deployment Agent needs to know this background when writing deployment templates
  • The ops Agent also needs to know that Go and K8s are in use when troubleshooting

Although the three Profiles isolate memory at the file level, you can absolutely connect them to the same external Memory Provider — that’s the Hermes Memory Provider mechanism we’ll cover in the next article, and in particular the Mem0 enterprise-grade memory layer.

# connect all profiles to the same Mem0 instance
hermes -p code-reviewer config set memory.provider mem0
hermes -p deployer config set memory.provider mem0
hermes -p maintainer config set memory.provider mem0

Profiles provide the foundation of “independent roles,” and the Memory Provider provides the bridge for “shared knowledge.” Put the two together and you have the complete solution for multi-Agent collaboration.

6. Summary

Profiles are the most easily skipped feature in Hermes — introductory tutorials usually don’t need it, and one Agent is enough. But once you start seriously doing multi-role Agent collaboration, it becomes a foundation you can’t route around.

Its value lies in this: it gives you “persona” capability without changing your Hermes installation. One machine, one Hermes, running three completely differently positioned Agents. And each Agent’s configuration, memory, and skills are cleanly isolated from one another, with no cross-contamination.

This sets up the next article’s connection — the Memory Provider lets these personas share an enterprise-grade knowledge layer beyond their file-based memory.

A small step forward every day is a new height!

Author: Tang Moying

Source: /en/post/ai-hermes-profile

License: this article is shared under "CC BY 4.0". Please credit the author and link back to the original when republishing.