Academy → ReferenceOfficial documentation · Arabic guidance

Profile Commands Reference

مرجع أوامر الملفات الشخصية

Reference13 min readLesson 95 questions✓ 2026-08-18
Before you read

What this page is, and what it holds.

This page covers Profile Commands Reference. It carries a source warning and takes about 13 minutes to read. Check which profile you are in before a sensitive command. Mixing them up is easy.

15sections
31code examples
13tables
24commands
2,280source words
What you will be able to do

Outcomes taken from this page, not a template.

  • Understand what الملفات الشخصية is and when you need it.
  • Run hermes profile import and hermes profile alias work and understand what happens next.
  • Read the table and take only the row that applies to you.
  • Set OPENAI_API_KEY in the right place.
Identifiers you will meet

Exactly as they appear in Hermes.

Commands
  • hermes profile import
  • hermes profile alias work
  • hermes profile describe researcher
  • hermes profile
  • hermes profile list
  • hermes profile export
  • hermes profile install
  • hermes profile describe
Environment variables
  • OPENAI_API_KEY
  • GRAPHITI_MCP_URL
Page map

Jump to the part you need.

  1. 01`hermes profile`
  2. 02`hermes profile list`
  3. 03`hermes profile use`
  4. 04`hermes profile create`
  5. 05`hermes profile describe`
  6. 06`hermes profile delete`
  7. 07`hermes profile show`
  8. 08`hermes profile alias`
  9. 09`hermes profile rename`
  10. 10`hermes profile export`
  11. 11`hermes profile import`
  12. 12Distribution commands
  13. 13`hermes -p` / `hermes --profile`
  14. 14`hermes completion`
  15. 15See also
The full official page

Nothing summarised away.

The documentation body below is reproduced from the official source so commands and identifiers stay exact. Each section carries a short note describing what it contains.

This page covers all commands related to Hermes profiles. For general CLI commands, see CLI Commands Reference.

`hermes profile`

A lookup table. Do not read it all; find the row that applies to you. Commands here: hermes profile.

Shell1 line
hermes profile <subcommand>

Top-level command for managing profiles. Running hermes profile without a subcommand shows help.

SubcommandDescription
listList all profiles.
useSet the active (default) profile.
createCreate a new profile.
describeRead or set a profile's description (used by the kanban orchestrator for routing).
deleteDelete a profile.
showShow details about a profile.
aliasRegenerate the shell alias for a profile.
renameRename a profile.
exportExport a profile to a tar.gz archive.
importImport a profile from a tar.gz archive.
installInstall a profile distribution from a git URL or local directory. See Profile Distributions.
updateRe-pull a distribution-managed profile and re-apply its bundle.
infoShow distribution metadata for a profile (origin URL, commit, last update).

`hermes profile list`

Commands you type in a terminal. Understand what one does before copying it. Commands here: hermes profile list, hermes profile list default.

Shell1 line
hermes profile list

Lists all profiles. The currently active profile is marked with *.

Example:

Shell5 lines
$ hermes profile list
  default
* work
  dev
  personal

No options.

`hermes profile use`

Commands you type in a terminal. Understand what one does before copying it. Commands here: hermes profile use.

Shell1 line
hermes profile use <name>

Sets <name> as the active profile. All subsequent hermes commands (without -p) will use this profile.

ArgumentDescription
<name>Profile name to activate. Use default to return to the base profile.

Example:

Shell2 lines
hermes profile use work
hermes profile use default

`hermes profile create`

A lookup table. Do not read it all; find the row that applies to you. Commands here: hermes profile create, hermes profile create work.

Shell1 line
hermes profile create <name> [options]

Creates a new profile.

Argument / OptionDescription
<name>Name for the new profile. Must be a valid directory name (alphanumeric, hyphens, underscores).
--cloneCopy config.yaml, .env, SOUL.md, and skills from the current profile.
--clone-allCopy everything (config, memories, skills, cron, plugins) from the current profile. Excludes per-profile history: sessions, state.db, backups, state-snapshots, checkpoints.
--clone-from <profile>Clone config/skills/SOUL from a specific profile instead of the current one. Implies --clone unless paired with --clone-all.
--no-aliasSkip wrapper script creation.
--description "<text>"One- or two-sentence description of what this profile is good at. Used by the kanban orchestrator to route tasks based on role instead of profile name alone. Skip and add later via hermes profile describe. Persisted in <profile_dir>/profile.yaml.
--no-skillsCreate an empty profile with zero bundled skills enabled. Writes a .no-bundled-skills marker into the profile so future hermes update runs won't re-seed the bundled set, and refuses to combine with --clone, --clone-from, or --clone-all (which would copy skills in anyway). Useful for narrow orchestrator profiles or sandbox profiles that should not inherit the full skill catalog. To toggle this on an already-created profile (including the default ~/.hermes), use hermes skills opt-out / hermes skills opt-in.

