{
  "sources": [
    {
      "url": "https://raw.githubusercontent.com/aydnOktay/hermes-done-bell-/3fa519a291d91b0e6c44bd42762190363ce80c39/README.md",
      "quote": "Copy the pane (Hermes 0.21 installer may skip it):\n\n```powershell\nNew-Item -ItemType Directory -Force -Path \"$env:LOCALAPPDATA\\hermes\\desktop-plugins\\done-bell\" | Out-Null\nCopy-Item \"$env:LOCALAPPDATA\\hermes\\plugins\\done-bell\\desktop\\plugin.js\" \"$env:LOCALAPPDATA\\hermes\\desktop-plugins\\done-bell\\plugin.js\" -Force\n```\n\nRestart Hermes. Status bar chip: `busy` while working, `done` when idle.\n\n1. Send a chat, switch to another window"
    },
    {
      "url": "https://raw.githubusercontent.com/NousResearch/hermes-official-plugins/e7a218f26db88426ab3e7376f0e000b6e356f5e7/homeassistant/README.md",
      "quote": "1. **Gateway platform `homeassistant`**: subscribes to Home Assistant's WebSocket event bus and\n   forwards `state_changed` events to the agent, with domain/entity filters and per-entity cooldowns.\n   The agent's replies show up as Home Assistant persistent notifications titled \"Hermes Agent\".\n   Cron jobs can deliver to `deliver=homeassistant[:target]` through the target's own notify service"
    },
    {
      "url": "https://raw.githubusercontent.com/LSUDOKO/Phone-Senses/ebf7004c2d9160670c44a77e415f0c117039cddc/plugin/README.md",
      "quote": "**Give Hermes Agent the senses of your own Android phone**: notifications, SMS, calls, battery,\nlocation, bank and UPI money, bills, deliveries, scam warnings, a live scam tripwire and find my phone.\nIt talks to Android directly through Termux:API (no screen tapping), on your own phone and SIM, and\n**Hermes asks you before it sends, calls, takes a photo or reveals a code**.\n"
    },
    {
      "url": "https://raw.githubusercontent.com/Angerosteles/local-scout/c1e732ba4e9d431a711ea141c0095352a95bd7a2/README.md",
      "quote": "**Masking is one-way.** Placeholders are not restored in replies or outgoing arguments. Reversible tokenization would let a hidden instruction turn a placeholder back into real data when the agent sends it. Here the model receives the placeholder instead of the detected value. The tradeoff is deliberate: the model cannot address an e-mail using `[EMAIL]`.\n"
    },
    {
      "url": "https://raw.githubusercontent.com/winsznx/inset/790cb11c7b8871e5c773f1ecab257f0205205eee/README.md",
      "quote": "4. **Recheck.** `inset_compare` reopens the same URL, route, viewport, DPR and capture policy and classifies each original issue:\n   - `resolved_on_recheck`: the target is still present and visible, and the failure no longer reproduces\n   - `reproduced`: the same measurable failure appeared again\n   - `needs_review`: the element was removed or hidden, its section changed, or browser/capture conditions differ"
    },
    {
      "url": "https://raw.githubusercontent.com/OutstandingVick/sightline/86633505f8a5c4c21e102f78a848b06d5e6f18db/README.md",
      "quote": "- **Pays only inside limits you set.** Grants (token, cap per day, week or month, per-payment\n  max, recipients, expiry) are created by you, never the model. Everything else needs your\n  approval or is blocked.\n- **Checks every transaction before signing.** Simulated on the RPC, explained in plain English,\n  and blocked on drains, unknown programs or any mismatch. The model never sees the key."
    },
    {
      "url": "https://raw.githubusercontent.com/NicWeinbrecht/hermes-clotho/c2eb4419df4367f4f564fbe1a0725e5148b2ba91/README.md",
      "quote": "- `/clotho on` keeps its state in the gateway's memory: a gateway restart or a failed plugin reload ends the\n  rehearsal, and later calls run for real.\n- Apply runs in a non-interactive terminal, where Hermes auto-approves its own dangerous-command prompt, so your\n  tick is the approval.\n- `web_search` runs for real during a rehearsal, so a search reaches its provider and may be metered.\n"
    },
    {
      "url": "https://raw.githubusercontent.com/Murali-lns/perf-lab/2d818104748ef5f0c73a937ecc050d524ee1301b/README.md",
      "quote": "- **Runs only interpreters.** `perf_bench` / `perf_profile` accept commands that start with an\n  interpreter (`python`, `node`, `ruby`, `uv run`, ...), never a shell, and refuse inline code\n  (`-c`, `-e`). This keeps them from becoming a way around Hermes' command approvals. A script\n  can still do anything the user can, exactly as when the agent runs it in the terminal.\n- **Local only.** No network calls, no telemetry, no credentials read."
    },
    {
      "url": "https://raw.githubusercontent.com/zblauser/numogram-hermes-plugin/025547ff83c073200ddf94fd2def3c8ca57e7b9e/README.md",
      "quote": "| ESP32-P4, real board, USB | ✅ Full loop: crash, fix, build, flash, verify |\n| ESP32-C3, virtual board | ✅ Full loop |\n| Other RISC-V chips (C2, C5, C6, C61, H2) | Same paths, not tried on hardware yet |\n| Older Xtensa chips (ESP32, S2, S3) | Flashing should work; crash reading is untested |\n| Schematic pin check | Pin rules for 11 chips, from Espressif's ESP-IDF docs |\n"
    },
    {
      "url": "https://raw.githubusercontent.com/kaosjammo/hermes-workspace/3eeb9986101a3d75c4f9cddc26bb5a3e31bcb9f5/dist/workspace/README.md",
      "quote": "- Native integration also accesses the selected profile's canonical Hermes `state.db` through `SessionDB`, plus admission, transcript and runtime metadata. Constructing `SessionDB` is not promised to be a read-only SQLite connection. Finalisation depends on private, same-process native owner interfaces; this remains a compatibility and catalogue-review concern.\n\n### Local shared workspaces and independent executors\n"
    },
    {
      "url": "https://raw.githubusercontent.com/joelbrilliant/hermes-agent-si/adf7abc1d89b1e1ea686ac2fd29e2b95b454f4fe/README.md",
      "quote": "- Keyword search. It finds the words you used, not synonyms. Searching twice with different words is cheap.\n- One brain per Hermes home unless `brain_dir` says otherwise. Profiles keep their own.\n- The quote rule is strict on purpose. Five words the user typed, or the fact is not kept.\n- The index reads Hermes `state.db` schemas from 2026; a schema change upstream shows up as fewer Hermes\n  sessions in `hermes agent-si status`, never as an error in a turn."
    },
    {
      "url": "https://raw.githubusercontent.com/KeyArgo/hail-hermes/ade2b7b2e40c6762411e04e928e5da3bba99c185/README.md",
      "quote": "Hail Hermes is a Hermes Agent plugin: a hub, a desktop panel, and phone/watch clients, so your\nself-hosted agent gets a voice, a face, proactive nudges, and device sensors as agent tools. **The\npanel is the product and needs no hardware**; the watch is the extension you pair later.\n\n```bash\nhermes plugins install KeyArgo/hail-hermes --yes-deps --enable\n```\n\nThen restart Hermes Desktop and click **Hail Hermes** in the left rail — the plugin is a page in the"
    },
    {
      "url": "https://raw.githubusercontent.com/LSUDOKO/Phone-Senses/ebf7004c2d9160670c44a77e415f0c117039cddc/plugin/client.py",
      "quote": "def sign(secret: str, method: str, path: str, timestamp: str, nonce: str, body: bytes) -> str:\n    \"\"\"Must stay identical to ``phone_helper/helper.py:sign``.\"\"\"\n    msg = \"\\n\".join([method.upper(), path, timestamp, nonce, hashlib.sha256(body).hexdigest()])\n    return hmac.new(secret.encode(), msg.encode(), hashlib.sha256).hexdigest()\n\n\nclass PhoneClient:\n    \"\"\"Signed JSON requests to the phone helper.\"\"\"\n"
    },
    {
      "url": "https://raw.githubusercontent.com/winsznx/inset/790cb11c7b8871e5c773f1ecab257f0205205eee/inset/compare.py",
      "quote": "elif not probe.get(\"present\"):\n                item.update(outcome=\"needs_review\", reason=\"The selector no longer exists after the change. The issue requires review; it hasn't been marked fixed.\")\n            elif not probe.get(\"visible\"):\n                item.update(outcome=\"needs_review\", reason=\"The element is now hidden. Hiding a control is not a repair, so this needs review.\")\n            elif not section_present:"
    },
    {
      "url": "https://raw.githubusercontent.com/OutstandingVick/sightline/86633505f8a5c4c21e102f78a848b06d5e6f18db/sightline/intents.py",
      "quote": "The firewall is re-run here regardless of what the hook said. ALLOW reserves spend\n    against the grant atomically (same transaction as the cap check). APPROVE proceeds\n    only if the hook asked a human about this call (Hermes runs the tool only after a\n    yes); without that evidence it is a BLOCK.\n    \"\"\"\n    from . import audit\n    from .db import transaction\n    from .firewall import ALLOW, APPROVE, BLOCK, Decision, decide\n    from .gate import log_decision\n"
    },
    {
      "url": "https://raw.githubusercontent.com/Murali-lns/perf-lab/2d818104748ef5f0c73a937ecc050d524ee1301b/perf_core.py",
      "quote": "def _run_once(argv: list[str], root: Path, timeout: float) -> dict:\n    start = time.perf_counter()\n    try:\n        proc = subprocess.run(\n            argv, cwd=str(root), stdin=subprocess.DEVNULL, capture_output=True, timeout=timeout,\n        )\n    except subprocess.TimeoutExpired:\n        return {\"seconds\": round(time.perf_counter() - start, 4), \"exit\": None, \"timeout\": True,\n                \"stdout\": \"\", \"stderr\": f\"timed out after {timeout:.0f} s\"}"
    },
    {
      "url": "https://raw.githubusercontent.com/kaosjammo/hermes-workspace/3eeb9986101a3d75c4f9cddc26bb5a3e31bcb9f5/dist/workspace/workspace_plugin/native_owner.py",
      "quote": "def require_current(self):\n        from gateway.session_cron import owner_for_home\n        from gateway.session_authorities import require_serving\n        pair = owner_for_home(self.home)\n        if not pair or pair[0] is not self.authority or pair[1] is not self.loop:\n            raise ValueError('Native owner was replaced or unbound')\n        require_serving(self.authority)\n        self.authority._require_admission_open()\n\n    def call(self, coroutine):"
    },
    {
      "url": "https://raw.githubusercontent.com/joelbrilliant/hermes-agent-si/adf7abc1d89b1e1ea686ac2fd29e2b95b454f4fe/remember.py",
      "quote": "def find_quote(quote: str, messages: list[str]) -> str | None:\n    \"\"\"The most recent message that contains the quote, or None.\"\"\"\n    needle = normalise(quote)\n    if not needle:\n        return None\n    for message in reversed(messages):\n        if needle in normalise(message):\n            return message\n    return None\n\n\ndef quote_problem(quote: str) -> str | None:\n    words = normalise(quote).split()\n    if len(words) < MIN_QUOTE_WORDS:"
    },
    {
      "url": "https://raw.githubusercontent.com/KeyArgo/hail-hermes/ade2b7b2e40c6762411e04e928e5da3bba99c185/docs/SECURITY.md",
      "quote": "- Speech and text cross the LAN in the protocol's own frames. Traffic is not encrypted; run it on\n  a network you trust, or keep LAN mode off and use the loopback path. Encrypted transport is a\n  known gap, listed as future work rather than pretended.\n\n## What is not protected\n\n- The computer itself: anyone with a shell on it can read the state directory.\n- The model provider: what you say to the watch goes to whichever provider is configured."
    },
    {
      "url": "https://raw.githubusercontent.com/NousResearch/hermes-agent/main/plugin-catalog/README.md",
      "quote": "12. **Approvals and unattended runs are respected.** A plugin never routes around\n   Hermes's approval system: no auto-approving, no disabling guards, and no\n   spawning Hermes or shell children that inherit YOLO or non-interactive mode\n   to run commands nobody approved. Anything that waits for a person (a prompt,\n   an OAuth browser flow) fails cleanly or times out under cron, the messaging\n   gateway and other unattended runs instead of hanging the agent."
    }
  ]
}
