{
  "sources": [
    {
      "url": "https://raw.githubusercontent.com/aydnOktay/hermes-done-bell-/3fa519a291d91b0e6c44bd42762190363ce80c39/README.md",
      "quote": "Hermes plugin: **ring when a turn finishes** so you can leave the window.\n\nOS notification (when away), optional chime, status chip (`busy` / `done` /\n`needs you`). No API keys. Does not send chat, write code, or touch user files.\n"
    },
    {
      "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/Adolanium/hermes-sheets/65888b7c6a0304d61ac5f1d060a5d4bd95ee73eb/README.md",
      "quote": "Sheets gives Hermes four tools, so you can talk about a sheet without opening it. Chat access starts off. Turn on **Run settings › Chats can read my grids** first:\n\n- `sheets_list` and `sheets_read` read your grids, with filters and paging for big ones.\n- `sheets_propose` sends cell fixes, new columns, and new rows to a grid. They wait on that grid in Sheets, in the same review list as Ask, until you apply or dismiss them. A toast says when a suggestion arrives."
    },
    {
      "url": "https://raw.githubusercontent.com/1anter/hermes-research-plugins/48befeaf71f0bfed7916553d1a511c81a37a9c4b/plugins/bounded-results/README.md",
      "quote": "4096-byte preview policy; stored inputs are limited to 8 MB, and oversize inputs pass through. This is neither a secret redactor nor a universal size/security guard. Full stored content may be sensitive.\n\n## Compatibility and tests\n"
    },
    {
      "url": "https://raw.githubusercontent.com/tydavid5/recall-vault/e564eb53143840540d1987b48906e1602050c73f/README.md",
      "quote": "A tool is only intercepted when its name looks like a payment (pay,\npayment, transfer, withdraw, payout, settle, send money, send payment)\nAND its arguments carry both an amount and a recipient. Tools like\n`read_file`, `send_message`, and `send_email` are never blocked, because\nthey carry no amount, or no recipient, or neither. The plugin's own\n`recall_vault_*` tools are not all skipped: `recall_vault_set_policy`"
    },
    {
      "url": "https://raw.githubusercontent.com/mchevatheachiever/hermes-wheelspin/d7d3768d547c0830f750c13bded33dc0ef2aa1b4/README.md",
      "quote": "- **Weighted, not rigged.** Each option holds integer tickets; the draw is\n  `secrets.randbelow(total)`. Weights are exact — no float rounding, no bias.\n- **Physics, not an easing curve.** The wheel integrates `dω/dt = -K·ω - μ`\n  (viscous drag plus constant bearing friction) every frame, so it rips at the\n  start and hangs in the long tail. The initial angular velocity is solved by\n  bisection so the wheel stops exactly on the sector the backend drew."
    },
    {
      "url": "https://raw.githubusercontent.com/winsznx/inset/790cb11c7b8871e5c773f1ecab257f0205205eee/README.md",
      "quote": "3. **Fix.** Hermes edits your code with its own `read_file` / `patch` / `write_file` tools and your normal approvals. INSET has no write path into your project. A `post_tool_call` hook marks scans of that workspace **stale after edit** when an edit lands there.\n4. **Recheck.** `inset_compare` reopens the same URL, route, viewport, DPR and capture policy and classifies each original issue:"
    },
    {
      "url": "https://raw.githubusercontent.com/taylorwtf/vitam/effa783fd171bd7d5042aea77d207569c8f2a5ba/README.md",
      "quote": "Turn a modded PS Vita into a voice-powered Hermes handheld. Hold **X**, talk, release — the Vita sends your voice to your own Hermes gateway, and the agent answers out loud through the Vita's speaker with the text on screen. Press **R** and the next message includes a photo from the Vita's rear camera, so the agent can see what you're pointing at.\n"
    },
    {
      "url": "https://raw.githubusercontent.com/NSEVEjk0/hermes-sendsafe/3a94c3162c110898bb91763f9000fb070e9d8f29/README.md",
      "quote": "- Finds hidden Excel sheets, rows and columns; Word hidden text and tracked deletions; reviewer comments; author metadata; and embedded or linked content.\n- Reports structural findings and counts without returning hidden text, hidden cell values, or author names to the model.\n- Builds a new `.docx` or `.xlsx` containing selected visible content, verifies its structure and content, and writes a SHA-256 receipt. The source stays byte-for-byte unchanged."
    },
    {
      "url": "https://raw.githubusercontent.com/mojomast/hermagotchi/0ed7793fbf238e32fb86506ad2b587ae4eb90963/README.md",
      "quote": "A Hermes Agent plugin with exactly **8 composable tools**, a native pane in the Hermes web app / Desktop, and an optional hosted game API. Network, autonomy, and agent chat stay **off until you opt in**.\n"
    },
    {
      "url": "https://raw.githubusercontent.com/MrRosc/IntentRivet/fd3990e05a3f5d4e886345d6b26e9b108482d34b/README.md",
      "quote": "3. **Allow once or Reject.** **Reject** refuses that version for good. **Allow once** sends nothing\n   by itself, but from that moment Hermes may publish exactly that version to that channel, once:\n   at once or at any later time, without asking you again. A permission does not expire and cannot\n   be withdrawn.\n4. **Result.** Hermes asks the executor to publish. The executor makes at most one send attempt per"
    },
    {
      "url": "https://raw.githubusercontent.com/wujitsana/emporia/0065a69d0969b1d5d017cad713c8e5704d9e7351/hermes_plugin/emporia/README.md",
      "quote": "This plugin is the Hermes side of it:\n- **Relay events:** challenges, DMs, room messages, *your turn* and results are pushed into the agent's Emporia session.\n- **The agent's skills:** `emporia:emporia` (using Emporia) and `emporia:emporia-setup` (installing and checking it). Both are read-only.\n- **A key guard:** it keeps Emporia's keys away from the agent's own terminal, file and code tools. Commands that change keys, wallets, limits or roles wait for the person's yes."
    },
    {
      "url": "https://raw.githubusercontent.com/Adolanium/hermes-sheets/65888b7c6a0304d61ac5f1d060a5d4bd95ee73eb/desktop/plugin.js",
      "quote": "const pending = await withTimeout(host.request('approval.pending', { session_id: sid }), RESEARCH_POLL_MS * 2)\n\n        if (Array.isArray(pending?.approvals) && pending.approvals.length > 0) {\n          state.flags.add('approval denied')\n          await withTimeout(host.request('approval.respond', { all: true, choice: 'deny', session_id: sid }), RESEARCH_POLL_MS * 2)\n        }\n      } catch {"
    },
    {
      "url": "https://raw.githubusercontent.com/1anter/hermes-research-plugins/48befeaf71f0bfed7916553d1a511c81a37a9c4b/plugins/bounded-results/__init__.py",
      "quote": "ALLOW={'evidence_history','evidence_compare','evidence_as_of','evidence_verify_support','evaluation_report','memory_search'}\ndef _db_path():return data_dir(NAME)/'results.sqlite'\ndef store(text):\n h=digest(text);c=sqlite3.connect(_db_path(),timeout=10)\n try:\n  with c:"
    },
    {
      "url": "https://raw.githubusercontent.com/tydavid5/recall-vault/e564eb53143840540d1987b48906e1602050c73f/__init__.py",
      "quote": "logger.warning(\"Recall Vault pre_tool_call failed: %s\", exc)\n        return None\n\n\ndef _post_tool_call(tool_name, args, result, task_id, duration_ms=None, tool_call_id=None, **kwargs):"
    },
    {
      "url": "https://raw.githubusercontent.com/mchevatheachiever/hermes-wheelspin/d7d3768d547c0830f750c13bded33dc0ef2aa1b4/core.py",
      "quote": "try:  # POSIX advisory locking; absent on Windows, where we degrade to no lock.\n    import fcntl\nexcept ImportError:  # pragma: no cover - Windows\n    fcntl = None  # type: ignore[assignment]\n\nSCHEMA_VERSION = 1\nMAX_ITEMS = 2000"
    },
    {
      "url": "https://raw.githubusercontent.com/taylorwtf/vitam/effa783fd171bd7d5042aea77d207569c8f2a5ba/daemon/vita_bridge.py",
      "quote": "req = urllib.request.Request(GATEWAY_URL, json.dumps(body).encode(), {\n        'Content-Type': 'application/json',\n        'Authorization': '***' + GATEWAY_KEY,\n        'X-Hermes-Session-Key': SESSION_KEY})\n    with urllib.request.urlopen(req, timeout=120) as r:\n        d = json.load(r)"
    },
    {
      "url": "https://raw.githubusercontent.com/mojomast/hermagotchi/0ed7793fbf238e32fb86506ad2b587ae4eb90963/game_client/auth.py",
      "quote": "def load(self) -> dict[str, Any] | None:\n        try:\n            text = self.path.read_text(encoding=\"utf-8\")\n        except (FileNotFoundError, NotADirectoryError):\n            return None\n        except OSError:\n            return None\n        try:\n            value = json.loads(text)\n        except (TypeError, ValueError):\n            return None"
    },
    {
      "url": "https://raw.githubusercontent.com/wujitsana/emporia/0065a69d0969b1d5d017cad713c8e5704d9e7351/src/emporia/key_source.py",
      "quote": "The secret is read when first needed, kept in memory for the life of the\nprocess, and never written to disk. Errors name the source, never the value.\nHermes's own credential vault is not used: its password-manager unlocks are\nper chat session and stay locked unattended, by design, and an agent signs\nunattended.\n\"\"\"\n"
    },
    {
      "url": "https://raw.githubusercontent.com/NousResearch/hermes-agent/main/plugin-catalog/README.md",
      "quote": "11. **Credentials come through Hermes, never from files.** A plugin gets\n   secrets only through Hermes's routes. Its declared `requires_env` and\n   `config_schema` secrets are read with `agent.secret_scope.get_secret(NAME)`,\n   which honours the active profile (a bare `os.environ` read can pick up another\n   profile's key under multiplexing)."
    }
  ]
}
