{
  "sources": [
    {
      "url": "https://raw.githubusercontent.com/aydnOktay/hermes-done-bell-/3fa519a291d91b0e6c44bd42762190363ce80c39/README.md",
      "quote": "OS 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\nLives under `plugins/done-bell/` so it stays separate from debug-desk.\n\nRepo: https://github.com/aydnOktay/hermes-done-bell-\n\n## Install (dev)\n\n```powershell\nhermes plugins install C:\\Users\\aydin\\Desktop\\nous-puling\\plugins\\done-bell\nhermes plugins enable done-bell\n```\n\nCopy the pane (Hermes 0.21 installer may skip it):\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/fitzss/hermes-plugin-valun/5d01fbdde03ab5ad80f51b6547026fb06cd5e20e/README.md",
      "quote": "> **Experimental pilot.** PC (\"pilot credits\") are synthetic units with **no monetary value**. The Basis tracker behind\n> the pilot has **no blockchain connection** and **no reserve**. Issuing a credit note creates an outstanding promise to\n> pay; **nothing is settled** in the pilot (no redemption, reserve, clearing or netting).\n\n## What this does that a prompt cannot\n"
    },
    {
      "url": "https://raw.githubusercontent.com/fitzss/hermes-plugin-valun/5d01fbdde03ab5ad80f51b6547026fb06cd5e20e/tools.py",
      "quote": "    def save(self):\n        if self._ledger_path:\n            tmp = self._ledger_path + '.tmp'\n            with open(tmp, 'w', encoding='utf-8') as f:\n                json.dump({'issued': self.state.get('issued', {})}, f, indent=1)\n            os.replace(tmp, self._ledger_path)\n\n    def save_credentials(self, secret_hex, token):\n        raise vc.ValunError('not_here', 'credentials are stored only by `hermes valun join` / `enroll`, run by the operator')\n\n"
    },
    {
      "url": "https://raw.githubusercontent.com/percyhendrux123-prog/hermes-standing/8c8126ee85073d9ef8cfaf6ed935ce68dcae42d8/README.md",
      "quote": "A completion check uses the passing receipt from this session; it does not re-run the mutable target at completion time. A later failing proof demotes the actor, but does not erase a different earlier passing receipt. Repeated passing checks each count; there is no semantic relevance scoring, deduplication, or freshness policy. Choose meaningful checks rather than treating any pass as proof of the whole deliverable.\n\nIf no proof is present, the message is:\n"
    },
    {
      "url": "https://raw.githubusercontent.com/friendly-neighborhood-coding-man/hermes-universal-plugin-port/e8999dbbb7c23b7ef1e447db9b5803c54c498a35/port_core.py",
      "quote": "def stage(source:str, output_root:str, *, approved:bool=False, run_foreign_code:bool=False, allow_partial:bool=False)->dict:\n    if approved is not True:\n        raise PortError(\"User installation/staging request is required (approved=true)\")\n    plan=analyze(source)\n    if plan[\"blockers\"]:\n        raise PortError(\"Static blockers: \"+\"; \".join(plan[\"blockers\"]))\n    if plan[\"issues\"] and not allow_partial and plan[\"profile\"] != \"openclaw\":"
    },
    {
      "url": "https://raw.githubusercontent.com/cineglobe/hermes-gemini-live/b6c2f24354aeed1a8b5651b62944d14ed96a472d/README.md",
      "quote": "## Approvals on a call\n\nWhen a job needs permission, the voice tells you what it wants to do and Approve and Deny buttons appear on the call. Hermes' approval system still decides what needs asking, and the voice model has no way to answer. Turn on `voice_approval` to answer hands-free by saying \"approve\" or \"deny\": the plugin matches your whole utterance on the microphone transcript, ignores it while the voice is speaking, and approves once only. Use headphones with it.\n"
    },
    {
      "url": "https://raw.githubusercontent.com/cineglobe/hermes-gemini-live/b6c2f24354aeed1a8b5651b62944d14ed96a472d/glive_shell.py",
      "quote": "def execute(argv: list[str], cwd: Path) -> dict[str, Any]:\n    env = {\"PATH\": os.environ.get(\"PATH\", \"/usr/bin:/bin\"), \"LANG\": \"C.UTF-8\", \"LC_ALL\": \"C.UTF-8\",\n           \"HOME\": str(Path.home()), \"TERM\": \"dumb\", \"NO_COLOR\": \"1\", \"SYSTEMD_PAGER\": \"\", \"PAGER\": \"cat\",\n           \"GIT_PAGER\": \"cat\", \"GIT_TERMINAL_PROMPT\": \"0\", \"GIT_OPTIONAL_LOCKS\": \"0\"}\n    try:\n        proc = subprocess.run(argv, cwd=str(cwd), env=env, stdin=subprocess.DEVNULL, capture_output=True,"
    },
    {
      "url": "https://raw.githubusercontent.com/equipdash/agent/64becfb220719b1c207efeaa78d9b5f641d53fa4/README.md",
      "quote": "There is no local code in this repository. Every tool call goes to `app.equipdash.com`.\n\n## Install\n\n### Claude Code\n\n```\n/plugin marketplace add equipdash/agent\n/plugin install equipdash@equipdash\n```\n\nThen run `/mcp`, pick `equipdash` and sign in. To add only the server:\n\n```\nclaude mcp add --transport http equipdash https://app.equipdash.com/mcp/v1\n```\n\n### Cursor\n\nAdd the plugin from the Cursor Directory, or put this in `.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {"
    },
    {
      "url": "https://raw.githubusercontent.com/SnoobieJunes/hermes-wow-plugin/9a4a6d40b48eb31d948c220006bfe2347ef78b80/README.md",
      "quote": "| `wow_env` | Finds your WoW install and lists your addons |\n| `wow_api` | The ground truth: what API calls and events exist in your client build |\n| `wow_check` | Six rounds of inspection ending in one verdict: pass, or every reason it would fail |\n| `wow_test` | Rehearses addons with simulated guildmates before real ones depend on them |\n| `wow_new` | Starts every addon from tested building blocks instead of a blank page |"
    },
    {
      "url": "https://raw.githubusercontent.com/SnoobieJunes/hermes-wow-plugin/9a4a6d40b48eb31d948c220006bfe2347ef78b80/src/wow_addon_forge/luavm.py",
      "quote": "    runtime = lua51.LuaRuntime(\n        register_eval=False, register_builtins=False, unpack_returned_tuples=True\n    )\n    if sandbox:\n        runtime.execute(_SANDBOX_CHUNK)\n    return runtime\n\n\ndef lua_version(runtime: Any) -> str:\n    \"\"\"Return the VM's ``_VERSION`` string (``\"Lua 5.1\"`` for every runtime this module makes).\"\"\"\n    # [2026-11-11 T-002] Read the global directly: the Hermes install scanner flags `.eval(`"
    },
    {
      "url": "https://raw.githubusercontent.com/elyga408-oss/hermes-ledger/a9fa5a626810496f57ec4fb37fe9253035fd16d6/README.md",
      "quote": "## Threat model\n\n**What it proves.** That the log has not been changed since it was written: no record edited, inserted, deleted, reordered or cut off the end, by anyone who does not hold the private key. A receipt proves the same thing to a third party who holds only the public key.\n\n**What it does not prove.**\n"
    },
    {
      "url": "https://raw.githubusercontent.com/elyga408-oss/hermes-ledger/a9fa5a626810496f57ec4fb37fe9253035fd16d6/ledger_core.py",
      "quote": "        private = serialization.load_pem_private_key(priv_path.read_bytes(), password=None)\n        if not isinstance(private, Ed25519PrivateKey):\n            raise ValueError(f\"{priv_path} is not an Ed25519 private key\")\n        pair = cls(private)\n        if not pub_path.exists() or pub_path.read_text(encoding=\"utf-8\").strip() != pair.public_b64:\n            _atomic_write(pub_path, (pair.public_b64 + \"\\n\").encode(\"ascii\"), mode=0o644)\n        return pair\n\n"
    },
    {
      "url": "https://raw.githubusercontent.com/0xdopewilly/hermes-emporium/7b43458565055461b8094ce44199976933275fad/README.md",
      "quote": "| **Sealed jobs** | `toolsets_for_source` loads only the toolsets a service sells, so a translation job never even sees terminal, files or memory. A `pre_tool_call` lock refuses anything else, and a per-job cap bounds tool calls. |"
    },
    {
      "url": "https://raw.githubusercontent.com/0xdopewilly/hermes-emporium/7b43458565055461b8094ce44199976933275fad/tools.py",
      "quote": "        if p.needs_approval(price):\n            return {\"action\": \"approve\",\n                    \"message\": f\"Pay {usd(price)} USDC to {cat.get('name') or 'a shop'} for \u201c{svc.get('title') or svc.get('id')}\u201d?\",\n                    \"rule_key\": f\"emporium:{buyer.norm_url(str(args.get('shop_url', '')))}\"}\n        return None\n\n    return browse, hire, gate\n\n\ndef register_tools(ctx: Any) -> None:\n    browse, hire, gate = make_handlers(ctx)"
    },
    {
      "url": "https://raw.githubusercontent.com/okyssta/hermes-peripheral/107445dbab1d09189a9a99612a3caa4a2827b3af/README.md",
      "quote": "- **Redaction on by default**: API keys (`sk-`, `ghp_`, `AKIA`, `AIza`, Slack tokens),\n  JWTs, bearer/basic headers, `password:`/`token:` values, credentials inside\n  connection URLs (`postgres://user:***@\u2026`), private keys, card numbers and 32+ char\n  hex strings are replaced before anything is stored \u2014 in the OCR text *and* in the\n  agent-event log, which stores tool arguments.\n- **You can forget, and it means it**: `screen_forget(id)` / `/peripheral forget <id>`"
    },
    {
      "url": "https://raw.githubusercontent.com/okyssta/hermes-peripheral/107445dbab1d09189a9a99612a3caa4a2827b3af/tools.py",
      "quote": "def _image_part(shot, text: str, *, want: bool | None) -> str | dict:\n    \"\"\"Attach the stored screen to the text result when it is useful and safe.\n\n    ``want`` is tri-state: True (attach), False (text only), None (ask the config).\n    \"\"\"\n    settings = get_settings()\n    if not settings.show_images:\n        return text\n    if want is None:\n        want = vision_attached()\n    if not want:\n        return text\n    candidates = [shot.path, shot.thumb_path]"
    },
    {
      "url": "https://raw.githubusercontent.com/friendly-neighborhood-coding-man/hermes-universal-plugin-port/e8999dbbb7c23b7ef1e447db9b5803c54c498a35/README.md",
      "quote": "Limits: disposable homes only, Skills only, and connectors are not connected. No model task was run, so the repaired Skill's behaviour is not verified. One deterministic rule is wired into the Doctor CLI.\n\n## Quickstart (guided, disposable): Inspect \u2192 Adapt \u2192 Approve \u2192 Install \u2192 Verify \u2192 Undo\n"
    },
    {
      "url": "https://raw.githubusercontent.com/namangoyal3/hermes-ctrlall/9b4908974cdafc71a8b46e7e7e95c6ae7beebe25/README.md",
      "quote": "## Disclosure (plugin catalog rule 13)\n\n- **Network:** calls go only to the configured ctrl+all daemon URL (default\n  loopback `127.0.0.1:9931`). No third-party endpoints, no telemetry, no\n  analytics.\n- **Credentials:** the daemon token is read through Hermes's secret scope\n  (`CTRLALL_DAEMON_TOKEN`), never from `~/.ctrlall`, `.env` files, or any\n  other credential store.\n- **Side effects:** `ctrlall_chat_create`, `ctrlall_chat_send` and"
    },
    {
      "url": "https://raw.githubusercontent.com/namangoyal3/hermes-ctrlall/9b4908974cdafc71a8b46e7e7e95c6ae7beebe25/tools.py",
      "quote": "def chat_mode(args, cfg, **kwargs):\n    return _call(cfg, \"chat.mode\", dict(args))\n\n\ndef inbox(args, cfg, **kwargs):\n    return _call(cfg, \"inbox.list\")\n\n\ndef git_status(args, cfg, **kwargs):\n    return _call(cfg, \"git.status\", dict(args))\n\n\ndef git_diff(args, cfg, **kwargs):\n    return _call(cfg, \"git.diff\", dict(args))"
    }
  ]
}