Wiki · Features in depth

Profiles and multiple agents

A second agent for different work is not a second server — it just needs its own profile. Here is how, and where profiles get confused with permissions.

✅ Verified 16. 10. 2026Source: official documentation →📋 Copy for your AI
👥
A profile is one agent's own home. Its own settings, its own keys, its own memory, conversations and skills. When you want a second agent — for different work, a different project or a different person — give it its own profile. Never run two agents against one profile.

What a profile contains

A profile is a single folder in ~/.hermes/profiles/name/. Everything the agent has lives there — which is why profiles can be backed up, moved and cloned:

Inside the profileWhat for
config.yamlSettings: model, tools, terminal backend, scheduled jobs
.envKeys and secrets (API keys, tokens)
SOUL.mdHow the agent talks and behaves
memories/Memory — what it writes down about you and the work
sessions + state.dbAll conversations and the agent's state
skills/, cron/, plugins/Learned procedures, scheduled jobs, extensions

A folder counts as a profile only when it holds one of these files (config.yaml, .env, SOUL.md, profile.yaml, auth.json, state.db). An empty folder left behind by a log is ignored.

Creating a profile in three steps

  1. Create it — a matching command appears as well:

    ❯ hermes profile create coder
  2. Configure its keys and model (this runs inside the new profile, not the current one):

    ❯ coder setup
  3. Start talking to it. From now on coder has its own memory and history:

    ❯ coder chat

To start from your current settings, add --clone (it copies config, keys, SOUL.md, skills and memory). hermes profile create work --clone

Working with profiles

What you wantCommand
Run anything in another profilehermes -p coder chat, hermes -p coder doctor
A quick question without opening the UIhermes -p work chat -q "Check the server status"
List profileshermes profile list
Explain what is in a profilehermes profile show coder
Copy a profilehermes profile create work-backup --clone-from coder --clone-all
Export / move to another machinehermes profile export · hermes profile import

A profile is not a sandbox

This is the most common misunderstanding. A profile separates the agent's state, not its permissions:

WhatControlled byWhat it means
State (config, memory, conversations)The profile (HERMES_HOME)Two profiles cannot see into each other
Where commands startterminal.cwd in config.yamlThe agent may well work inside your project; set that folder explicitly
What it may touch on diskYour OS user's rights (plus a sandbox if you enable one)A profile alone does not restrict anything — that is the Security page
# ~/.hermes/profiles/coder/config.yaml terminal: backend: local cwd: /var/www/my-project

cwd: "." means "the folder I launched Hermes from", not the profile folder. Asking the agent which directory it is in is not a reliable isolation test. Set it.

Several agents on one server

On a single VPS it is normal to run several profiles side by side: one for a website, one main assistant, one community bot. Each has its own state database and its own conversations.

What to watchWhy and how
One profile = one running agent. Never two processes on the same profileBoth write memory, and each loads the other's writes at session start — the state compounds until nobody knows what you configured
The right profile per platformWhen two profiles share one bot token (Discord, for example) they fight over the connection and the service restarts in a loop
One gateway per profile (or multiplexing)Each profile can run its own gateway; or use one shared gateway with gateway.multiplex_profiles: true
Check memory after cloningIf the profile uses an external memory provider, verify its settings travelled — otherwise memory is silently off and the agent only looks like it remembers
❯ hermes gateway list # what runs on this machine ❯ hermes -p coder gateway restart # restart one profile ❯ hermes -p coder logs -f # live log for a profile ❯ hermes gateway migrate --multiplex # move to one shared gateway

Where a profile and your machine mix

A profile is separated only for Hermes itself. The tools it uses (git, ssh, gh, npm…) take the credentials of your system account, so two profiles on one machine share your GitHub and your SSH key.

You wantSetting
Profiles to share your account's credentials (usual and convenient)The default — do nothing
A profile with its own CLI loginsterminal.home_mode: profile in that profile's config.yaml

What we learned running this

What we dealt withThe lesson
Three profiles and one bot on a single VPS. The gateway service kept restartingThe cause was a token conflict plus an unfinished component in the profile, not the bot. Splitting roles into profiles and restarting services together fixed it
After an upgrade the agent acted as if it remembered nothingThe profile had an empty memory setting (memory.provider). With external memory, always verify the setting, not just that the file exists
The website, the main assistant and the community bot run as three profilesEditing one does not touch the others — and when something breaks, you know which profile it was
Two agents needed different projects in the same folderterminal.cwd per profile did it. "Which folder are you in?" is not a sufficient check

Our tips

TipWhy
A profile per project, not per moodMemory and keys belong to a project — otherwise the agent mixes contexts up
Name profiles short and plain ASCIIThe name is also a command: coder chat is easy, a name with accents is not
Try things in a clone--clone gives you a copy you can safely break
Remember a profile is not a wallHandle permissions separately — OS accounts, a container or command approval

Where next

← Back to the wiki