Files
hermes-agent/scripts/update-test/HANDOFF.md
ethernet a5bd7e574e update-test: point the rehearsal straight at the fork
pre no longer builds a bare serve.git mirror, moves refs or sets
allowAnySHA1InWant. The repo-local insteadOf now rewrites the official
URLs directly to --source, so updates follow the fork's main (force-push
it to the branch under test). post still undoes the redirect via the
clone/snapshot restore.

--ref is removed: neither hermes update nor the tester's pre-branch
desktop can follow another branch through config the kit could set
without the mirror. pre now ls-remotes --source's main before writing
anything, so a bad source aborts with nothing done. The stale
global-redirect cleanup is dropped: it only matched serve.git paths.
2026-09-24 15:40:18 -04:00

3.5 KiB

testing the bundles branch against your normal hermes install

instructions:

  1. close hermes, the gateway, etc. make sure you have no running hermes processes.

  2. apply my updater override: macos/linux:

    REPO_ID="NousResearch/hermes-agent"
    SHA=$(curl -fsSL -H "User-Agent: hermes-installer" "https://api.github.com/repos/$REPO_ID/commits/main" | grep -m1 '"sha"' | cut -d'"' -f4)
    if [[ ! "$SHA" =~ ^[0-9a-f]{40}$ ]]; then echo "Failed to resolve commit SHA" >&2; exit 1; fi
    curl -fsSL "https://raw.githubusercontent.com/$REPO_ID/$SHA/scripts/update-test/hermes-update-rehearsal.sh" | bash -s -- pre
    

    windows (open PowerShell with Run as Administrator — the backup takes a disk snapshot, which needs admin):

    $repo_id = "NousResearch/hermes-agent"
    $sha = (irm "https://api.github.com/repos/$repo_id/commits/main" -Headers @{ "User-Agent" = "ps-installer" }).sha
    $scriptUrl = "https://raw.githubusercontent.com/$repo_id/$sha/scripts/update-test/hermes-update-rehearsal.ps1"
    & ([scriptblock]::Create((irm $scriptUrl))) pre
    

    this backs up your entire hermes home and any desktop app settings, then points your install's updates at the test fork's main (no local mirror: hermes update fetches straight from the fork, so it needs network). from this point on, nothing you do in hermes will be preserved, until you restore your backup at the end.

  3. boot hermes up to ensure everything is working, still. if you normally have a background service, gateway, etc, make sure it's running.

  4. update hermes like you normally do.

  5. test hermes. make sure nothing breaks, everything you use still works, etc.

  6. close hermes, the gateway, etc. make sure you have no running hermes processes.

  7. restore your backup:

    macos/linux:

    REPO_ID="NousResearch/hermes-agent"
    SHA=$(curl -fsSL -H "User-Agent: hermes-installer" "https://api.github.com/repos/$REPO_ID/commits/main" | grep -m1 '"sha"' | cut -d'"' -f4)
    if [[ ! "$SHA" =~ ^[0-9a-f]{40}$ ]]; then echo "Failed to resolve commit SHA" >&2; exit 1; fi
    curl -fsSL "https://raw.githubusercontent.com/$REPO_ID/$SHA/scripts/update-test/hermes-update-rehearsal.sh" | bash -s -- post --yes
    

    windows (again as Administrator):

    $repo_id = "NousResearch/hermes-agent"
    $sha = (irm "https://api.github.com/repos/$repo_id/commits/main" -Headers @{ "User-Agent" = "ps-installer" }).sha
    $scriptUrl = "https://raw.githubusercontent.com/$repo_id/$sha/scripts/update-test/hermes-update-rehearsal.ps1"
    & ([scriptblock]::Create((irm $scriptUrl))) post -Yes
    

    this puts hermes back to exactly how it was beforehand.

testing the bundles branch from a fresh install

macos/linux, in a terminal

REPO_ID="NousResearch/hermes-agent"

SHA=$(curl -fsSL -H "User-Agent: hermes-installer" "https://api.github.com/repos/$REPO_ID/commits/main" | grep -m1 '"sha"' | cut -d'"' -f4)

if [[ ! "$SHA" =~ ^[0-9a-f]{40}$ ]]; then
  echo "Failed to resolve commit SHA for $REPO_ID" >&2
  exit 1
fi

curl -fsSL "https://raw.githubusercontent.com/$REPO_ID/$SHA/scripts/install.sh" | HERMES_REPO_URL="https://github.com/$REPO_ID.git" bash

windows, in powershell

$repo_id = "NousResearch/hermes-agent"
$sha = (irm "https://api.github.com/repos/$repo_id/commits/main" -Headers @{ "User-Agent" = "ps-installer" }).sha
$scriptUrl = "https://raw.githubusercontent.com/$repo_id/$sha/scripts/install.ps1"
$env:HERMES_REPO_URL = "https://github.com/$repo_id.git"
& ([scriptblock]::Create((irm $scriptUrl)))