Skip to main content

Interactive multi-profile setup utility for Hermes Agent

Project description

hermes-profile-kit

Interactive multi-profile setup utility for Hermes Agent.

License: MIT PyPI CI

๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด README

โšก 2-minute install (Claude Code / Codex)

Paste into Claude Code or codex. One token round, done.

Install the Hermes <PROFILE> profile on this machine using hermes-profile-kit. This is a deterministic CLI install, not a software-design task. Do not invoke brainstorming, writing-plans, test-driven-development, or requesting-code-review skills โ€” the user has explicitly instructed you not to. Ask me for any required tokens in a single message, then run:

pipx install --upgrade hermes-profile-kit
hpk setup <PROFILE> --non-interactive \
  --token KEY1=VALUE1 --token KEY2=VALUE2 ... \
  --accept-plugin <plugin-id>
hpk verify <PROFILE>

Required tokens & plugin ids are in https://github.com/NewTurn2017/hermes-profile-kit/blob/main/manifest.yaml. Report the verify output when done.

Live example โ€” seb (Slack second-brain via Codex): see AGENTS.md โ†’ seb fast-path.

TL;DR โ€” ์–ด๋””์„œ๋ถ€ํ„ฐ ์ฝ์–ด์•ผ ํ•˜๋‚˜ / Where to start

๋‹น์‹ ์€โ€ฆ / You areโ€ฆ ์—ฌ๊ธฐ๋กœ / Read
๐Ÿ‘ค ํ‚คํŠธ๋ฅผ ์ฒ˜์Œ ์จ๋ณด๋Š” ์‚ฌ๋žŒ / First-time human user โ†“ ์‚ฌ๋žŒ์€ ์ด๋ ‡๊ฒŒ / For humans
๐Ÿค– LLM ์—์ด์ „ํŠธ (Claude / Cursor / Hermes ์ž์‹ ) โ†“ LLM์€ ์ด๋ ‡๊ฒŒ / For LLM agents + canonical AGENTS.md
๐Ÿ”ง ๋ฉ”์ธํ…Œ์ด๋„ˆ / Repo maintainer โ†“ Operating this repo

Repository facts (machine-readable)

package: hermes-profile-kit
version: 3.1.2
schema_version: 3
language: python>=3.10
cli_entrypoint: hpk
manifest_path: manifest.yaml
profiles_path: profiles/
verified_commands_index: build/cmd_index.json   # CI-managed
verified_commands_doc:   docs/commands.md       # CI-managed
upstream:
  repo: https://github.com/NousResearch/hermes-agent
  pinned_commit: 5621fc44     # current; see manifest.yaml for live value
hard_rules_doc: AGENTS.md     # canonical playbook for LLM agents

์‚ฌ๋žŒ์€ ์ด๋ ‡๊ฒŒ / For humans

Prerequisites

  • Python โ‰ฅ 3.10
  • Hermes Agent installed (binary on PATH; version โ‰ฅ 0.12.0)
  • ~/.local/bin on PATH (for profile aliases)

Install + run

pipx install hermes-profile-kit
hpk setup

The wizard walks you through each profile in manifest.yaml:

  1. Verifies Hermes is installed and recent enough.
  2. Creates the Hermes profile if absent.
  3. Copies SOUL.md + config.yaml from the kit template.
  4. Seeds .env from .env.example (mode 0600, never overwrites existing).
  5. Prompts for required + optional tokens with provider-specific guidance (BotFather URL, Slack app docs, โ€ฆ).
  6. Asks before enabling each recommended plugin (Honcho memory, Brave search, โ€ฆ).

Re-run safely

hpk setup is idempotent. Existing .env files are preserved; existing profiles aren't re-created.

Customizing a profile

Goal Edit
Change model ~/.hermes/profiles/<name>/config.yaml
Change persona ~/.hermes/profiles/<name>/SOUL.md
Add new profile profiles/<name>/{SOUL.md,config.yaml,.env.example} + add entry to manifest.yaml โ†’ hpk setup
Force template overwrite hpk setup --force

API keys live in ~/.hermes/profiles/<name>/.env (plain text, chmod 600). The kit deliberately does not pretend to encrypt them.

LLM์€ ์ด๋ ‡๊ฒŒ / For LLM agents

Canonical playbook: AGENTS.md. Read that first.

Where to look (in order)

  1. AGENTS.md โ€” hard rules, single-command happy path.
  2. manifest.yaml โ€” declarative source of truth for profiles, tokens, plugins.
  3. docs/commands.md (auto-generated) โ€” every Hermes command the kit will invoke.
  4. build/cmd_index.json โ€” same data, structured for programmatic matching.
  5. src/hpk/ โ€” implementation; layout is in docs/superpowers/specs/2026-05-15-hermes-profile-kit-v2-design.md.

