# Implement: Set Up Specialist Hermes Agent Profiles with Distinct Roles, Scopes, and Workflows

Inspect the environment, create four dedicated Hermes Agent profiles (`assistant`, `researcher`, `coder`, and `content`), set explicit boundaries in each `SOUL.md`, configure profile-specific models and working directories, establish artifact handoffs, verify isolation, and report results. If you have terminal tools, perform the safe inspectable steps yourself and pause only for required external credentials or decisions you cannot derive. If you cannot execute commands directly, return this procedure as an exact human-run runbook with commands, configuration blocks, and expected results. Inspect before modifying files, preserve unrelated state, and ask only for missing required information.

## Outcome

Partition a single general-purpose Hermes Agent installation into four specialist agent profiles:

1. `assistant`: Everyday operations, lists, reminders, food inventory, and quick capture.
2. `researcher`: Source-backed investigation, evidence collection, and cited technical briefs.
3. `coder`: Code exploration, targeted changes, test runs, diff reviews, and managing external coding CLIs.
4. `content`: Personal voice drafting, repurposing, and content lifecycle management without unauthorized publishing.

Each profile must receive an isolated `HERMES_HOME` containing its own configuration (`config.yaml`), persistent memory (`memories/`), session logs, and role contracts (`SOUL.md`). The profiles must coordinate via explicit filesystem artifacts and shared repositories rather than shared memory.

## Preconditions and inputs

Inspect or confirm these prerequisites before modifying profile state:

- A working Hermes Agent installation on a Linux host or VPS.
- Python 3.10+ and the `hermes` CLI available in the path.
- Functional LLM provider credentials configured for the default Hermes profile.
- A designated parent workspace for shared context repositories and work artifacts.

The operator must verify or supply:

- `<BASE_WORKSPACE>`: Parent directory where projects reside (for example, `/home/hermes/projects`).
- `<PERSONAL_CONTEXT_DIR>`: Directory containing guidelines, voice rules, and maps (for example, `<BASE_WORKSPACE>/personal-context`).
- `<CONTENT_WORKSPACE_DIR>`: Working directory for drafts and rendered content (for example, `<BASE_WORKSPACE>/content-forge`).
- `<CODE_WORKSPACE_DIR>`: Target repository directory for development tasks.
- `<CODER_MODEL>`: Model identifier for coding tasks (for example, `gpt-5.6-sol`).
- `<CONTENT_MODEL>`: Model identifier for writing tasks (for example, `gpt-5.6-luna`).
- `<RESEARCHER_MODEL>`: Model identifier for research tasks (for example, `gpt-5.5`).

If the base Hermes CLI is not operational, stop and report the unmet precondition.

## Safety constraints

- Profiles are administrative boundaries, not secure sandboxes. Profiles normally run as the same OS user and share filesystem permissions. Do not rely on profiles alone to isolate untrusted code; use containers or unprivileged OS users when hard isolation is required.
- Never grant the `coder` profile unattended write access to production environments. Enforce bounded turn counts and review diffs before applying changes.
- Prevent automated external publication. The `content` profile must only stage local drafts; publishing requires explicit human approval.
- Keep agent memory isolated. Never point multiple active profiles to the same `HERMES_HOME` or share writable session databases between profiles.
- For messaging gateways, use separate standalone instances with unique bot tokens, or opt into the central multiplexing gateway (`gateway.multiplex_profiles=true`). Never allow two gateways to poll the same Telegram bot token simultaneously.
- Do not request, echo, or commit secret API tokens in prompt instructions or completion summaries.

## Implementation

1. Connect to the host and inspect the existing Hermes installation and profile registry:

   ```bash
   whoami
   command -v hermes
   hermes --version
   hermes profile list
   ```

2. Initialize the four specialist profiles with descriptive summaries for orchestration and Kanban routing:

   ```bash
   hermes profile create assistant --description "Everyday operations, food inventory, reminders, errands, lists, and quick capture"
   hermes profile create researcher --description "Primary-source research, technical evidence, comparisons, and cited briefs"
   hermes profile create coder --description "Implementation, debugging, test runs, diff reviews, and coding CLI management"
   hermes profile create content --description "Personal voice, blog and social drafting, edits, and publication staging"
   ```

3. Configure working directories and default models for each profile:

   ```bash
   assistant config set terminal.cwd "<BASE_WORKSPACE>"
   researcher config set terminal.cwd "<BASE_WORKSPACE>"
   researcher config set model.default "<RESEARCHER_MODEL>"
   coder config set terminal.cwd "<CODE_WORKSPACE_DIR>"
   coder config set model.default "<CODER_MODEL>"
   content config set terminal.cwd "<CONTENT_WORKSPACE_DIR>"
   content config set model.default "<CONTENT_MODEL>"
   ```

