{
 "batch": "deep-26",
 "setup": "Hermes cloned from github.com/NousResearch/hermes-agent (depth 1, HEAD fdde27e7, 2026-11-11) and built with `uv sync --locked --python 3.14` (uv 0.13.7 installed per RUN.md; Python stored under test/scratch because the sandbox hides ~/.local). tryit.py from the gist ran each plugin at its pinned commit: catalog validate, enable, doctor, then an in-process AIAgent chat against tests/fakes/fake_llm_provider.py. In this Hermes, plugin tools are deferred: none appear in the first tool list (added_by_plugin is empty for all six), so planned calls went through tool_search/tool_call. validate --json output had progress lines mixed in, so tryit left its json null for 5 plugins; I read the JSON from stdout: all 15-16 checks ok for all six. Plugin tests ran with the Hermes venv Python plus each plugin's declared test deps; some failures come from this sandbox (sockets blocked, ssh proxy env) and are noted as such.",
 "plugins": [
  {
   "pr": 151604,
   "name": "plur1bus",
   "validate": "passed (exit 0, all checks ok incl. security scan, desktop surface); 1 warning: private core imports from plugins.memory.config_schema (catalog rule 9)",
   "inside": "NOT enabled: `hermes plugins enable plur1bus` exited 1 both times. AdmissionRefused: uv lock could not generate metadata for its setuptools package plur1bus-hermes==7.19.3.post1 ('Distribution not found' under the env's plugin-sources). The three plugins without a [build-system] enabled fine. Doctor alone: import and registration ok, 0 tools and 0 hooks (it registers a memory provider plus a settings RPC). No chat call possible: a memory provider has no tool to call and the plugin was never enabled.",
   "tests": "none in the catalog folder; its source package (plur1bus-hermes/src, identical except for manifest, docs and UI) has tests: 860 passed, 47 failed, 8 collection errors (missing ruamel and the sibling plur1bus_controls package), run with lancedb 0.34 and no sentence-transformers",
   "useful": 4,
   "reliable": 2,
   "polish": 3,
   "creative": 4,
   "beyond": 5,
   "rank": 5,
   "best": "A full memory-provider replacement for Hermes (semantic recall via lancedb, timed pre-turn recall, background capture, a Desktop dashboard) that reads its keys through Hermes's secret scope.",
   "worst": "Hermes refused to enable it here (uv lock metadata failure). It is ~25k lines of Python (domain.py 4.7k, runtime.py 2.5k) carved out of a much larger repo, ships a .pyc, has no tests in the plugin folder, and also accepts a plain apiKey from its config.json.",
   "total": 23,
   "blocked": null
  },
  {
   "pr": 153766,
   "name": "hermes-ussd",
   "validate": "passed (exit 0, all checks ok, no warnings); isolation verdict in_process because it is a gateway platform adapter",
   "inside": "Enabled (kind platform, 0 tools, 0 hooks; registers a platform, a /ussd command, a skill and the `hermes ussd` CLI). `hermes ussd status` worked (outbox empty). `hermes ussd doctor` failed cleanly: 'AT_USERNAME is not set. Run `hermes ussd setup`.' A real USSD or SMS round trip needs an Africa's Talking account and a running gateway listener (simulate posts to it), so it was not run.",
   "tests": "passed: 300 passed (pytest -I, with hypothesis and httpx from its CI)",
   "useful": 3,
   "reliable": 4,
   "polish": 4,
   "creative": 5,
   "beyond": 5,
   "rank": 2,
   "best": "Adds a new Hermes platform that serves feature phones with no internet via USSD menus and SMS answers. It is closed by default (allowlist), has an at-most-once store-first outbox and a daily SMS cap, takes credentials from requires_env secrets, and passes 300 tests.",
   "worst": "Only users with an Africa's Talking account in supported African markets can use it, and nothing past config and status can be checked without that account.",
   "total": 26,
   "blocked": null
  },
  {
   "pr": 153724,
   "name": "roomsmith",
   "validate": "passed (exit 0, all checks ok incl. desktop surface, no built-in collisions, no warnings)",
   "inside": "Enabled; doctor: 11 tools, 1 hook (pre_llm_call). tool_search found roomsmith_* tools. roomsmith_new_room built a 4x3.5 m room. roomsmith_apply added a 2.2 m sofa against the back wall, a front door and an armchair, and flagged blocks_door. roomsmith_check reported blocks_door and tight_walkway. A bad input (width -3) returned a structured out_of_range error. My first apply used a wrong arg name and Hermes refused it with the schema.",
   "tests": "passed: 255 passed",
   "useful": 3,
   "reliable": 4,
   "polish": 5,
   "creative": 5,
   "beyond": 4,
   "rank": 4,
   "best": "Gives the user and Hermes one shared 3D room editor (Desktop and dashboard tabs, real products at true size, fit and door-clearance checks); every call in the run gave precise, structured results.",
   "worst": "Home-furnishing planning is a niche for an agent, and it ships two 672 KB esbuild bundles with three.js inside, though the web/ source and build script are in the repo.",
   "total": 25,
   "blocked": null
  },
  {
   "pr": 153225,
   "name": "agent-pool",
   "validate": "passed (exit 0, all checks ok incl. security scan); the scan passed partly because install-deps.sh builds the root-escalation command name from fragments so the scanner cannot see it",
   "inside": "NOT enabled: `hermes plugins enable agent-pool` exited 1 both times (AdmissionRefused: uv lock 'Distribution not found' for its setuptools package agent-pool==2.7.0). A copy with the pyproject version aligned to the manifest's 2.8.0 was refused the same way. Doctor alone: 3 tools registered. Planned calls pool_status, pool_report_usage (bad tokens 'lots') and pool_pane_report all returned 'not a known tool name' because the plugin was not enabled.",
   "tests": "413 passed, 47 failed, 11 skipped, 5 errors; most failures are PermissionError opening sockets in this sandbox, others need Tor, bubblewrap or a missing .hermes/reports file",
   "useful": 2,
   "reliable": 1,
   "polish": 3,
   "creative": 4,
   "beyond": 3,
   "rank": 6,
   "best": "Original idea: friends pool their agents into a team over Discord, moving repo bundles peer-to-peer over Iroh and Tor with signed identities, a ledger, ClamAV-scanned audits and a Desktop pane.",
   "worst": "install-deps.sh writes PRIV_NAME='su'\"do\" with the comment 'no literal in file', and a test enforces that the catalog scanner never sees the word. Audits can auto-run that root apt/systemctl script (auto_provision defaults to true). Hermes would not enable it, and the README contradicts its own code on versions, tool count and approval.",
   "total": 16,
   "blocked": null
  },
  {
   "pr": 151245,
   "name": "freeze",
   "validate": "passed (exit 0, all 15 checks ok, no warnings)",
   "inside": "Enabled; doctor: 0 tools, 4 hooks (pre_llm_call, post_tool_call, post_api_request, post_llm_call) plus /freeze and the `hermes freeze` CLI. A chat turn with write_file, terminal (wc -l) and read_file ran, and its data.db recorded 1 turn with all 3 calls and their args. `hermes freeze list` worked. `freeze run nosuch` and an invalid name '../etc' got clear errors. /freeze compiles with the user's model through ctx.llm, so compiling and replaying a workflow could not be run against the scripted model.",
   "tests": "passed: 62 passed",
   "useful": 4,
   "reliable": 4,
   "polish": 4,
   "creative": 5,
   "beyond": 5,
   "rank": 1,
   "best": "Changes how Hermes runs recurring work: it records a turn's tool calls through hooks and compiles them into a checked workflow that replays with zero model calls and stops on drift, for many repeated agent tasks.",
   "worst": "The compile-and-replay core could not be run here without a real model, so it rests on its 62 tests; it has no screenshots or UI beyond the README demo.",
   "total": 27,
   "blocked": null
  },
  {
   "pr": 150563,
   "name": "hermes-roam",
   "validate": "passed (exit 0, all checks ok); 1 warning: private core import hermes_cli.version_info.get_version_info (catalog rule 9)",
   "inside": "Enabled; doctor: 3 tools, 3 hooks. Unconfigured, roam_status and roam_push(dry_run) returned a clear ConfigError naming the setting to fix. A bad roam_pull apply='yes please' was refused by Hermes's schema check. With backend local and ROAM_ARCHIVE_KEY in the home's .env, the CLI ran init, push --dry-run (4 files), push (generation 1, signed head), status (fleet 1 device), pull (plan only) and doctor (9/9 ok). The bundle held neither the key nor the plaintext skill text.",
   "tests": "609 passed, 3 failed, 1 skipped (with moto); the 3 failures come from this machine's GIT_SSH_COMMAND proxy env and its long paths",
   "useful": 4,
   "reliable": 4,
   "polish": 4,
   "creative": 4,
   "beyond": 4,
   "rank": 3,
   "best": "Encrypted, signed sync of the Hermes home (skills, memories, SOUL, config minus host keys) across devices over S3/R2, git or a local dir, with a journaled install, backups and a model that cannot apply a pull unless the user allows it.",
   "worst": "Setup has friction: `push` before `init` fails, and init says to run --create-remote though a plain push then worked. It uses a private Hermes import, and it is a well-built take on a known idea (dotfile sync) rather than a new one.",
   "total": 24,
   "blocked": null
  }
 ]
}