Hard rules (do not violate)

  1. NEVER write secrets to git-tracked files. Tokens belong in ~/.hermes/profiles/<name>/.env (mode 0600, gitignored via .env).
  2. NEVER guess token values. Empty prompt โ†’ leave FILL_IN_* and surface in the summary.
  3. NEVER touch the default Hermes profile (~/.hermes/ root, not ~/.hermes/profiles/).
  4. NEVER invoke a Hermes command not present in build/cmd_index.json.
  5. NEVER run gateway install or other side-effectful commands without explicit human approval.

Useful invocations

hpk doctor                 # verify hpk's own state (hermes presence, manifest validity)
hpk verify [profile...]    # run `hermes doctor` per profile + FILL_IN scan
hpk plugin list            # show recommended_plugins per profile
hpk setup --skip-tokens    # base + plugins without interactive token prompts
hpk setup --skip-plugins   # base + tokens, skip plugin prompts

Exit-code map (from hpk setup / preflight)

Exit Meaning
0 success
10 hermes not installed
11 hermes version < min_hermes_version
20 non-interactive: required value missing or invalid
30 other preflight error / verify found FILL_IN or failing doctor
40 manifest invalid or unknown plugin id

Profiles

Profile Role Model tier Channels Recommended plugins
coder Full-stack dev assistant Sonnet CLI โ€”
assistant Personal daily assistant Sonnet CLI + Telegram Honcho
research Web-search-backed research Opus CLI Honcho, Brave search
community-bot Korean dev community helper Haiku Telegram + Discord โ€”
seb Second-brain controller (Obsidian + NotebookLM via Slack) openai-codex Slack codex-openai-proxy

Plugins

Plugin Type What it does
honcho-memory Hermes-upstream External long-term memory via Honcho (Plastic Labs).
brave-search-tool Hermes-upstream Web search tool backed by Brave Search API.
codex-openai-proxy Kit-local (install_path) Local OpenAI-compat HTTP bridge to the codex CLI โ€” lets seb (and any other openai-codexโ€“tier profile) treat Codex as an OpenAI-compatible backend.

Hermes-upstream plugins go through hermes subcommands verified against build/cmd_index.json. Kit-local plugins live under scripts/<plugin-id>/ and are wired into the wizard via plugin.install_path.

Commands cheat sheet

hpk setup [profile...]                # interactive wizard
hpk verify [profile...]               # hermes doctor + FILL_IN scan
hpk doctor                            # hpk's own health
hpk reset [profile...] --yes          # remove kit-created profiles
hpk plugin list                       # list recommended plugins
hpk plugin enable PROFILE PLUGIN_ID
hpk plugin disable PROFILE PLUGIN_ID  # currently a manual-guidance stub
hpk sync --upstream PATH [--dry-run]  # local drift check (CI does it daily)

Operating this repo

For maintainers โ€” what to do whenโ€ฆ