4. Define role boundaries by creating explicit `SOUL.md` files for each profile:

   In `~/.hermes/profiles/assistant/SOUL.md`:

   ```markdown
   # Role: Operational Assistant

   ## Does

   - Manage daily errands, shopping lists, and reminder schedules.
   - Update structured source-of-truth stores for household tasks.

   ## Does not

   - Write public blog posts or social media copy.
   - Implement software or run test suites.
   - Conduct deep web research.
   ```

   In `~/.hermes/profiles/researcher/SOUL.md`:

   ```markdown
   # Role: Evidence Researcher

   ## Does

   - Investigate technical questions using primary sources and official documentation.
   - Produce dated, cited Markdown briefs with direct links and caveats.

   ## Does not

   - Generate marketing copy or unverified narratives.
   - Edit application code or run build pipelines.
   ```

   In `~/.hermes/profiles/coder/SOUL.md`:

   ```markdown
   # Role: Software Delivery and Verification

   ## Does

   - Inspect codebases, implement minimal safe changes, and run tests.
   - Review unified diffs and report verifiable test outputs.
   - Manage external coding CLIs for bounded tasks.

   ## Does not

   - Publish articles or compose outward-facing copy.
   - Manage personal schedules or grocery lists.
   ```

   In `~/.hermes/profiles/content/SOUL.md`:

   ```markdown
   # Role: Voice and Content Delivery

   ## Does

   - Read personal guidelines from `<PERSONAL_CONTEXT_DIR>` before drafting.
   - Write drafts and educational copy in the author voice.
   - Save drafts exclusively inside `<CONTENT_WORKSPACE_DIR>`.

   ## Does not

   - Publish content externally without explicit human authorization.
   - Invent technical claims not present in research notes.
   - Edit codebase logic or build configurations.
   ```

5. Configure bounded external coding CLI execution for the coder profile. Use headless execution with restricted tool allowances and turn limits:

   ```bash
   claude -p "Fix the confirmed issue, keep changes scoped, and run tests." --allowedTools "Read,Edit,Write,Bash(npm run *),Bash(git diff *),Bash(git status *)" --max-turns 10
   ```

6. Configure messaging gateways. For standalone gateways with dedicated Telegram bots, run interactive setup for each target profile:

   ```bash
   assistant gateway setup
   coder gateway setup
   ```

   Alternatively, enable central profile multiplexing on the default profile:

   ```bash
   hermes config set gateway.multiplex_profiles true
   ```

7. Inspect the resolved configuration across all profiles:

   ```bash
   hermes profile show assistant
   hermes profile show researcher
   hermes profile show coder
   hermes profile show content
   ```

## Verification

Confirm every pass criterion:

1. `hermes profile list` displays all four profiles (`assistant`, `researcher`, `coder`, `content`) with their routing descriptions.
2. `hermes profile show <profile>` confirms custom `terminal.cwd` and model defaults for each profile.
3. Each profile directory in `~/.hermes/profiles/<profile>/` contains a `SOUL.md` with explicit _Does_ and _Does not_ sections.
4. Running `researcher chat "Verify profile initialization"` initializes the researcher role without reading other profile histories.
5. Running `coder doctor` and `assistant doctor` reports passing diagnostic checks.
6. The shared directories (`<BASE_WORKSPACE>`, `<PERSONAL_CONTEXT_DIR>`, `<CONTENT_WORKSPACE_DIR>`) exist with correct non-root permissions.

## Completion report

- Changes made: Created four specialist Hermes profiles (`assistant`, `researcher`, `coder`, `content`), configured individual working directories and default models, authored scoped `SOUL.md` contracts, and configured gateway settings.
- Verification performed: Ran `hermes profile list`, inspected parameters with `hermes profile show`, verified role contracts in `SOUL.md`, and ran profile doctor diagnostics.
- User actions still required: Complete interactive gateway setup (`<profile> gateway setup`) if individual Telegram bots are desired, and populate shared context repositories.
- Unresolved risks or blockers: Filesystem isolation remains shared under the host user; deploy containerization or separate user accounts if untrusted code execution is required.

### Sources

- Source article: [Hermes Agent Profiles: My Four Specialist AI Agents](https://vgagaleski.com/blogs/hermes-agent-profiles-specialist-ai-team/)
- Official reference: [Hermes Agent Profiles](https://hermes-agent.nousresearch.com/docs/user-guide/profiles)
- Official reference: [Hermes Multi-Profile Gateways](https://hermes-agent.nousresearch.com/docs/user-guide/multi-profile-gateways)
- Official reference: [Claude Code Documentation](https://code.claude.com/docs/)