Creating a profile does not make that profile directory the default project/workspace directory for terminal commands. If you want a profile to start in a specific project, set terminal.cwd in that profile's config.yaml.

Examples:

Shell14 lines
# Blank profile — needs full setup
hermes profile create mybot

# Clone config only from current profile
hermes profile create work --clone

# Clone everything from current profile
hermes profile create backup --clone-all

# Clone config from a specific profile
hermes profile create work2 --clone-from work

# Clone everything from a specific profile
hermes profile create work2-backup --clone-from work --clone-all

`hermes profile describe`

A lookup table. Do not read it all; find the row that applies to you. Commands here: hermes profile describe researcher, hermes profile describe.

Shell1 line
hermes profile describe [<name>] [options]

Read or set a profile's description. The description is consumed by the kanban orchestrator to route tasks based on what each profile is good at, rather than guessing from the profile name alone. Persisted in <profile_dir>/profile.yaml so it survives reboots and is shared with the gateway.

With no flags, prints the current description (or (no description set for '<name>') if empty).

Argument / OptionDescription
<name>Profile to describe. Required unless --all --auto is used.
--text "<text>"Set the description to this exact text (user-authored). Overwrites any existing description.
--autoAuto-generate a 1-2 sentence description via the auxiliary LLM, based on the profile's installed skills, configured model, and name. Configure the model under auxiliary.profile_describer in config.yaml. Auto-generated descriptions are marked description_auto: true so the dashboard can flag them for review.
--overwriteWith --auto, replace user-authored descriptions too (default: skip profiles whose description was set explicitly).
--allWith --auto, sweep every profile missing a description.

Examples:

Shell11 lines
# Read the current description
hermes profile describe researcher

# Set it explicitly
hermes profile describe researcher --text "Reads source code and writes findings."

# Let the LLM generate one
hermes profile describe researcher --auto

# Fill in descriptions for every profile that doesn't have one
hermes profile describe --all --auto

`hermes profile delete`

Carries a warning. Read it before running anything here. Commands here: hermes uninstall, hermes profile delete. The upstream warning appears below.

Shell1 line
hermes profile delete <name> [options]

Deletes a profile and removes its shell alias.

Argument / OptionDescription
<name>Profile to delete.
--yes, -ySkip confirmation prompt.

Example:

Shell2 lines
hermes profile delete mybot
hermes profile delete mybot --yes

`hermes profile show`

Commands you type in a terminal. Understand what one does before copying it. Commands here: hermes profile show, hermes profile show work.

Shell1 line
hermes profile show <name>

Displays details about a profile including its home directory, configured model, gateway status, skills count, and configuration file status.

This shows the profile's Hermes home directory, not the terminal working directory. Terminal commands start from terminal.cwd (or the launch directory on the local backend when cwd: ".").

ArgumentDescription
<name>Profile to inspect.

Example:

Shell9 lines
$ hermes profile show work
Profile: work
Path:    ~/.hermes/profiles/work
Model:   anthropic/claude-sonnet-4 (anthropic)
Gateway: stopped
Skills:  12
.env:    exists
SOUL.md: exists
Alias:   ~/.local/bin/work

`hermes profile alias`

Commands you type in a terminal. Understand what one does before copying it. Commands here: hermes profile alias work, hermes profile alias.

Shell1 line
hermes profile alias <name> [options]

Regenerates the shell alias script at ~/.local/bin/<name>. Useful if the alias was accidentally deleted or if you need to update it after moving your Hermes installation.

Argument / OptionDescription
<name>Profile to create/update the alias for.
--removeRemove the wrapper script instead of creating it.
--name <alias>Custom alias name (default: profile name).

Example:

Shell8 lines
hermes profile alias work
# Creates/updates ~/.local/bin/work

hermes profile alias work --name mywork
# Creates ~/.local/bin/mywork

hermes profile alias work --remove
# Removes the wrapper script

