docs: fold ecosystem expansion + delegation fabric into Hermes plan
Add hermes-motif (skill discovery; complementary to curator, not a rival), hermes-web-search-plus (mature multi-provider search, pairs with camofox), optional llmtrim/rtk context efficiency, and the claude/codex/cursor/antigravity delegation fabric. Record that Claude Code + Codex are now installed on valhalla. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
3cd843072d
commit
dc2225d384
@@ -55,13 +55,20 @@ ssh -o BatchMode=yes ginnoir@valhalla "cp ~/.hermes/config.yaml ~/.hermes/config
|
||||
```
|
||||
Expected: a backup is created; directory listings print (note whether `~/.hermes/plugins` exists yet); `hermes` prints a version (≈ v0.17.0). Record the skills-dir path — confirms `~/.hermes/skills` is correct for later tasks.
|
||||
|
||||
- [ ] **Step 3: Confirm Codex and Claude Code are invocable from the host as ginnoir**
|
||||
- [x] **Step 3: Confirm Codex and Claude Code are invocable — DONE 2026-06-27 (installed this session)**
|
||||
|
||||
Run:
|
||||
Both delegation CLIs were installed on valhalla this session:
|
||||
- `claude` → `~/.local/bin/claude` **v2.1.195** (login pending)
|
||||
- `codex` → `/usr/bin/codex` **v0.142.3** (login pending; harmless PATH-alias warning at install)
|
||||
|
||||
**Gotcha recorded:** `/home/ginnoir/.claude` existed as an empty **root-owned** dir (created Jun 17,
|
||||
likely a prior sudo op) and blocked the installer until `sudo chown ginnoir:ginnoir ~/.claude`. Codex
|
||||
global install needs `sudo` (npm global prefix is `/usr`). Re-verify any time with:
|
||||
```bash
|
||||
ssh -o BatchMode=yes ginnoir@valhalla "bash -lc 'which codex; which claude; codex --version 2>&1 | head -1; claude --version 2>&1 | head -1'"
|
||||
ssh -o BatchMode=yes ginnoir@valhalla "bash -lc 'claude --version; codex --version'"
|
||||
```
|
||||
Expected: paths for both `codex` and `claude`, and a version line each. (Uses `-lc` to get the login PATH.) **If either is missing**, the ACP delegation skill (Task 2) can still install but its `codex`/`claude-code` targets will be non-functional until they're on the service PATH — note this for ginnoir.
|
||||
**ginnoir must log in** to each (`claude`, then `codex login`) before Task 2's external delegation
|
||||
smoke-tests will succeed. Cursor + Antigravity targets are added later in **Task 10**.
|
||||
|
||||
- [ ] **Step 4: Checkpoint**
|
||||
|
||||
@@ -184,6 +191,52 @@ No git commit. Record: plugin at `~/.hermes/plugins/curator-evolver`, DB at `...
|
||||
|
||||
---
|
||||
|
||||
## Task 3b: Install `hermes-motif` (skill DISCOVERY, proposal-only)
|
||||
|
||||
> Complements curator-evolver — does **not** compete with it (spec §7.1). motif *discovers new*
|
||||
> skills by mining repeated tool sequences; curator *refines existing* ones. **Zero P100 cost**
|
||||
> (makes no LLM calls). Together with eagle-eye (routing) they form a skill factory:
|
||||
> motif creates → curator refines → eagle-eye routes.
|
||||
|
||||
**Files:**
|
||||
- Host: `~/.hermes/plugins/` (motif plugin), `~/.hermes/plugins/<motif>/plugin/plugin.yaml`.
|
||||
|
||||
- [ ] **Step 1: Clone and read; confirm proposal-only config**
|
||||
|
||||
Run:
|
||||
```bash
|
||||
ssh -o BatchMode=yes ginnoir@valhalla "git -C /storage1/hermes/workspace/clones clone https://github.com/Saurav0989/hermes-motif && sed -n '1,160p' /storage1/hermes/workspace/clones/hermes-motif/README.md && cat /storage1/hermes/workspace/clones/hermes-motif/plugin/plugin.yaml 2>&1"
|
||||
```
|
||||
Expected: README + `plugin.yaml` print. **Confirm `auto_install: false`** (proposal-only) and note
|
||||
`min_occurrences` / sequence-length thresholds. Note the referenced Hermes trace bug (#12922) that
|
||||
can affect trace completeness — acceptable for a proposal-only trial.
|
||||
|
||||
- [ ] **Step 2: Install the plugin**
|
||||
|
||||
Run (per its README — clone + pip + `scripts/install_plugin.sh`):
|
||||
```bash
|
||||
ssh -o BatchMode=yes ginnoir@valhalla "cd /storage1/hermes/workspace/clones/hermes-motif && bash scripts/install_plugin.sh 2>&1 | tail -20"
|
||||
```
|
||||
Expected: the plugin lands under `~/.hermes/plugins/` and registers. (If the script expects a
|
||||
different layout, follow the README's exact steps.)
|
||||
|
||||
- [ ] **Step 3: Verify it mines and PROPOSES without modifying skills**
|
||||
|
||||
Restart the gateway, run the agent through a couple of repeated multi-tool workflows, then check for
|
||||
proposals (drafts), confirming nothing under `~/.hermes/skills` was auto-written:
|
||||
```bash
|
||||
ssh -o BatchMode=yes ginnoir@valhalla "sudo systemctl restart hermes-gateway.service && sleep 5 && find ~/.hermes/plugins -iname '*propos*' -o -iname '*draft*' 2>/dev/null | head && find ~/.hermes/skills -newermt '-10 minutes' -type f 2>/dev/null"
|
||||
```
|
||||
Expected: proposal/draft artifacts may appear under the plugin dir; the second `find` is **empty**
|
||||
(no skill files auto-modified) — proves `auto_install: false` safety.
|
||||
|
||||
- [ ] **Step 4: Checkpoint**
|
||||
|
||||
No repo commit (host-side). **Rollback** = remove the motif plugin dir + restart gateway. Record in
|
||||
`memory/hermes-extensions.md` alongside curator (skill factory: motif=create, curator=refine).
|
||||
|
||||
---
|
||||
|
||||
## Task 4: Document Phase 1 in memory + vault (durable knowledge)
|
||||
|
||||
**Files:**
|
||||
@@ -192,7 +245,7 @@ No git commit. Record: plugin at `~/.hermes/plugins/curator-evolver`, DB at `...
|
||||
|
||||
- [ ] **Step 1: Write the memory file**
|
||||
|
||||
Create `memory/hermes-extensions.md` (frontmatter `type: project`) recording: acp-skill installed (delegation to hermes/codex/claude-code, 900s/24k caps), curator-evolver installed **report-only** (CPU ranking, no `--semantic`, no auto-apply flags), exact paths and rollback commands, and the host-vs-repo boundary. Link `[[llm-stack-hermes]]`, `[[multi-agent-tool-configs]]`, `[[obsidian-app-on-valhalla]]`.
|
||||
Create `memory/hermes-extensions.md` (frontmatter `type: project`) recording: acp-skill installed (delegation to hermes/codex/claude-code/cursor/antigravity, 900s/24k caps); curator-evolver installed **report-only** (CPU ranking, no `--semantic`, no auto-apply flags); **motif** installed proposal-only (skill factory: motif creates → curator refines → eagle-eye routes); **claude v2.1.195 + codex v0.142.3 installed on valhalla 2026-06-27** (login pending; `~/.claude` was root-owned → chowned); exact paths and rollback commands; the host-vs-repo boundary. Link `[[llm-stack-hermes]]`, `[[multi-agent-tool-configs]]`, `[[obsidian-app-on-valhalla]]`.
|
||||
|
||||
- [ ] **Step 2: Add the MEMORY.md index pointer**
|
||||
|
||||
@@ -333,6 +386,47 @@ Repo changes are committed (Step 5). Update `memory/hermes-extensions.md` + the
|
||||
|
||||
---
|
||||
|
||||
## Task 5b: Install `hermes-web-search-plus` (multi-provider search; pairs with camofox)
|
||||
|
||||
> Mature (v2.6.1, MIT, stdlib-only). Complements camofox (spec §7.2): search-plus *finds* via cheap
|
||||
> provider APIs, camofox *browses/renders*. Lighter and higher-frequency — good default reach-for.
|
||||
|
||||
**Files:**
|
||||
- Host: `~/.hermes/plugins/` (plugin), provider key(s) in `~/.hermes/config.yaml` (or the plugin's config).
|
||||
|
||||
- [ ] **Step 1: Install the plugin**
|
||||
|
||||
Run:
|
||||
```bash
|
||||
ssh -o BatchMode=yes ginnoir@valhalla "bash -lc '~/.local/bin/hermes plugins install robbyczgw-cla/hermes-web-search-plus --enable'"
|
||||
```
|
||||
Expected: plugin installs and enables.
|
||||
|
||||
- [ ] **Step 2: Configure at least one provider key (free tier)**
|
||||
|
||||
All provider keys are optional but ≥1 is needed to function. Pick a free-tier provider (e.g. Tavily,
|
||||
Exa, or self-hosted SearXNG; Keenable has a keyless public tier). Add the key per the plugin's README
|
||||
(read `/storage1/hermes/workspace/clones/...` or the plugin docs for the exact env/config key), then:
|
||||
```bash
|
||||
ssh -o BatchMode=yes ginnoir@valhalla "sudo systemctl restart hermes-gateway.service && sleep 5 && systemctl is-active hermes-gateway.service"
|
||||
```
|
||||
Expected: gateway `active`. **Mind the tool-budget rule** — if it exposes both `web_search_plus` +
|
||||
extract, that's fine (2 tools); don't also enable redundant search MCPs.
|
||||
|
||||
- [ ] **Step 3: Smoke-test a search**
|
||||
|
||||
Run:
|
||||
```bash
|
||||
ssh -o BatchMode=yes ginnoir@valhalla "~/.local/bin/hermes run 'search the web for the latest Hermes Agent release version and cite the source' 2>&1 | tail -20"
|
||||
```
|
||||
Expected: the agent calls the search tool, returns a current result with a source URL.
|
||||
|
||||
- [ ] **Step 4: Checkpoint**
|
||||
|
||||
No repo commit (host-side). Document the chosen provider + key location in `memory/hermes-extensions.md`.
|
||||
|
||||
---
|
||||
|
||||
## Task 6: Trial `eagle-eye` skill pre-filter (Class A, behind a switch)
|
||||
|
||||
> Confirmed the chosen tool: eagle-eye is the **only** direct skill-router in the Hermes ecosystem
|
||||
@@ -382,6 +476,106 @@ No repo commit (host-side). Document the A/B result and final state (kept/cut) i
|
||||
|
||||
---
|
||||
|
||||
# PHASE 2b — Delegation fabric & context efficiency
|
||||
|
||||
> Extends acp-skill (Task 2) from 3 targets to 4 external agents, and adds optional token-trimming.
|
||||
|
||||
## Task 10: Wire Cursor + Antigravity into the delegation fabric
|
||||
|
||||
**Files:**
|
||||
- Host: Cursor + `agy` binaries; acp-skill config or a generic shell-agent skill in `~/.hermes/skills/`.
|
||||
|
||||
- [ ] **Step 1: Install the Cursor CLI (official cursor.com)**
|
||||
|
||||
Run:
|
||||
```bash
|
||||
ssh -o BatchMode=yes ginnoir@valhalla "bash -lc 'curl https://cursor.com/install -fsS | bash' && ssh -o BatchMode=yes ginnoir@valhalla 'bash -lc \"command -v cursor-agent && cursor-agent --version\"'"
|
||||
```
|
||||
Expected: `cursor-agent` installs and prints a version. ginnoir logs in later.
|
||||
|
||||
- [ ] **Step 2: Install the Antigravity CLI (`agy`) from the OFFICIAL Google source**
|
||||
|
||||
Do **not** use blog-derived URLs. Get the exact installer from the official pages first:
|
||||
`https://antigravity.google/download` and `https://antigravity.google/docs/gcli-migration`. Then run
|
||||
the official one-line installer they document, e.g.:
|
||||
```bash
|
||||
ssh -o BatchMode=yes ginnoir@valhalla "bash -lc '<official agy installer from antigravity.google/docs>' && ssh -o BatchMode=yes ginnoir@valhalla 'bash -lc \"command -v agy && agy --version\"'"
|
||||
```
|
||||
Expected: `agy` (Go binary, ideal for headless SSH) installs and prints a version. Auth later via
|
||||
keyring/Google sign-in or `ANTIGRAVITY_TOKEN`.
|
||||
|
||||
- [ ] **Step 3: Confirm each agent answers in headless mode (after ginnoir logs in)**
|
||||
|
||||
Run:
|
||||
```bash
|
||||
ssh -o BatchMode=yes ginnoir@valhalla "bash -lc 'claude -p \"say PONG\"; codex exec \"say PONG\"; cursor-agent -p --output-format json --trust \"say PONG\"; agy -p \"say PONG\"'"
|
||||
```
|
||||
Expected: each prints PONG-ish output. **Cursor caveat:** `-p` has a known hang bug — always pass
|
||||
`--output-format json` and wrap with a timeout (`timeout 120 cursor-agent ...`).
|
||||
|
||||
- [ ] **Step 4: Extend acp-skill routing (or add a generic shell-agent skill)**
|
||||
|
||||
Read `~/.hermes/skills/hermes-acp-orchestrator/SKILL.md` to see if `agent=` routing is extensible.
|
||||
- **If extensible:** add `cursor` and `antigravity` targets mapping to the Step 3 invocations
|
||||
(with the cursor timeout + json flags), honoring the `delegation:` `external_timeout_seconds: 900`
|
||||
/ `external_max_output_chars: 24000` caps.
|
||||
- **If not:** add `~/.hermes/skills/shell-agent/SKILL.md` exposing **one** tool
|
||||
`delegate(agent, goal)` that shells out to claude/codex/cursor/agy with the caps + cursor guard.
|
||||
One tool keeps the surface within the tool-budget.
|
||||
Then restart the gateway:
|
||||
```bash
|
||||
ssh -o BatchMode=yes ginnoir@valhalla "sudo systemctl restart hermes-gateway.service && sleep 5 && systemctl is-active hermes-gateway.service"
|
||||
```
|
||||
|
||||
- [ ] **Step 5: End-to-end smoke-test each delegation target**
|
||||
|
||||
Run one delegated task per agent (e.g. `agent=cursor`, `agent=antigravity`) and confirm output is
|
||||
captured under the cap. Record any that hang/auth-fail for follow-up.
|
||||
|
||||
- [ ] **Step 6: Checkpoint**
|
||||
|
||||
No repo commit (host-side). Document the four-target fabric + cursor caveat in `memory/hermes-extensions.md`.
|
||||
|
||||
---
|
||||
|
||||
## Task 11: (OPTIONAL) Context efficiency — llmtrim on the cloud-delegation path
|
||||
|
||||
> Opt-in. Start where the win is unambiguous and local-risk-free: trimming the **cloud** delegation
|
||||
> agents' traffic (Claude Code/Codex/Cursor → Anthropic/OpenAI). Defer the llama-swap-fronting idea
|
||||
> until validated. `rtk-hermes` (shell-output trimming) is a separate lighter opt-in.
|
||||
|
||||
**Files:**
|
||||
- Host: llmtrim service + `HTTPS_PROXY` env for the delegation agents.
|
||||
|
||||
- [ ] **Step 1: Install llmtrim and run setup**
|
||||
|
||||
Run:
|
||||
```bash
|
||||
ssh -o BatchMode=yes ginnoir@valhalla "bash -lc 'npm install -g @llmtrim/cli@latest && llmtrim setup' 2>&1 | tail -20"
|
||||
```
|
||||
Expected: installs; `setup` installs the name-constrained CA + background proxy. **Review the MITM-CA
|
||||
trust implication first** — it's name-constrained to LLM API domains, but it's still a CA on the host.
|
||||
|
||||
- [ ] **Step 2: Point the cloud delegation agents through it; measure**
|
||||
|
||||
Ensure the delegation agents inherit `HTTPS_PROXY` (llmtrim sets this). Run a representative delegated
|
||||
task via Claude Code/Codex and compare token counts / cost before vs after (llmtrim reports savings).
|
||||
Keep only if the reduction is real with no quality loss.
|
||||
|
||||
- [ ] **Step 3: (Later, separate) Evaluate llama-swap fronting + rtk-hermes**
|
||||
|
||||
Document — do not implement here — the two deferred ideas: (a) llmtrim in front of `172.20.0.1:8090`
|
||||
via `LLMTRIM_EXTRA_HOSTS` to shrink prompts and speed Pascal prefill (needs validation; unproven for
|
||||
local OpenAI-compatible backends); (b) `rtk-hermes` (`pre_tool_call` shell rewrite) if the `rtk`
|
||||
binary is available on Ubuntu.
|
||||
|
||||
- [ ] **Step 4: Checkpoint**
|
||||
|
||||
No repo commit. Record the decision + measured savings (or rejection) in `memory/hermes-extensions.md`.
|
||||
`llmtrim uninstall` fully reverses the proxy + CA if rejected.
|
||||
|
||||
---
|
||||
|
||||
# PHASE 3 — UI trial: stand up BOTH, keep the winner
|
||||
|
||||
> Decision resolved (spec §6.1): trial `hermes-ui` (Task 7) **and** `hermes-workspace` (Task 8) in
|
||||
@@ -570,11 +764,14 @@ One UI kept and documented in memory + vault; losers fully removed; repo reflect
|
||||
|
||||
## Self-Review (completed)
|
||||
|
||||
- **Spec coverage:** All 7 repos map to tasks — acp-skill (T2), curator-evolver (T3), camofox (T5),
|
||||
eagle-eye (T6), hermes-ui (T7), hermes-workspace (T8 deploy), with the head-to-head keep-one
|
||||
decision in T9; mission-control (explicitly skipped per spec §2.5/§5, no task — intentional).
|
||||
Phase ordering, single-P100 discipline, host-vs-repo boundary, provenance/reversibility, and the
|
||||
§6 decisions (all resolved 2026-06-27) are reflected.
|
||||
- **Spec coverage:** Original 7 repos — acp-skill (T2), curator-evolver (T3), camofox (T5),
|
||||
eagle-eye (T6), hermes-ui (T7), hermes-workspace (T8 deploy) + keep-one decision (T9);
|
||||
mission-control (skipped per spec §2.5/§5, intentional). **Ecosystem expansion (spec §7)** —
|
||||
hermes-motif (T3b), hermes-web-search-plus (T5b), delegation fabric for cursor+antigravity (T10),
|
||||
optional llmtrim/rtk context efficiency (T11). Claude Code + Codex install is **done** (T1 Step 3).
|
||||
Phase ordering, single-P100 discipline, host-vs-repo boundary, provenance (official installers
|
||||
only — Antigravity URL verified to `antigravity.google`), reversibility, and the §6 decisions are
|
||||
all reflected.
|
||||
- **Placeholders:** None of the prohibited kinds. Where a third-party command form can't be verified
|
||||
remotely (e.g. exact `hermes` subcommand spelling, acp-skill install mechanism, response field
|
||||
names), the plan's **first step is a concrete "clone + read the README/SKILL.md" command** that
|
||||
|
||||
Reference in New Issue
Block a user