{
  "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\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"
    },
    {
      "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\n   (`notify.mobile_app_my_phone` for `target"
    },
    {
      "url": "https://gitlab.com/cryptobandit/hermes-claim-check/-/raw/4a0e655ae24d7fdc5ec7fc4e5f1494c95bd3f567/README.md",
      "quote": "It records every tool result in a local evidence ledger, then checks the success claims in the agent's\nfinal reply against what actually happened, and appends a receipt:\n\n```\n---\n**claim-check receipts**\n✅ file: “I created `calc.py` and all tests pass.” — write_file /repo/calc.py (tool #1)\n❌ tests: “I created `calc.py` and all tests pass.” — `pytest -q` exit 1 (tool #2)\n```\n\nA prompt or skill can't do this: it asks the same model that m"
    },
    {
      "url": "https://raw.githubusercontent.com/wevial/retake/b5146c8cf7c7f75326f7980eff75004596014e83/README.md",
      "quote": "Retake keeps image work in one place. Start with a generated image or one you upload, draw numbered notes on the regions you want changed, write what should change and what must stay, confirm a reference-guided revision, then compare versions side by side and download the one you want.\n\n## From first image to next take\n\n1. **Start with an image.** Describe one and generate it through Hermes's configured image tool, or upload a PNG, JPEG"
    },
    {
      "url": "https://raw.githubusercontent.com/georgeonweb3/hermes-aegis-spend-guard/766bf7c85d7b1d315ad357907f61ca2d20f6b45d/README.md",
      "quote": "The owner sets a per-transaction cap, a daily limit, recipient allow/block\nlists and a tool scope. Every spend is checked in `pre_tool_call`:\n\n- **Within policy** → the call proceeds untouched.\n- **Borderline** (near a cap, unknown recipient, unlisted tool, or a spend\n  with no readable price) → routed to the owner through Hermes's own\n  human-approval gate.\n- **Over policy** (over the cap, over the daily limit, blocklisted\n  recipient,"
    },
    {
      "url": "https://raw.githubusercontent.com/strnadchristopher/tiled-sessions/a7265fc69b3c0487bfcac2c3907ec80a5c31351a/README.md",
      "quote": "Tiled Sessions uses the session-tiling seam of the desktop plugin SDK: `host.openSession(id, { dock })`, `host.state.sessionLayout`, `host.state.pinnedSessionIds`, `host.layout` (including `arrangeSessions` and `newChatTile`) and `KeybindEditor`. It is proposed upstream in [NousResearch/hermes-agent#149656](https://github.com/NousResearch/hermes-agent/pull/149656). On a Hermes build without it, the Tiles pane says so and sessions open a"
    },
    {
      "url": "https://raw.githubusercontent.com/CGIC-AI/hermes-psfn-avatar/c8fa99b2da06e57f36a002ed0588c8e1a0f6f3a3/README.md",
      "quote": "`hermes-psfn-avatar` brings a live 3D VRM 0.x / 1.0 VTuber avatar directly into **Hermes Desktop** and the **Hermes Web Dashboard** as a transparent corner overlay, dockable stage pane, and full 3D motion studio—powered by **Three.js** and **`@pixiv/three-vrm`**.\n\nBuilt as a standalone plugin for any Hermes Agent user, with a zero-config emotional continuity bridge to **PSFN Lite** (`psfn_lite`) when installed in the same Hermes profile"
    },
    {
      "url": "https://raw.githubusercontent.com/suhas-svg/hermes_explainer/4aea2971ae4af44463473ad2a93051f7cb2b26a0/README.md",
      "quote": "Turn anything Hermes can read (a link, a PDF, a paper, your notes, or just a\ntopic) into a narrated explainer video. You get designed slides, a natural\nneural voice, bullets that appear as the narrator reaches them, and captions\nthat highlight each word as it is spoken. Videos come out as 16:9 for YouTube\nor 9:16 for Shorts, Reels and TikTok, with SRT captions, a transcript and a\nthumbnail alongside. Everything is rendered on your machi"
    },
    {
      "url": "https://raw.githubusercontent.com/tuancookiez-hub/hermes-threejs-stage/5dbee69884211aaa7c08fbef4c6cb177e2138546/README.md",
      "quote": "- **Network.** The Desktop card cannot use the network. three.js comes from this plugin's own\n  backend, and the frame's content security policy (`default-src 'none'`, with only `blob:` and\n  `data:` sources allowed) blocks every request scene code could make. The exported `.html` file\n  is different: it loads three.js 0.187.0 from `cdn.jsdelivr.net` when you open it in a browser,\n  and has no such policy.\n- **Files read and written.** "
    },
    {
      "url": "https://raw.githubusercontent.com/winchxyz/hermes-blueprint/ee0a8d5bf19cf3341832b36b178b813f40be8d12/README.md",
      "quote": "- **No source, no ✅.** A claim is ✅ only if its quote appears in a page the plugin fetched and\n  stored (after folding case, whitespace, typographic quotes and dashes). Market size and traction\n  need two independent sources (different domain and different content). A search snippet is a\n  lead, never evidence. \"Nothing like this exists\" is never ✅: it needs three logged searches and\n  stays 🔍.\n- **Coverage you can audit.** Research tie"
    },
    {
      "url": "https://raw.githubusercontent.com/ainsleys/hermes-confidential-mode/e407486a2227be8cafe7b4350586f3016ebff573/README.md",
      "quote": "**Four limits before you rely on this.** The attested tier admits only models the two vendors serve\ninside enclaves; those are open-weight models such as the Qwen, DeepSeek, Llama and gpt-oss families,\nso a hosted frontier model cannot be in the tier. Because fallbacks are refused while locked, a vendor\noutage ends the turn instead of routing elsewhere. The agent can still run shell commands and code, and the plugin\ndoes not look inside"
    },
    {
      "url": "https://raw.githubusercontent.com/ASV-Labs/hermes-helm/0f68da9b485870059be2bef71f284a81ad771fdd/README.md",
      "quote": "helm uses only the public Hermes Desktop plugin SDK and the gateway calls the app itself makes. It changes no Hermes core files and never answers anything without your click.\n\n## Install\n\n```bash\nhermes plugins install ASV-Labs/hermes-helm\nhermes plugins enable helm\n```\n\nThen in Hermes Desktop:\n\n1. **Settings → Plugins → Desktop plugins → enable helm.**\n2. **Restart Hermes once**, so its gateway mounts helm's small backend for the robot"
    },
    {
      "url": "https://gitlab.com/cryptobandit/hermes-claim-check/-/raw/4a0e655ae24d7fdc5ec7fc4e5f1494c95bd3f567/claimcheck/verify.py",
      "quote": "def _last_write_seq(ledger):\n    seqs = [e[\"seq\"] for e in ledger if e.get(\"kind\") == \"write\" and e.get(\"ok\")]\n    return max(seqs) if seqs else 0\n\n\ndef _describe(e):\n    if e.get(\"kind\") == \"shell\":\n        return f\"`{e.get('command','')[:60]}` exit {e.get('exit_code')}\"\n    return f\"{e.get('tool')} {e.get('path','')}\".strip()\n\n\ndef _judge(kind, claim, matches, what):\n    \"\"\"Latest matching entry decides.\"\"\"\n    if not matches:\n       "
    },
    {
      "url": "https://raw.githubusercontent.com/georgeonweb3/hermes-aegis-spend-guard/766bf7c85d7b1d315ad357907f61ca2d20f6b45d/guard.py",
      "quote": "    def record_execution(self, tool_name: str, args: dict) -> None:\n        \"\"\"Record an executed spend (called from post_tool_call: the tool\n        actually ran, so the money actually moved).\"\"\"\n        action = extract_spend(\n            tool_name,\n            args,\n            self.paid_tools,\n            gate_scripts=self.gate_scripts,\n            spend_tools=self.spend_tools,\n            allowed_tools=self.policy.allowed_tools,\n  "
    },
    {
      "url": "https://raw.githubusercontent.com/CGIC-AI/hermes-psfn-avatar/c8fa99b2da06e57f36a002ed0588c8e1a0f6f3a3/bridge.py",
      "quote": "    req = urllib.request.Request(\n        f\"{url}/api/lite/overview\",\n        method=\"GET\",\n        headers={\"Authorization\": f\"Bearer {token}\", \"Accept\": \"application/json\"},\n    )\n    try:\n        with urllib.request.urlopen(req, timeout=timeout) as resp:\n            if resp.status != 200:\n                return None\n            data = json.loads(resp.read().decode(\"utf-8\"))\n    except (OSError, urllib.error.URLError, ValueError):\n   "
    },
    {
      "url": "https://raw.githubusercontent.com/winchxyz/hermes-blueprint/ee0a8d5bf19cf3341832b36b178b813f40be8d12/hermes_blueprint/research.py",
      "quote": "        if not outcome.ok:\n            payload = {\"status\": \"skipped\", \"reason\": outcome.error, \"claims\": len(active),\n                       \"at\": started}\n            store.add_artifact(project.id, project.phase, \"verification\", PRODUCER, payload)\n            return {\"verification\": \"skipped\", \"reason\": outcome.error,\n                    \"note\": \"The briefing will say the independent verifier did not run.\"}\n        try:\n            ve"
    },
    {
      "url": "https://raw.githubusercontent.com/ainsleys/hermes-confidential-mode/e407486a2227be8cafe7b4350586f3016ebff573/confidential_mode/gate_llm.py",
      "quote": "        if tier is Tier.ATTESTED:\n            att = self.attested_ok(dest.provider)\n            if not isinstance(att, Verdict):\n                raise TypeError(\"attested_ok returned a non-Verdict\")\n            if not self.permits(att.in_tier, \"attested\"):\n                # Only selects the refusal text; both branches refuse.\n                pending = self.pin_pending is not None and self.permits(self.pin_pending(), \"pin_pending\")\n     "
    },
    {
      "url": "https://raw.githubusercontent.com/ASV-Labs/hermes-helm/0f68da9b485870059be2bef71f284a81ad771fdd/desktop/plugin.js",
      "quote": "  const cmd = item.command ? (item.command.length > 160 ? `${item.command.slice(0, 157)}…` : item.command) : ''\n  return jsxs('div', {\n    style: { display: 'flex', flexDirection: compact ? 'column' : 'row', alignItems: compact ? 'stretch' : 'center', gap: compact ? 4 : 12, padding: compact ? '8px 0' : '9px 2px', borderBottom: `1px solid ${V.hair}`, lineHeight: 1.3 },\n    children: [\n      jsxs('div', {\n        style: { display: 'flex',"
    },
    {
      "url": "https://raw.githubusercontent.com/tuancookiez-hub/hermes-threejs-stage/5dbee69884211aaa7c08fbef4c6cb177e2138546/scene.py",
      "quote": "def standalone_html(title: str, code: str, model: dict | None = None) -> str:\n    guest = (_ROOT / \"stage\" / \"guest.html\").read_text(encoding=\"utf-8\")\n    boot = json.dumps({\"title\": title, \"code\": code, \"cdn\": CDN_BASE, \"model\": model}).replace(\"</\", \"<\\\\/\")\n    return guest.replace(\"<script>\", f\"<script>window.__THREE_STAGE__ = {boot};</script>\\n<script>\", 1)\n\n\ndef _verify_dir() -> Path:\n    directory = _data_dir() / \"verify\"\n    dire"
    },
    {
      "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). A subscription sign-in (Codex / ChatGPT\n   today) is used only through `credentialed_provider_"
    }
  ]
}