`hermes profile rename`

Commands you type in a terminal. Understand what one does before copying it. Commands here: hermes profile rename.

Shell1 line
hermes profile rename <old-name> <new-name>

Renames a profile. Updates the directory and shell alias.

ArgumentDescription
<old-name>Current profile name.
<new-name>New profile name.

Example:

Shell3 lines
hermes profile rename mybot assistant
# ~/.hermes/profiles/mybot → ~/.hermes/profiles/assistant
# ~/.local/bin/mybot → ~/.local/bin/assistant

`hermes profile export`

Commands you type in a terminal. Understand what one does before copying it. Commands here: hermes profile export work, hermes profile export.

Shell1 line
hermes profile export <name> [options]

Exports a profile as a compressed tar.gz archive — a portable snapshot you can back up, move to another machine, or hand to someone else. auth.json and .env are always excluded.

Also available in chat as /export, and in the desktop app via ⌘K → Export profile… or a profile square's right-click menu. A desktop export additionally stages desktop.json (skin, light/dark mode, custom themes, rail color, window layout) into the archive.

Argument / OptionDescription
<name>Profile to export.
-o, --output <path>Output file path (default: <name>.tar.gz).

Example:

Shell4 lines
hermes profile export work
# Creates work.tar.gz in the current directory

hermes profile export work -o ./work-2026-03-29.tar.gz

See Export and import a profile file for exactly what lands in the archive and what to check before sending one to someone else.

`hermes profile import`

Commands you type in a terminal. Understand what one does before copying it. Commands here: hermes profile import.

Shell1 line
hermes profile import <archive> [options]

Imports a profile from a tar.gz archive, as a new profile. Refuses to overwrite an existing profile, and cannot import as default (the built-in root profile) — pass --name in either case. A shell wrapper is created when the name doesn't collide with an existing command.

Also available in chat as /import, and in the desktop app via ⌘K → Import profile… or the import button beside the profile rail's +. A desktop import also applies any bundled desktop.json overlay (theme, layout) and switches you into the new profile.

Argument / OptionDescription
<archive>Path to the tar.gz archive to import.
--name <name>Name for the imported profile (default: inferred from archive).

Example:

Shell4 lines
hermes profile import ./work-2026-03-29.tar.gz
# Infers profile name from the archive

hermes profile import ./work-2026-03-29.tar.gz --name work-restored

Distribution commands

A lookup table. Do not read it all; find the row that applies to you. Commands here: hermes profile install, hermes profile install git.

Distributions turn a profile into a shareable, versioned artifact published as a git repository. A recipient installs the distribution with a single command and can update it in place later without touching their local memories, sessions, or credentials.

auth.json and .env are never part of a distribution — they stay on the installing user's machine.

The recipient's user data (memories, sessions, auth, their own edits to .env) is always preserved across the initial install and subsequent updates.

hermes profile install

Shell1 line
hermes profile install <source> [--name <name>] [--alias] [--force] [--yes]

Installs a profile distribution from a git URL or a local directory.