โ€ฆupstream Hermes ships a new commit

  • Daily: CI does it automatically (.github/workflows/upstream-sync.yml runs at 06:00 UTC, clones upstream, regenerates build/cmd_index.json + docs/commands.md, updates manifest.yaml's upstream.pinned_*, opens a PR on drift).
  • Manually:
    git clone https://github.com/NousResearch/hermes-agent /tmp/hermes
    hpk sync --upstream /tmp/hermes               # check
    python scripts/regen_docs.py --upstream /tmp/hermes \
      --out build/cmd_index.json --docs docs/commands.md --pinned-commit "$(git -C /tmp/hermes rev-parse --short HEAD)"
    python scripts/update_manifest_pin.py \
      --commit ... --version ... --verified-at ...
    

โ€ฆyou want to release a new version

  1. Bump version in pyproject.toml and src/hpk/__init__.py (must match).
  2. Update CHANGELOG.md (Keep-a-Changelog format).
  3. Commit + push to main.
  4. Tag: git tag -a v<ver> -m "..." && git push origin v<ver>.
  5. .github/workflows/release.yml builds and publishes to PyPI via Trusted Publisher (already configured).

โ€ฆCI fails

  • Matrix: Python 3.10 / 3.11 / 3.12 on Linux. Steps: pip install -e ".[dev]" โ†’ ruff check โ†’ mypy โ†’ pytest.
  • Reproduce locally:
    python -m venv .venv && source .venv/bin/activate
    pip install -e ".[dev]"
    ruff check src tests scripts
    mypy src/hpk
    pytest -v
    

โ€ฆyou add a new profile / plugin / token provider

Thing added Files to touch
Profile profiles/<name>/{SOUL.md,config.yaml,.env.example} + entry in manifest.yaml profiles:
Hermes-upstream plugin Add to manifest.yaml plugins: with upstream_command matching an entry in build/cmd_index.json
Kit-local plugin Add scripts/<plugin-id>/ + manifest entry with install_path instead of upstream_command
Token provider src/hpk/tokens/<provider>.py with Handler + register in src/hpk/tokens/__init__.py

Pre-commit local gate

No git hooks are installed by default. Run before pushing:

ruff check src tests scripts && ruff format --check src tests scripts && mypy src/hpk && pytest

Troubleshooting

Symptom Likely cause Fix
HermesNotInstalledError at preflight hermes not on PATH Install hermes-agent, ensure it's on PATH
HermesVersionTooOldError Installed Hermes < manifest.min_hermes_version Upgrade Hermes
~/.local/bin not on PATH warning shell PATH missing it Add export PATH="$HOME/.local/bin:$PATH" to your shell rc
hpk verify reports FILL_IN Token still placeholder Edit ~/.hermes/profiles/<n>/.env or re-run hpk setup
manifest invalid YAML / schema mismatch Check schema_version: 3, run python -c "from hpk.manifest import load_manifest; from pathlib import Path; load_manifest(Path('manifest.yaml'))"
release.yml failing with invalid-publisher PyPI Trusted Publisher not registered for this repo Configure at https://pypi.org/manage/account/publishing/

Architecture

                          โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                          โ”‚     manifest.yaml       โ”‚  (declarative source of truth)
                          โ”‚   schema_version: 3     โ”‚
                          โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                       โ”‚ parses
                                       โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  hpk (Click)    โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ–ถ โ”‚ hpk.wizard / verify    โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ–ถ โ”‚ hpk.hermes       โ”‚ โ”€โ–ถ hermes (subprocess)
โ”‚  setup/verify/  โ”‚         โ”‚ phase A (base)         โ”‚         โ”‚ run_profile_*    โ”‚
โ”‚  doctor/plugin/ โ”‚         โ”‚ phase B (tokens)       โ”‚         โ”‚ run_doctor       โ”‚
โ”‚  reset/sync     โ”‚         โ”‚ phase C (plugins)      โ”‚         โ”‚ run_raw          โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                       โ”‚
                                       โ”‚ asks
                                       โ–ผ
                          โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                          โ”‚  hpk.tokens.<provider>  โ”‚ (anthropic, slack, telegram, discord, brave, exa, openai-codex)
                          โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

CI loop (daily):
  upstream-sync.yml โ†’ clone hermes-agent โ†’ scripts/regen_docs.py (AST-walks hermes_cli/main.py via hpk.codegen.argparse_walker)
                  โ†’ build/cmd_index.json + docs/commands.md โ†’ drift PR

Links

License

MIT. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hermes_profile_kit-3.2.1.tar.gz (32.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hermes_profile_kit-3.2.1-py3-none-any.whl (29.7 kB view details)

Uploaded Python 3

File details

Details for the file hermes_profile_kit-3.2.1.tar.gz.

File metadata

  • Download URL: hermes_profile_kit-3.2.1.tar.gz
  • Upload date:
  • Size: 32.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for hermes_profile_kit-3.2.1.tar.gz
Algorithm Hash digest
SHA256 730ba0a72d0492d192d86f0da737f90f7d001080e3416ab92d16f8b9e07c540d
MD5 1f49d405fb2a47d380fae351e147c139
BLAKE2b-256 df53f1e5f989415210e21cdc09348a0f73c078130ae967081676a4e6639e5832

See more details on using hashes here.

Provenance

The following attestation bundles were made for hermes_profile_kit-3.2.1.tar.gz:

Publisher: release.yml on NewTurn2017/hermes-profile-kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hermes_profile_kit-3.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for hermes_profile_kit-3.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c0af3073936f5f95c4caa48b4e50d9743af44e6cbc0c42cd3f8b1cd74afebf10
MD5 10b6113c1a178c17d51712f60c6ee3a3
BLAKE2b-256 7e93928fc16078f13c4d12df81b57bcdd2112613735daccdb9897d8ab8ef5d7f

See more details on using hashes here.

Provenance

The following attestation bundles were made for hermes_profile_kit-3.2.1-py3-none-any.whl:

Publisher: release.yml on NewTurn2017/hermes-profile-kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page