hermes: install the laptop-side Hermes Agent #2

Open
hermes-bot wants to merge 1 commit from hermes-bot/hermes-laptop-install into main AGit
First-time contributor

Installs the laptop-side Hermes Agent and wires it to the existing container install on hetzner3.

Which machine does what

Path Machine Role
install-hermes.sh (this PR) laptop packages, config, verification
/opt/data/skills hetzner3 container canonical skills checkout (hermes-bot/hermes-skills)
~/git/hermes-skills laptop same repo, cloned by the script

Shared layers: skills (git), memory (Honcho, same peer id + pinUserPeer), models (LiteLLM).
Sessions, MEMORY.md, cron and plugins stay per-machine.

What the script does

  • omarchy pkg aur add hermes-agent-bin (CI-built artifact; the source package compiles ~20 min), optionally hermes-agent-desktop
  • omarchy pkg add libreoffice-fresh when soffice is missing
  • model route: providers.litellm.* + model.* + a fallback, key written to .env via config set
  • skills.create_dir -> the shared checkout, cloned when absent (staged, so a re-run with a non-empty dir works)
  • Honcho: memory.provider, honcho.timeout 120, honcho.json with pinUserPeer: true

Non-interactive like the other steps: the key comes from ~/.config/hermes/laptop.env
(0600, created on first run). A missing key installs the packages and skips only the
configuration; --configure re-applies it. --check verifies without changing anything.

Two things that need a decision or a fix outside this PR

  1. honcho-api has no Traefik labels, so honcho.apps.okaup.de does not answer.
    HONCHO_URL must be the NetBird address of hetzner3 or a router must be added to
    homelab-apps/quadlets/honcho/templates/honcho-api.container.tmpl. Without it the
    script leaves memory built-in.
  2. hermes plugins install honcho is broken on 0.22.x — uv refuses the plugin repo's
    pyproject.toml (test group references hermes-agent without a tool.uv.sources
    entry). The script detects the failure and leaves memory.provider unset rather than
    naming a plugin that cannot load, so nothing silently half-works.

Verified (on hetzner3, against the live stack)

  • hermes config set accepts every key; hermes config get round-trips them
  • skills repo clones to 90 SKILL.md files; --check counts them
  • LiteLLM /v1/models 200 with the key, 401 without; POST /v1/chat/completions returns
    LAPTOP-OK on opencode-go/general
  • --configure with no key: creates the 0600 env file, exits 0
  • --configure with key but failing plugin install: unsets memory.provider, exits 0
  • shellcheck -S style and bash -n clean

Not run on Omarchy itself — omarchy pkg and pacman were stubbed for the test.

Installs the **laptop-side** Hermes Agent and wires it to the existing container install on hetzner3. ### Which machine does what | Path | Machine | Role | |---|---|---| | `install-hermes.sh` (this PR) | laptop | packages, config, verification | | `/opt/data/skills` | hetzner3 container | canonical skills checkout (`hermes-bot/hermes-skills`) | | `~/git/hermes-skills` | laptop | same repo, cloned by the script | Shared layers: skills (git), memory (Honcho, same peer id + `pinUserPeer`), models (LiteLLM). Sessions, `MEMORY.md`, cron and plugins stay per-machine. ### What the script does - `omarchy pkg aur add hermes-agent-bin` (CI-built artifact; the source package compiles ~20 min), optionally `hermes-agent-desktop` - `omarchy pkg add libreoffice-fresh` when `soffice` is missing - model route: `providers.litellm.*` + `model.*` + a fallback, key written to `.env` via `config set` - `skills.create_dir` -> the shared checkout, cloned when absent (staged, so a re-run with a non-empty dir works) - Honcho: `memory.provider`, `honcho.timeout 120`, `honcho.json` with `pinUserPeer: true` Non-interactive like the other steps: the key comes from `~/.config/hermes/laptop.env` (0600, created on first run). A missing key installs the packages and skips only the configuration; `--configure` re-applies it. `--check` verifies without changing anything. ### Two things that need a decision or a fix outside this PR 1. **`honcho-api` has no Traefik labels**, so `honcho.apps.okaup.de` does not answer. `HONCHO_URL` must be the NetBird address of hetzner3 or a router must be added to `homelab-apps/quadlets/honcho/templates/honcho-api.container.tmpl`. Without it the script leaves memory built-in. 2. **`hermes plugins install honcho` is broken on 0.22.x** — uv refuses the plugin repo's `pyproject.toml` (`test` group references `hermes-agent` without a `tool.uv.sources` entry). The script detects the failure and leaves `memory.provider` unset rather than naming a plugin that cannot load, so nothing silently half-works. ### Verified (on hetzner3, against the live stack) - `hermes config set` accepts every key; `hermes config get` round-trips them - skills repo clones to 90 `SKILL.md` files; `--check` counts them - LiteLLM `/v1/models` 200 with the key, 401 without; `POST /v1/chat/completions` returns `LAPTOP-OK` on `opencode-go/general` - `--configure` with no key: creates the 0600 env file, exits 0 - `--configure` with key but failing plugin install: unsets `memory.provider`, exits 0 - `shellcheck -S style` and `bash -n` clean Not run on Omarchy itself — `omarchy pkg` and `pacman` were stubbed for the test.
Second install that pairs with the container on hetzner3: shared skills repo,
shared Honcho memory (same peer, pinned), same LiteLLM route. Non-interactive
like the other steps - the key comes from ~/.config/hermes/laptop.env, and a
missing key only skips the configuration.

Honcho has no Traefik labels, so HONCHO_URL has to be supplied (NetBird address
or a router you add); without it memory stays built-in. The script also detects
the broken 0.22 honcho plugin install and leaves memory.provider unset rather
than naming a plugin that cannot load.
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin +refs/pull/2/head:hermes-bot/hermes-laptop-install
git switch hermes-bot/hermes-laptop-install

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch main
git merge --no-ff hermes-bot/hermes-laptop-install
git switch hermes-bot/hermes-laptop-install
git rebase main
git switch main
git merge --ff-only hermes-bot/hermes-laptop-install
git switch hermes-bot/hermes-laptop-install
git rebase main
git switch main
git merge --no-ff hermes-bot/hermes-laptop-install
git switch main
git merge --squash hermes-bot/hermes-laptop-install
git switch main
git merge --ff-only hermes-bot/hermes-laptop-install
git switch main
git merge hermes-bot/hermes-laptop-install
git push origin main
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
olli/omarchy-supplement!2
No description provided.