mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-18 04:41:56 +00:00
* docs: deep audit — fix stale config keys, missing commands, and registry drift Cross-checked ~80 high-impact docs pages (getting-started, reference, top-level user-guide, user-guide/features) against the live registries: hermes_cli/commands.py COMMAND_REGISTRY (slash commands) hermes_cli/auth.py PROVIDER_REGISTRY (providers) hermes_cli/config.py DEFAULT_CONFIG (config keys) toolsets.py TOOLSETS (toolsets) tools/registry.py get_all_tool_names() (tools) python -m hermes_cli.main <subcmd> --help (CLI args) reference/ - cli-commands.md: drop duplicate hermes fallback row + duplicate section, add stepfun/lmstudio to --provider enum, expand auth/mcp/curator subcommand lists to match --help output (status/logout/spotify, login, archive/prune/ list-archived). - slash-commands.md: add missing /sessions and /reload-skills entries + correct the cross-platform Notes line. - tools-reference.md: drop bogus '68 tools' headline, drop fictional 'browser-cdp toolset' (these tools live in 'browser' and are runtime-gated), add missing 'kanban' and 'video' toolset sections, fix MCP example to use the real mcp_<server>_<tool> prefix. - toolsets-reference.md: list browser_cdp/browser_dialog inside the 'browser' row, add missing 'kanban' and 'video' toolset rows, drop the stale '38 tools' count for hermes-cli. - profile-commands.md: add missing install/update/info subcommands, document fish completion. - environment-variables.md: dedupe GMI_API_KEY/GMI_BASE_URL rows (kept the one with the correct gmi-serving.com default). - faq.md: Anthropic/Google/OpenAI examples — direct providers exist (not just via OpenRouter), refresh the OpenAI model list. getting-started/ - installation.md: PortableGit (not MinGit) is what the Windows installer fetches; document the 32-bit MinGit fallback. - installation.md / termux.md: installer prefers .[termux-all] then falls back to .[termux]. - nix-setup.md: Python 3.12 (not 3.11), Node.js 22 (not 20); fix invalid 'nix flake update --flake' invocation. - updating.md: 'hermes backup restore --state pre-update' doesn't exist — point at the snapshot/quick-snapshot flow; correct config key 'updates.pre_update_backup' (was 'update.backup'). user-guide/ - configuration.md: api_max_retries default 3 (not 2); display.runtime_footer is the real key (not display.runtime_metadata_footer); checkpoints defaults enabled=false / max_snapshots=20 (not true / 50). - configuring-models.md: 'hermes model list' / 'hermes model set ...' don't exist — hermes model is interactive only. - tui.md: busy_indicator -> tui_status_indicator with values kaomoji|emoji|unicode|ascii (not kawaii|minimal|dots|wings|none). - security.md: SSH backend keys (TERMINAL_SSH_HOST/USER/KEY) live in .env, not config.yaml. - windows-wsl-quickstart.md: there is no 'hermes api' subcommand — the OpenAI-compatible API server runs inside hermes gateway. user-guide/features/ - computer-use.md: approvals.mode (not security.approval_level); fix broken ./browser-use.md link to ./browser.md. - fallback-providers.md: top-level fallback_providers (not model.fallback_providers); the picker is subcommand-based, not modal. - api-server.md: API_SERVER_* are env vars — write to per-profile .env, not 'hermes config set' which targets YAML. - web-search.md: drop web_crawl as a registered tool (it isn't); deep-crawl modes are exposed through web_extract. - kanban.md: failure_limit default is 2, not '~5'. - plugins.md: drop hard-coded '33 providers' count. - honcho.md: fix unclosed quote in echo HONCHO_API_KEY snippet; document that 'hermes honcho' subcommand is gated on memory.provider=honcho; reconcile subcommand list with actual --help output. - memory-providers.md: legacy 'hermes honcho setup' redirect documented. Verified via 'npm run build' — site builds cleanly; broken-link count went from 149 to 146 (no regressions, fixed a few in passing). * docs: round 2 audit fixes + regenerate skill catalogs Follow-up to the previous commit on this branch: Round 2 manual fixes: - quickstart.md: KIMI_CODING_API_KEY mentioned alongside KIMI_API_KEY; voice-mode and ACP install commands rewritten — bare 'pip install ...' doesn't work for curl-installed setups (no pip on PATH, not in repo dir); replaced with 'cd ~/.hermes/hermes-agent && uv pip install -e ".[voice]"'. ACP already ships in [all] so the curl install includes it. - cli.md / configuration.md: 'auxiliary.compression.model' shown as 'google/gemini-3-flash-preview' (the doc's own claimed default); actual default is empty (= use main model). Reworded as 'leave empty (default) or pin a cheap model'. - built-in-plugins.md: added the bundled 'kanban/dashboard' plugin row that was missing from the table. Regenerated skill catalogs: - ran website/scripts/generate-skill-docs.py to refresh all 163 per-skill pages and both reference catalogs (skills-catalog.md, optional-skills-catalog.md). This adds the entries that were genuinely missing — productivity/teams-meeting-pipeline (bundled), optional/finance/* (entire category — 7 skills: 3-statement-model, comps-analysis, dcf-model, excel-author, lbo-model, merger-model, pptx-author), creative/hyperframes, creative/kanban-video-orchestrator, devops/watchers, productivity/shop-app, research/searxng-search, apple/macos-computer-use — and rewrites every other per-skill page from the current SKILL.md. Most diffs are tiny (one line of refreshed metadata). Validation: - 'npm run build' succeeded. - Broken-link count moved 146 -> 155 — the +9 are zh-Hans translation shells that lag every newly-added skill page (pre-existing pattern). No regressions on any en/ page.
463 lines
14 KiB
Markdown
463 lines
14 KiB
Markdown
---
|
|
sidebar_position: 7
|
|
---
|
|
|
|
# Profile Commands Reference
|
|
|
|
This page covers all commands related to [Hermes profiles](../user-guide/profiles.md). For general CLI commands, see [CLI Commands Reference](./cli-commands.md).
|
|
|
|
## `hermes profile`
|
|
|
|
```bash
|
|
hermes profile <subcommand>
|
|
```
|
|
|
|
Top-level command for managing profiles. Running `hermes profile` without a subcommand shows help.
|
|
|
|
| Subcommand | Description |
|
|
|------------|-------------|
|
|
| `list` | List all profiles. |
|
|
| `use` | Set the active (default) profile. |
|
|
| `create` | Create a new profile. |
|
|
| `delete` | Delete a profile. |
|
|
| `show` | Show details about a profile. |
|
|
| `alias` | Regenerate the shell alias for a profile. |
|
|
| `rename` | Rename a profile. |
|
|
| `export` | Export a profile to a tar.gz archive. |
|
|
| `import` | Import a profile from a tar.gz archive. |
|
|
| `install` | Install a profile distribution from a git URL or local directory. See [Profile Distributions](../user-guide/profile-distributions.md). |
|
|
| `update` | Re-pull a distribution-managed profile and re-apply its bundle. |
|
|
| `info` | Show distribution metadata for a profile (origin URL, commit, last update). |
|
|
|
|
## `hermes profile list`
|
|
|
|
```bash
|
|
hermes profile list
|
|
```
|
|
|
|
Lists all profiles. The currently active profile is marked with `*`.
|
|
|
|
**Example:**
|
|
|
|
```bash
|
|
$ hermes profile list
|
|
default
|
|
* work
|
|
dev
|
|
personal
|
|
```
|
|
|
|
No options.
|
|
|
|
## `hermes profile use`
|
|
|
|
```bash
|
|
hermes profile use <name>
|
|
```
|
|
|
|
Sets `<name>` as the active profile. All subsequent `hermes` commands (without `-p`) will use this profile.
|
|
|
|
| Argument | Description |
|
|
|----------|-------------|
|
|
| `<name>` | Profile name to activate. Use `default` to return to the base profile. |
|
|
|
|
**Example:**
|
|
|
|
```bash
|
|
hermes profile use work
|
|
hermes profile use default
|
|
```
|
|
|
|
## `hermes profile create`
|
|
|
|
```bash
|
|
hermes profile create <name> [options]
|
|
```
|
|
|
|
Creates a new profile.
|
|
|
|
| Argument / Option | Description |
|
|
|-------------------|-------------|
|
|
| `<name>` | Name for the new profile. Must be a valid directory name (alphanumeric, hyphens, underscores). |
|
|
| `--clone` | Copy `config.yaml`, `.env`, and `SOUL.md` from the current profile. |
|
|
| `--clone-all` | Copy everything (config, memories, skills, sessions, state) from the current profile. |
|
|
| `--clone-from <profile>` | Clone from a specific profile instead of the current one. Used with `--clone` or `--clone-all`. |
|
|
| `--no-alias` | Skip wrapper script creation. |
|
|
|
|
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:**
|
|
|
|
```bash
|
|
# 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 --clone-from work
|
|
```
|
|
|
|
## `hermes profile delete`
|
|
|
|
```bash
|
|
hermes profile delete <name> [options]
|
|
```
|
|
|
|
Deletes a profile and removes its shell alias.
|
|
|
|
| Argument / Option | Description |
|
|
|-------------------|-------------|
|
|
| `<name>` | Profile to delete. |
|
|
| `--yes`, `-y` | Skip confirmation prompt. |
|
|
|
|
**Example:**
|
|
|
|
```bash
|
|
hermes profile delete mybot
|
|
hermes profile delete mybot --yes
|
|
```
|
|
|
|
:::warning
|
|
This permanently deletes the profile's entire directory including all config, memories, sessions, and skills. Cannot delete the currently active profile.
|
|
:::
|
|
|
|
## `hermes profile show`
|
|
|
|
```bash
|
|
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: "."`).
|
|
|
|
| Argument | Description |
|
|
|----------|-------------|
|
|
| `<name>` | Profile to inspect. |
|
|
|
|
**Example:**
|
|
|
|
```bash
|
|
$ 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`
|
|
|
|
```bash
|
|
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 / Option | Description |
|
|
|-------------------|-------------|
|
|
| `<name>` | Profile to create/update the alias for. |
|
|
| `--remove` | Remove the wrapper script instead of creating it. |
|
|
| `--name <alias>` | Custom alias name (default: profile name). |
|
|
|
|
**Example:**
|
|
|
|
```bash
|
|
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`
|
|
|
|
```bash
|
|
hermes profile rename <old-name> <new-name>
|
|
```
|
|
|
|
Renames a profile. Updates the directory and shell alias.
|
|
|
|
| Argument | Description |
|
|
|----------|-------------|
|
|
| `<old-name>` | Current profile name. |
|
|
| `<new-name>` | New profile name. |
|
|
|
|
**Example:**
|
|
|
|
```bash
|
|
hermes profile rename mybot assistant
|
|
# ~/.hermes/profiles/mybot → ~/.hermes/profiles/assistant
|
|
# ~/.local/bin/mybot → ~/.local/bin/assistant
|
|
```
|
|
|
|
## `hermes profile export`
|
|
|
|
```bash
|
|
hermes profile export <name> [options]
|
|
```
|
|
|
|
Exports a profile as a compressed tar.gz archive.
|
|
|
|
| Argument / Option | Description |
|
|
|-------------------|-------------|
|
|
| `<name>` | Profile to export. |
|
|
| `-o`, `--output <path>` | Output file path (default: `<name>.tar.gz`). |
|
|
|
|
**Example:**
|
|
|
|
```bash
|
|
hermes profile export work
|
|
# Creates work.tar.gz in the current directory
|
|
|
|
hermes profile export work -o ./work-2026-03-29.tar.gz
|
|
```
|
|
|
|
## `hermes profile import`
|
|
|
|
```bash
|
|
hermes profile import <archive> [options]
|
|
```
|
|
|
|
Imports a profile from a tar.gz archive.
|
|
|
|
| Argument / Option | Description |
|
|
|-------------------|-------------|
|
|
| `<archive>` | Path to the tar.gz archive to import. |
|
|
| `--name <name>` | Name for the imported profile (default: inferred from archive). |
|
|
|
|
**Example:**
|
|
|
|
```bash
|
|
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
|
|
|
|
:::tip
|
|
**New to distributions?** Start with the [Profile Distributions user guide](../user-guide/profile-distributions.md) — it covers the why, when, and how with full examples. The sections below are a dry CLI reference for when you know what you want.
|
|
:::
|
|
|
|
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.
|
|
|
|
:::info
|
|
`hermes profile export` / `import` are still the right commands for
|
|
**local backup and restore** of a profile on your own machine. Distribution
|
|
(`install` / `update` / `info`) is a separate concept: ship a profile via
|
|
git so someone else can install it.
|
|
:::
|
|
|
|
### `hermes profile install`
|
|
|
|
```bash
|
|
hermes profile install <source> [--name <name>] [--alias] [--force] [--yes]
|
|
```
|
|
|
|
Installs a profile distribution from a git URL or a local directory.
|
|
|
|
| Option | Description |
|
|
|--------|-------------|
|
|
| `<source>` | Git URL (`github.com/user/repo`, `https://...`, `git@...`, `ssh://`, `git://`) or a local directory containing `distribution.yaml` at its root. |
|
|
| `--name NAME` | Override the profile name from the manifest. |
|
|
| `--alias` | Also create a shell wrapper (e.g. `telemetry` → `hermes -p telemetry`). |
|
|
| `--force` | Overwrite an existing profile of the same name. User data is still preserved. |
|
|
| `-y`, `--yes` | Skip 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:**
|
|
|
|
```bash
|
|
# 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`
|
|
|
|
```bash
|
|
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`
|
|
|
|
```bash
|
|
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.
|
|
|
|
```bash
|
|
# 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:
|
|
|
|
```yaml
|
|
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`
|
|
|
|
```bash
|
|
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.
|
|
|
|
| Option | Description |
|
|
|--------|-------------|
|
|
| `-p <name>`, `--profile <name>` | Profile to use for this command. |
|
|
|
|
**Examples:**
|
|
|
|
```bash
|
|
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`
|
|
|
|
```bash
|
|
hermes completion <shell>
|
|
```
|
|
|
|
Generates shell completion scripts. Includes completions for profile names and profile subcommands.
|
|
|
|
| Argument | Description |
|
|
|----------|-------------|
|
|
| `<shell>` | Shell to generate completions for: `bash`, `zsh`, or `fish`. |
|
|
|
|
**Examples:**
|
|
|
|
```bash
|
|
# 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
|
|
|
|
- [Profiles User Guide](../user-guide/profiles.md)
|
|
- [CLI Commands Reference](./cli-commands.md)
|
|
- [FAQ — Profiles section](./faq.md#profiles)
|