Hermes Agent configuration that materially changes how a run behaves.
Ignore ~/.hermes/config.yaml and fall back to built-in defaults. Credentials in .env are still loaded.
Force a provider: auto, openrouter, nous, openai-codex (aliases chatgpt, chatgpt-codex), copilot-acp, copilot, anthropic, gemini, huggingface, novita (aliases novita-ai…
Troubleshooting mode: disable ALL customizations — user config, rules/memory injection, plugins, shell hooks, and MCP servers (implies --ignore-user-config and --ignore-rules)…
Maximum tool-calling iterations per conversation turn (default: 500, or agent.max_turns in config).
Experimental: enroll this gateway with a relay connector and save relay credentials for connector-backed platforms. See Hermes Relay.
Agent behavior settings.
On returning-user runs: only prompt for items that are missing or unset. Skip items you already have configured.
Reset configuration to defaults before setup.
Backwards-compat alias — bare hermes setup on an existing install now does this by default.
One-shot Nous Portal setup: log in via OAuth, set Nous as the inference provider, and opt into the Tool Gateway. Skips the rest of the wizard.
Register or update a peer. The URL goes to config.yaml (bot_peers); the key is stored as HERMES_PEER_<NAME>_KEY in ~/.hermes/.env.
Scan config.yaml for references to xAI models scheduled for retirement on May 15, 2026 and (with --apply) rewrite them in-place to the official replacements per the xAI migration…
Rewrite config.yaml in-place (default: dry-run, no writes).
Skip the timestamped backup of config.yaml when applying.
Compute and report the migration without writing config.toml.
Provider to query (default: the configured model.provider). Supported: openai-codex, anthropic, openrouter.
Print a single config value by dotted key (e.g. hermes config get model.default). --json emits machine-readable output. Credential-shaped values (api_key, *_TOKEN, *_SECRET…
Set a config value. Dotted paths go to config.yaml; every UPPER_SNAKE name (OPENROUTER_API_KEY, DISCORD_HOME_CHANNEL, TELEGRAM_GROUP_ALLOWED_USERS, HERMES_TIMEZONE, …) is an…
Remove a config key, reverting it to the built-in default. For UPPER_SNAKE names this removes the .env entry and also drops a stale top-level config.yaml copy left by older config…
Print the config file path.
Check for missing or stale config.
Export/import skill configurations.
Interactive enable/disable configuration for skills by platform.
Add a custom MCP server with automatic tool discovery. --args passes the remaining argv to the stdio command, so put it last.
Force re-authentication for an OAuth-based MCP server.
Emit a pack YAML on stdout from the current install: repo + exact SHA of each git-installed plugin plus sanitized non-secret plugins.entries config. Local-only plugins (no git…
Migration preset: full (all compatible settings) or user-data (excludes infrastructure config). Neither preset imports secrets — pass --migrate-secrets explicitly.
Public HTTPS OAuth redirect URI (e.g. https://hermes.example.com/auth/callback). Omit for localhost-only use.
Create a new profile. --clone copies config, .env, SOUL.md, skills, and the curated MEMORY.md/USER.md memory files from the active profile. --clone-all copies all state…
Re-pull a distribution; preserves user data (memories, sessions, auth).
Use --format stream-json when a program needs to consume progress without scraping terminal output. It requires -q / --query (or --query-file), implies quiet non-interactive CLI…
hermes config set/get/unset use . as the nesting separator, but many real key names contain literal dots — model IDs (grok-4.6, glm-5.3-flash), Matrix room IDs…
The migration covers 30+ categories across persona, memory, skills, model providers, messaging platforms, agent behavior, session policies, MCP servers, TTS, and more. Items are…
| hermes uninstall [--full] [--gui] [--dry-run] [--yes] | Remove Hermes, optionally deleting all config/data. --gui removes only the desktop Chat GUI, leaving the agent intact…
Change into <dir> before starting or resuming. Scopes --resume latest / -c lookups to that directory's workspace and keeps the session there (skips the recorded-cwd restore).
Bypass dangerous-command approval prompts.
Include the session ID in the agent's system prompt.
Skip auto-injection of AGENTS.md, SOUL.md, .cursorrules, memory, and preloaded skills.
Launch the TUI instead of the classic CLI. Equivalent to HERMES_TUI=1. Always wins over display.interface.
Force the classic prompt_toolkit REPL. Use this to override display.interface: tui for a single invocation.
With --tui: run the TypeScript sources directly via tsx instead of the prebuilt bundle (for TUI contributors).
Read the query from a file (- = stdin). Nothing is shell-interpreted, so quotes, $(...), and backticks arrive verbatim — use this for programmatic or untrusted message bodies (Bot…
With -q/--query-file: answer the query and exit (the pre-0.21 single-query behavior) instead of seeding an interactive session. Implied on non-TTY stdio and by -Q.
Emit structured JSONL for a -q / --query invocation. Implies --quiet; cannot be combined with --tui.
Attach a local image to a single query.
Create an isolated git worktree for this run.
Enable filesystem checkpoints before destructive file changes.
Session source tag for filtering (default: cli; one-shot runs default to oneshot, which pickers hide). Use tool for third-party integrations that should not appear in user session…
On start / restart / stop: act on every profile's gateway, not just the active HERMES_HOME. Useful if you run multiple profiles side-by-side and want to restart them all after…
On run: inside the s6-overlay Docker image, opt out of auto-supervision and use pre-s6 foreground semantics — gateway runs as the container's main process with no auto-restart…
On run: declare that a wrapper-provided process manager owns the foreground gateway. Use this when sudo, env -i, or another wrapper strips launchd/systemd's native environment…
Use defaults / environment values without prompts.
Emit raw JSON result instead of human-readable output.
Run deeper checks that may take longer.
Operate on a specific board. Defaults to the current board (set via hermes kanban boards switch, the HERMES_KANBAN_BOARD env var, or default).
Prompt template with {dot.notation} payload references.
Comma-separated event types to accept (e.g. issues,pull_request). Empty = all.
Human-readable description.
Comma-separated skill names to load for the agent run.
Delivery target: log (default), telegram, discord, slack, github_comment.
Target chat/channel ID for cross-platform delivery.
Custom HMAC secret. Auto-generated if omitted.
Skip the agent — deliver the rendered --prompt as the literal message. Zero LLM cost, sub-second delivery. Requires --deliver to be a real target (not log).
Also write each delivered message into the target chat's session, so replying to it in that chat has context. Off by default; only enable it for sources whose content you trust in…
Filter/transform script under ~/.hermes/scripts/. The webhook payload is passed as JSON on stdin; JSON stdout replaces the payload, and empty stdout, [SILENT], or a nonzero exit…
Bind the route to a multiplexed profile: it is then reachable only at /p/<profile>/webhooks/<name> and the agent runs as that profile. Validated against existing profiles; kept on…
Attempt automatic repairs where possible.
Show redacted API key prefixes (first and last 4 characters) instead of just set/not set.
Number of log lines to include per log file (default: 200).
Paste expiry in days (default: 7).
Upload to Nous-internal diagnostics storage instead of a public paste service. Use this when Nous support asks for a private diagnostic bundle.
Print the report locally instead of uploading.
Disable upload-time secret redaction. By default, uploads are redacted.
Minimum log level to show: DEBUG, INFO, WARNING, ERROR, CRITICAL.
Filter lines containing a session ID substring.
Show lines from a relative time ago: 30m, 1h, 2d, etc. Supports s (seconds), m (minutes), h (hours), d (days).
Filter by component: gateway, agent, tools, cli, cron.
Print the current enabled-tools summary and exit.
Analyze the last n days (default: 30).
Filter by source such as cli, telegram, or discord.
Overwrite existing Hermes files on conflicts (default: refuse to apply when the plan has conflicts).
Include API keys in migration. Required even under --preset full.
Custom OpenClaw directory (default: ~/.openclaw).
Target directory for workspace instructions (AGENTS.md).
Handle skill name collisions: skip (default), overwrite, or rename.
Skip the confirmation prompt.
Human-readable label for the dashboard (default: auto-generated).
Override the Nous Portal base URL for registration (default: the portal you logged into). Also settable via HERMES_DASHBOARD_PORTAL_URL.
Print the update plan and exit without changing anything: install kind (git/Docker/Nix/apt), every running Hermes service across all profiles with its supervisor and running code…
The native bundle pipeline includes Intel macOS ( x64 ) as well as Apple Silicon.
Use the standard Termux application.
Contents Location Package files $PREFIX/lib/hermes-agent/ Command symlinks $PREFIX/bin/hermes , $PREFIX/bin/hermes-agent , $PREFIX/bin/hermes-acp Configuration and user data…
This APT installation does not use systemd, launchd, or Windows Scheduled Tasks.
APT removes the package and its command symlinks.
Resolve configuration values from environment variables.
Configure separate working trees for coding sessions.
Set a wall-clock budget for agent runs.
Control the budget for results that spill outside the active context.
Configure the session stall watchdog.
Configure domains Hermes web and browser tools must not access.
Use deny patterns for commands that must not run.
Limit repeated attempts after command denials.
Provide vocabulary hints to compatible speech-to-text backends.
Configure a reduced-output view in the CLI and TUI.
Separate observing group chatter from deciding when to respond.
Configure how a Telegram bot handles messages while it starts.
Apply channel-specific prompts for distinct workflows.
Give forum topics the skills appropriate to their subject.
Control which bot activity produces push notifications.
Stage proposed memory writes for approval.
Stage skill updates and inspect their diffs before approval.
Configure recycling for heavy stdio MCP servers.
Control utility wrappers as well as ordinary server tools.
Configure per-user identity headers for supported MCP connections.