snapshot: preserve central wiki state 2026-08-15 (7 modified + 1 new file)

This commit is contained in:
Tony0410
2026-08-15 22:11:30 +08:00
commit 92e8028bb8
71 changed files with 9897 additions and 0 deletions
+43
View File
@@ -0,0 +1,43 @@
---
title: Camoufox vs Chrome
type: comparison
status: active
created: 2026-07-22
updated: 2026-07-22
verified_on: 2026-07-22
confidence: medium
tags: [comparison, browser]
sources: [raw/configs/hermes-config-sanitized.txt]
---
# Camoufox vs Chrome
## Purpose
Compare the two browser-automation options for Hermes's browser tool.
## At a glance
| | Camoufox | Chrome |
|---|---|---|
| In use on this install | **Yes** — configured `cloud_provider` | No evidence found |
| Config | `browser.camofox.managed_persistence: true` (note: key is spelled `camofox` in config, not `camoufox`) | n/a |
| Driver | `cua-driver` v0.9.0 at `/home/hermes/.cua-driver/packages/releases/0.9.0-x86_64-unknown-linux-gnu/cua-driver` | n/a |
| Display | Headed, via Xvfb `:99` + fluxbox — see [[systems/headless-server]] | n/a |
| `use_gateway` | `false` | n/a |
## Detail
### Camoufox (in use)
- **Verified:** `browser.cloud_provider: camofox`, `inactivity_timeout: 120s`, `allow_private_urls: true`.
- Runs headed under Xvfb rather than a true headless mode, per [[systems/headless-server]] — fluxbox provides the window manager, x11vnc/noVNC expose it for human viewing.
- `cua-driver` bridges Hermes's computer-use tool calls to the browser.
### Chrome (not found in use)
- No `google-chrome`, `chromium`, or CDP-only launch flags found in the sanitized config or running process list during this audit.
- Included in the comparison because the page existed as a placeholder — if Chrome/CDP was evaluated and rejected, that reasoning isn't captured anywhere; worth a [[decisions/index]] entry if anyone remembers why Camoufox was chosen over stock Chrome.
## Verdict
This install uses **Camoufox exclusively**. There's no evidence Chrome/Chromium was ever wired in as an alternative on this host — the comparison exists more as a placeholder for a decision that may have been made outside this wiki than as an active either/or choice today.
## Related
- [[systems/browser-backend]]
- [[concepts/browser-automation]]
+39
View File
@@ -0,0 +1,39 @@
---
title: Hermes vs Nanobot
type: comparison
status: active
created: 2026-07-22
updated: 2026-07-22
verified_on: 2026-07-22
confidence: high
tags: [comparison, hermes, nanobot]
sources: [raw/configs/hermes-config-sanitized.txt]
---
# Hermes vs Nanobot
## Purpose
Compare Hermes (this agent) with Nanobot, another agent process in the homelab, and correct a stale claim in [[systems/nanobot]].
## Correction to existing wiki content
`systems/nanobot.md` (written earlier the same day) states "No nanobot process running on this host" and "Unknown: whether nanobot should be redeployed on this host." **Both are superseded by direct verification during this pass:**
- Nanobot **is running**, just not on this host (ct460). It's on **LXC 333 ("clawtest")**, Tailscale IP `100.122.189.81`, process `nanobot` listening on port `8766`.
- ct333 also runs a `whatsapp-bridge.service` ("WhatsApp Bridge for Nanobot") — a systemd service, active.
- It's publicly reachable via the same Cloudflare Tunnel that fronts Hermes: `nanobot.martinwa.org``100.122.189.81:8766`, and `nano-ssh.martinwa.org` → SSH on the same host.
- The earlier note "Nanobox on the PVE host at `192.168.178.39`" conflated Nanobot with `pve`'s own LAN IP (that address is Proxmox's web UI, per the tunnel's `pve.martinwa.org` entry) — an error, not a second Nanobot instance.
## At a glance
| | Hermes (ct460) | Nanobot (ct333 "clawtest") |
|---|---|---|
| Status | Active, primary agent | Active, running (was previously assumed dormant) |
| Host | Dedicated LXC, `agent;ai;automation` tags | LXC tagged/named "clawtest" |
| Public exposure | `hermes.martinwa.org`, `hermes-desktop.martinwa.org` | `nanobot.martinwa.org`, `nano-ssh.martinwa.org` |
| Extra services | Stratos command centre, browser/VNC stack | WhatsApp bridge |
| Role today | Primary personal agent (this wiki's subject) | **Unclear** — running, but purpose/overlap with Hermes not documented anywhere found |
## Verdict
Both agents are live simultaneously, which the wiki didn't previously reflect. Worth a real decision: is Nanobot still needed alongside Hermes, or is it a leftover that should be retired (freeing ct333) or given an explicit distinct role? This comparison surfaces the question rather than answering it — no evidence either way was found on either host.
## Related
- [[systems/nanobot]] — needs its "Current state" section updated to reflect this finding
- [[systems/hermes-agent]]
+36
View File
@@ -0,0 +1,36 @@
---
title: Memory Backends
type: comparison
status: active
created: 2026-07-22
updated: 2026-08-12
verified_on: 2026-08-12
confidence: high
tags: [comparison, memory]
sources: [raw/configs/hermes-config-sanitized.txt]
---
# Memory Backends
## Purpose
Document Hermes's memory backend on this box, and record why the taxonomy this page assumed (Hindsight, Mnemosyne, file-backed) doesn't actually apply here.
## Correction (2026-07-22, per Anthony)
This wiki previously stated Hindsight was this box's predecessor memory backend, based on archived `hindsight-*` script names found under `~/.hermes/scripts/` and a "Hindsight clean memory bank" mention in `current-state.md`. **That was wrong — Hindsight has nothing to do with this Hermes box.** It was confused with a different Hermes instance (most likely ct450 "hermesagent", the older/original Hermes install still running in this homelab — see [[infrastructure/domains-and-tunnels]]). All Hindsight-specific pages (`systems/hindsight.md`, `decisions/use-hindsight-for-memory.md`, `runbooks/check-hindsight.md`) have been deleted rather than left as deprecated stubs, since they describe something that was never true of this box.
The three archived scripts (`hindsight-watchdog.py.archived`, `hindsight_migration_watchdog.py.archived`, `honcho_to_hindsight_import.py.archived`) that had been sitting under `~/.hermes/scripts/` were removed on 2026-07-22 at Anthony's request, closing out the mix-up entirely.
## What's actually true here
- **Only backend ever verified on this box: Mnemosyne** — local native plugin (`~/.hermes/plugins/mnemosyne`), not a docker service. See [[systems/mnemosyne]] and [[systems/memory-backend]] for full config.
- No evidence of a file-backed-only memory mode being used either — it's Mnemosyne or nothing on this install.
## OpenViking evaluation (2026-08-12) — NOT adopted
- Anthony explored **OpenViking** (Volcengine/ByteDance context database, filesystem-style knowledge hierarchy, tiered retrieval, 6-category auto extraction) as a potential memory provider.
- **Not adopted:** `memory.provider` is single-slot — setting `hermes config set memory.provider openviking` would fully **replace** Mnemosyne, with no parallel/dual-active mode.
- Risk assessment flagged: schema mismatch, embedding drift, scope leakage, provenance loss, and one-way/no-rollback migration with no dry-run snapshot.
- **Verdict:** stay on Mnemosyne. Config verified `memory.provider: mnemosyne` (2026-08-12). No migration was performed.
## Related
- [[systems/mnemosyne]]
- [[systems/memory-backend]]
- [[concepts/agent-memory]]
+53
View File
@@ -0,0 +1,53 @@
---
title: Model Routers
type: comparison
status: active
created: 2026-07-22
updated: 2026-08-12
verified_on: 2026-08-12
confidence: high
tags: [comparison, routing]
sources: [raw/configs/hermes-config-sanitized.txt]
---
# Model Routers
## Purpose
Compare LiteLLM, OmniRoute, and OpenRouter as model-routing layers for Hermes.
## At a glance
| | LiteLLM | OmniRoute | OpenRouter |
|---|---|---|---|
| Role in Hermes | **Default/primary** provider | **Fallback/auxiliary** provider | Not configured as a standalone provider |
| Endpoint | `http://litellm:4000/v1` | `http://omniroute:20128/v1` (public: `omniroute.martinwa.org`) | n/a |
| Advertised model count | ~1512 | ~3430 | n/a |
| Routing style | Straight proxy | Combo strategy, LKGP scoring, session affinity | n/a |
| Aux roles used for | — | `skills_hub`, `approval`, `mcp` | — |
| Config presence | `custom_providers` in `~/.hermes/config.yaml` | same | absent from `custom_providers`; only referenced via a kept [[decisions/keep-openrouter-as-fallback]] decision |
## Detail
### LiteLLM — primary
Default provider for main chat traffic (`freellmapi-auto` default model resolves through it). See [[systems/model-providers]].
### FreeLLMAPI — the router behind `freellmapi-auto`
Unified LLM router at `100.82.40.23:3001` (also `freellmapi.martinwa.org`). Verified 2026-08-12:
- **3-axis weighted scoring:** Reliability + Speed + Intelligence, with user-configurable weights.
- **Dynamic guardrail multiplier:** `Final score = weighted avg × (free-quota headroom × live rate-limit penalty)`. Below 1.0 means the model is held back.
- **Penalty Inspector ("Router Pressure"):** granular penalty factors (e.g. `score × 0.5`) from recent 4xx/5xx, cooldowns, RPM/RPD limits, monthly token caps.
- **Capability-aware routing:** filters candidates on whether the request has images (vision) or tool calls.
- Exposes `/api/fallback/routing`, `/api/fallback/penalty-inspector`, `/api/fallback/token-usage`.
This is the router that resolves Hermes's **default model** `freellmapi-auto` — distinct from OmniRoute's LKGP (below).
### OmniRoute — fallback / auxiliary
Not used for Hermes's main chat path but handles specific auxiliary roles (`skills_hub`, `approval`, `mcp`) and serves as the fallback provider. Has a much larger advertised catalog (~3430 vs ~1512) but that catalog can diverge from what's actually resolvable — combo discovery vs. resolution can differ (documented known issue). See [[systems/omniroute]].
### OpenRouter — kept only as a fallback decision, not wired in
**Verified:** absent from `custom_providers` in the live config. A decision page ([[decisions/keep-openrouter-as-fallback]]) records intent to retain it as a fallback option, but there's no live routing through it today — see [[systems/openrouter]] for the "previously used, largely replaced" history.
## Verdict
Two routers are actually live (LiteLLM primary, OmniRoute fallback/auxiliary); OpenRouter is a retained *intent*, not a working path, as of 2026-07-22. If [[decisions/keep-openrouter-as-fallback]] is still desired, it needs an actual `custom_providers` entry — currently it's fallback-in-name-only.
## Related
- [[systems/model-providers]]
- [[concepts/model-routing]]
+72
View File
@@ -0,0 +1,72 @@
---
title: Steel Browser vs Camoufox
type: comparison
status: active
created: 2026-07-29
updated: 2026-08-02
verified_on: 2026-08-02
confidence: high
tags: [comparison, browser, steel, camofox, decision]
sources: [live-probe, session-history]
---
# Steel Browser vs Camoufox
## Purpose
Compare the two browser-automation backends available to Hermes, including the Jul 2930 experiment and the decision to revert.
## At a glance
| | Steel Browser (CT201) | Camoufox (CT450) |
|---|---|---|
| **In use** | Disabled since 2026-07-30 | **Yes** — primary backend |
| **Engine** | Chromium 140 (Playwright) | Camoufox (Firefox-based) |
| **Connection** | CDP (`ws://` via port 9223) | REST API (localhost:9093) |
| **API** | REST at `:3000` — create/destroy/query sessions | Camoufox REST + CDP WebSocket |
| **Headless** | Native headless | Xvfb + VNC (headed, anti-fingerprint) |
| **Container** | Docker on CT201 | Systemd service on CT450 |
| **Stealth** | Standard Chromium | Anti-detection fingerprinting |
| **Session viewer** | Built-in UI at `/steel` | VNC at `/vnc-camofox` |
| **Plugin** | `browser-steel` plugin (disabled) | Native Hermes `browser.cloud_provider: camofox` |
## The Steel Experiment (Jul 2930)
### Why it was tried
- Steel promised full CDP access for richer browser control
- Built-in session viewer and management UI
- Docker-based, clean separation from Hermes host
### Timeline
1. **Jul 29:** Steel deployed on CT201 via Docker Compose, Chromium 140. Hermes configured with `browser.cloud_provider: steel`, `browser-steel` plugin enabled.
2. **Jul 29 (later):** CDP connectivity issues surfaced — Hermes was reaching `0.0.0.0` from the plugin's internal CDP URL. Required `_normalize_cdp_url()` patch in the Steel plugin to remap to `100.96.244.39`.
3. **Jul 30:** DeepSeek V4 Flash 0731 went live and rejected tool names that didn't match `^[a-zA-Z0-9_-]+$`. The Steel plugin's tools (`steel_scrape`, `steel_session_options`) were fine, but the route through OmniRoute → Steel → CDP was unreliable with empty-stream errors.
4. **Jul 30 (evening):** Decision to revert — Camoufox re-enabled, browser-steel plugin disabled, `CAMOFOX_URL` and `CAMOFOX_API_KEY` uncommented in `.env`. Steel left running on CT201 but Hermes no longer routes through it.
### What broke
- CDP URL normalization required a plugin patch to handle Docker's internal networking
- Empty-stream errors from `opencode-go/deepseek-v4-flash` provider path — the combo strategy does NOT iterate on empty responses, they pass to Hermes's own fallback chain (the #1 cause of "combo works but Hermes falls back")
- Tool name validation on DeepSeek 0731 was stricter — this affected all providers, not just Steel
### Lesson learned
Steel is a capable backend but adds a network hop and another plugin layer. Camoufox runs locally on CT450 with fewer failure modes. The `browser-steel` plugin still exists (disabled) if needed in future.
## Detail
### Camoufox (current primary)
- **Deployed:** Persistent systemd service on CT450
- **Connection:** REST API at `localhost:9093`, profile `anthony`, sessionKey `anthony`
- **Key advantage:** Runs on the same host as Hermes — no network hop, no container networking to debug
- **Auth:** Already authenticated into services (Uber Eats, LinkedIn, etc.) — no cookie files needed
- **Limitation:** Headed via Xvfb, consumes display resources
### Steel Browser (disabled but available)
- **Deployed:** 2026-07-29 on CT201, Docker, custom `steel-browser-api:fixed` image
- **Status:** Still running on CT201, Hermes not connected
- **CDP endpoint:** `http://100.96.244.39:9223`
- **REST API:** `http://100.96.244.39:3000`
- **UI:** `https://runtipi.kangaroo-eel.ts.net/steel`
- **Plugin:** `browser-steel` at `/home/hermes/.hermes/plugins/browser-steel/` — disabled, `plugin_steel` toolset flagged `requires_health=steel`
## Related
- [[systems/browser-backend]]
- [[concepts/browser-automation]]
- [[decisions/rollback-steel-to-camofox]]