# Hermes Agent profiles: separate agents for separate jobs

> How Hermes profiles give you independent agents on one machine, what they isolate (and what they don't), and the commands for creating, switching, sharing and running them.

Canonical: https://hermeswatcher.com/learn/profiles-separate-agents  
Section: Learn · Running & deploying  
Last reviewed: Oct 20, 2026  
Basis: Explained from the official Hermes Agent docs and repository (Nous Research). Steps follow the linked official sources.

## Why you might want more than one agent

A profile is a complete, separate Hermes home directory. Each one has its own config.yaml, .env with API keys, SOUL.md personality, memories, sessions, skills, cron jobs, logs and state database. That makes it easy to keep a coding assistant, a personal Telegram bot and a research agent apart, each with its own model, tools and memory, instead of one agent whose memory is a muddle of three jobs.

The default profile is ~/.hermes itself. Named profiles live under ~/.hermes/profiles/<name>/.

## Creating profiles

hermes profile create <name> makes a blank profile with the bundled skills. Two flags save setup time:

- --clone copies config, .env, SOUL.md, skills and memory files, but starts with empty sessions and no cron jobs.
- --clone-all makes a fuller copy, still excluding session history and cron.
- --clone-from <source> picks which profile to copy from, and --description "<role>" records what the profile is for.

## Switching between them

Each profile gets its own command alias in ~/.local/bin, so after creating a profile called coder you can simply run coder chat, which is the same as hermes -p coder chat. The -p <name> flag works in any position on any command.

If you mostly use one profile, make it sticky with hermes profile use <name>; plain hermes commands then target it until you run hermes profile use default. hermes profile list and hermes profile show <name> tell you what exists.

## What is not isolated

This is the part people get wrong. Profiles separate state; they are not security sandboxes.

- On the local terminal backend, every profile has the same file access as your user account. Use a container backend if you need isolation.
- The working directory is set separately by terminal.cwd; set an absolute path if each profile should start in its own folder.
- On host installs, external CLIs share your real HOME and their credentials unless you set terminal.home_mode: profile.
- OAuth logins for providers such as Anthropic, OpenAI Codex and xAI are shared through the root auth.json by default, because their refresh tokens are single-use. Give a profile its own login with hermes -p <name> auth add <provider>.

## Running a bot per profile

Each profile runs its own gateway as a separate process with its own bot token in its own .env. coder gateway start and assistant gateway start run independently, and coder gateway install creates a per-profile service. One bot token belongs to one profile: if two gateways try to use the same token, the second is blocked by a token lock. That is also why cloning does not copy bot tokens, allowlists or platform sections unless you pass --clone-channels.

## Sharing, retiring and one firm rule

hermes profile export <name> produces a shareable .tar.gz with API keys stripped, and hermes profile import <file> installs one as a new profile. hermes profile delete <name> stops its gateway, removes the service and alias and deletes its data; the default profile can't be deleted this way.

The firm rule from the docs: never point two agent processes at the same profile. Two writers on one home will mix their memory writes into shared state. If two agents genuinely need to share what they learn, use an external memory provider rather than a shared home. Also note that hermes update syncs bundled skills into every profile, and a profile with a broken config.yaml can make that step fail for the whole install, so keep unused profiles tidy or delete them.

## Related guides

- [Hermes Agent messaging gateway explained](https://hermeswatcher.com/learn/messaging-gateway-explained.md)
- [How Hermes Agent memory works (and where it stops)](https://hermeswatcher.com/learn/how-hermes-memory-works.md)
- [Hermes Agent terminal backends: local, Docker, SSH, cloud](https://hermeswatcher.com/learn/choosing-a-terminal-backend.md)
- [Where Hermes Agent runs: host vs work environment](https://hermeswatcher.com/learn/where-hermes-runs.md)

## Related tools

- [Wake up to a useful research briefing](https://hermeswatcher.com/workflows/daily-research-briefing.md)
- [Turn a crowded inbox into a review queue](https://hermeswatcher.com/workflows/inbox-triage.md)
- [CLI: run bounded tasks and inspect the working environment](https://hermeswatcher.com/tools/cli.md)
- [Telegram: reach Hermes from a private bot conversation](https://hermeswatcher.com/tools/telegram.md)
- [Persistent memory: retain compact working knowledge](https://hermeswatcher.com/tools/memory.md)

## Sources

- [Profiles (official docs)](https://hermes-agent.nousresearch.com/docs/user-guide/profiles)
- [Persistent Memory (official docs)](https://hermes-agent.nousresearch.com/docs/user-guide/features/memory)
- [Messaging Gateway (official docs)](https://hermes-agent.nousresearch.com/docs/user-guide/messaging/)

---

HermesWatcher is an independent guide. It is not affiliated with or endorsed by Nous Research. The [official Hermes Agent documentation](https://hermes-agent.nousresearch.com/docs) and [repository](https://github.com/NousResearch/hermes-agent) from Nous Research are the authority; each page here lists the official sources it was written from. If this site and the official docs disagree, trust the official docs. Index for agents: https://hermeswatcher.com/llms.txt