OptionDescription
<source>Git URL (github.com/user/repo, https://..., git@..., ssh://, git://) or a local directory containing distribution.yaml at its root.
--name NAMEOverride the profile name from the manifest.
--aliasAlso create a shell wrapper (e.g. telemetry → hermes -p telemetry).
--forceOverwrite an existing profile of the same name. User data is still preserved.
-y, --yesSkip the manifest-preview confirmation prompt.

The installer shows the manifest, lists required env vars, and warns about cron jobs before asking for confirmation. Required env vars go into a .env.EXAMPLE file you copy to .env and fill in.

Examples:

Shell11 lines
# Install from a GitHub repo (shorthand)
hermes profile install github.com/kyle/telemetry-distribution --alias

# Install from a full HTTPS git URL
hermes profile install https://github.com/kyle/telemetry-distribution.git

# Install from SSH
hermes profile install git@github.com:kyle/telemetry-distribution.git

# Install from a local directory during development
hermes profile install ./telemetry/

hermes profile update

Shell1 line
hermes profile update <name> [--force-config] [--yes]

Re-clones the distribution from its recorded source and applies updates. Distribution-owned files (SOUL.md, skills/, cron/, mcp.json) are overwritten; user data (memories, sessions, auth, .env) is never touched.

config.yaml is preserved by default to keep your local overrides. Pass --force-config to reset it to the distribution's shipped config.

hermes profile info

Shell1 line
hermes profile info <name>

Prints the profile's distribution manifest — name, version, required Hermes version, author, env var requirements, the source URL/path, and the Installed: timestamp recorded when the distribution was last install-ed or update-d. Useful for checking what a shared profile needs before installing it, and for spotting "this profile was installed 6 months ago and hasn't been updated."

hermes profile list also shows the distribution name and version in a Distribution column, and hermes profile show <name> / delete <name> surface the source URL so you can tell at a glance which profiles came from a git repo vs. were created locally.

Private distributions

A private git repository works as a distribution source with no extra configuration — the install shells out to your normal git binary, so whatever authentication your shell is already set up for (SSH key, git credential helper, GitHub CLI's stored HTTPS credentials) applies transparently.

Shell5 lines
# Uses your SSH key, the same as any other `git clone`
hermes profile install git@github.com:your-org/internal-assistant.git

# Uses your git credential helper
hermes profile install https://github.com/your-org/internal-assistant.git

If a clone prompts for credentials interactively in your terminal during install, that prompt flows through. Set up your auth the way you'd normally use git clone against the same repo first, then install.

Distribution manifest (distribution.yaml)

Every distribution has a distribution.yaml at the root of its repository:

YAML19 lines
name: telemetry
version: 0.1.0
description: "Compliance monitoring harness"
hermes_requires: ">=0.12.0"
author: "Your Name"
license: "MIT"
env_requires:
  - name: OPENAI_API_KEY
    description: "OpenAI API key"
    required: true
  - name: GRAPHITI_MCP_URL
    description: "Memory graph URL"
    required: false
    default: "http://127.0.0.1:8000/sse"
distribution_owned:   # optional; defaults to SOUL.md, config.yaml,
                      #   mcp.json, skills/, cron/, distribution.yaml
  - SOUL.md
  - skills/compliance/
  - cron/

hermes_requires supports >=, <=, ==, !=, >, <, or a bare version (treated as >=). Install fails with a clear error if the current Hermes version doesn't satisfy the spec.

distribution_owned is optional. If set, only those paths are replaced on update; anything else in the profile stays user-owned. If omitted, the defaults above apply.

Publishing a distribution

Authoring a distribution is just a git push:

  1. In your profile directory, create distribution.yaml with at least name and version.
  2. Initialize a git repo (or use an existing one) and push to GitHub / GitLab / any host Hermes can clone from.
  3. Tell recipients to run hermes profile install <your-repo-url>.

Use git tags for versioned releases — recipients who clone HEAD get your latest state, and you can always bump version: in the manifest.

`hermes -p` / `hermes --profile`

Explains the idea itself. Read it slowly; the later sections build on it.

Shell2 lines
hermes -p <name> <command> [options]
hermes --profile <name> <command> [options]

Global flag to run any Hermes command under a specific profile without changing the sticky default. This overrides the active profile for the duration of the command.

OptionDescription
-p <name>, --profile <name>Profile to use for this command.

Examples:

Shell4 lines
hermes -p work chat -q "Check the server status"
hermes --profile dev gateway start
hermes -p personal skills list
hermes -p work config edit

`hermes completion`

Commands you type in a terminal. Understand what one does before copying it. Commands here: hermes completion, hermes completion zsh.

Shell1 line
hermes completion <shell>

Generates shell completion scripts. Includes completions for profile names and profile subcommands.

ArgumentDescription
<shell>Shell to generate completions for: bash, zsh, or fish.

Examples:

Shell7 lines
# Install completions
hermes completion bash >> ~/.bashrc
hermes completion zsh >> ~/.zshrc
hermes completion fish > ~/.config/fish/completions/hermes.fish

# Reload shell
source ~/.bashrc

After installation, tab completion works for:

  • hermes profile <TAB> — subcommands (list, use, create, etc.)
  • hermes profile use <TAB> — profile names
  • hermes -p <TAB> — profile names

See also

Explains the idea itself. Read it slowly; the later sections build on it.

Knowledge check

5 questions answered by this page alone.

Every option is a real identifier from the Hermes documentation. The wrong ones are real too, just from other pages.

1. In this lesson's table, what is the “Description” for “import”?
2. Which of these environment variables actually appears in this lesson?
3. Which warning does the source state in this lesson?
4. Which of these headings does not appear in this lesson?
5. Which configuration key appears in this lesson's examples?