{
  "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."
    },
    {
      "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=mobile_app_my_phone`), without a running gateway."
    },
    {
      "url": "https://raw.githubusercontent.com/mojomast/poptart/42356ddb9eff2eea2419bbd223ee159f353e4632/README.md",
      "quote": "- Not yet verified: physical speaker output, OAuth-specific routing, native-Desktop data-document worklets, and non-Chromium browsers.\n- No level meter yet.\n- No WebSocket: the pane uses bounded 3-second refresh polling.\n- The editor is a textarea, not CodeMirror.\n- Remote gateway setups are untested.\n- Third-party license review is ongoing (see [RESEARCH.md](RESEARCH.md) and [THIRD_PARTY_LICENSES.md](THIRD_PARTY_LICENSES.md))."
    },
    {
      "url": "https://raw.githubusercontent.com/Morkeeth/hermes-studio/3f9c01035d69cfb7dc15d70c139f0c5a82b2075e/README.md",
      "quote": "The real demonstration used local transcription, a saved editable project, existing library music, actual Eyes inspection and Showreel hooks/planning. The gateway-to-workstation delivery test reused the exact reviewed export and labelled it unchanged. A full live attachment/reply-edit/new-export round trip is not yet verified. A skill being available does not prove every backend works."
    },
    {
      "url": "https://raw.githubusercontent.com/ladyFaye1998/hermes-formwork/b367b7021eef71ba051b8d585ed49edf807c9a6b/README.md",
      "quote": "Formwork 0.1.0 supports existing AcroForm text fields, multiline text, checkboxes, and supported single-select combo boxes. Text answers are limited to printable ASCII so their exported appearance can be checked. Empty signature widgets are preserved as manual work; Formwork does not sign documents or treat a remaining signature as complete."
    },
    {
      "url": "https://raw.githubusercontent.com/The-Face-Analysis/thefaceanalysis-agent-plugin/207fc7791303594d749a332c9ce90dade0813fc1/README.md",
      "quote": "- Hosted-only connector with no local code. Every tool call, with its arguments, goes to\n  `mcp.thefaceanalysis.com`. No account, key or personal data is needed or stored.\n- All tools are read-only. No shell commands, no background processes, no telemetry\n  from this package.\n- The tool set is served by the remote server at runtime, so it is not covered by a pinned commit."
    },
    {
      "url": "https://raw.githubusercontent.com/Munin-Labs-AI/munin-hermes-plug-in/5fbcc6905b19ab1bd92a3c407f7175287fd61ce4/README.md",
      "quote": "Your `config.yaml` entry and the plugin's `mcp.json` entry share the name `munin`; the config entry wins, including its trust setting. The plugin declares the server as `untrusted` so that any write-capable call asks you first; to keep that behaviour, add `trust: untrusted` to your entry:"
    },
    {
      "url": "https://raw.githubusercontent.com/zkasuran/hermes-gmi-media/6760b29d6f9f93f47cef08702bda876fb10af652/gmi-video/README.md",
      "quote": "Every generation call spends the user's GMI credits with no Hermes approval prompt.\nPrices come live from GMI and are shown as supplied. No total cost is computed.\nPrompts and image URLs go to console.gmicloud.ai. Results are fetched from returned URLs.\nNo telemetry or background processes. No user media files are read outside the Hermes cache."
    },
    {
      "url": "https://raw.githubusercontent.com/seongj-un/hermes-headroom/a98a64bfb20595c2e26d88fb0a90f4205f37db31/README.md",
      "quote": "- Memory a process allocates in the first moments before it is moved (headroom polls every 5 ms)\n  stays charged to Hermes' cgroup. Real installs and builds ramp up over seconds, so in practice\n  this is a few MB.\n- `docker build` / `docker compose up` do their work in the Docker daemon, outside the process\n  tree: those are queued but cannot be capped.\n- Only the local terminal backend is isolated. With Docker, SSH or cloud sandboxes the heavy work\n  runs elsewhere, and only queueing "
    },
    {
      "url": "https://raw.githubusercontent.com/bernardo9999/reframe-proceed/42a869a5ed7072a046dcbb32d33e8aa4b24448a2/README.md",
      "quote": "The plugin stores the text supplied to these tools (vision, plans, check-ins, and reviews) in Hermes-managed plugin storage through `plugin_db(\"reframe-proceed\")`. Hermes scopes plugin storage to the active profile. Records are durable and may remain after the plugin is updated or removed; reinstalling or enabling the plugin can make the same stored records available again."
    },
    {
      "url": "https://raw.githubusercontent.com/digitalmanager-commits/kareverse-mcp/60fd05d9fc6a5230bfd353f28846187382d96add/README.md",
      "quote": "- **Code in this package:** configuration and Markdown only. No Python, binaries, dependencies or self-update code. The tool set is served by the remote server at runtime."
    },
    {
      "url": "https://raw.githubusercontent.com/iamdflame/last-price/0edb99c82cbdaccf4291ab1be7708099d2f290ee/README.md",
      "quote": "Deal chats on Telegram and\nWhatsApp are off until you run `hermes lastprice shop on <platform>`; they are unit-tested, and the live runs so\nfar are the duels and benches."
    },
    {
      "url": "https://raw.githubusercontent.com/aydnOktay/hermes-done-bell-/3fa519a291d91b0e6c44bd42762190363ce80c39/tests/test_bell.py",
      "quote": "def test_needs_you_cycle() -> None:\n    bell_hooks.on_pre_approval_request(platform=\"cli\", session_key=\"s2\")\n    snap = bell_store.snapshot()\n    assert snap[\"needs_you\"] is True\n    assert snap[\"events\"][-1][\"kind\"] == \"needs_you\"\n    bell_hooks.on_post_approval_response(approved=True)\n    assert bell_store.snapshot()[\"needs_you\"] is False\n\n\ndef test_session_end_completed() -> None:\n    bell_hooks.on_session_end(session_id=\"s3\", completed=True,"
    },
    {
      "url": "https://raw.githubusercontent.com/NousResearch/hermes-official-plugins/e7a218f26db88426ab3e7376f0e000b6e356f5e7/homeassistant/tools.py",
      "quote": "    if domain in _BLOCKED_DOMAINS:\n        return tool_error(\n            f\"Service domain '{domain}' is blocked for security. \"\n            f\"Blocked domains: {', '.join(sorted(_BLOCKED_DOMAINS))}\")\n    entity_id = args.get(\"entity_id\")\n    if entity_id and not _ENTITY_ID_RE.fullmatch(entity_id):\n        return tool_error(f\"Invalid entity_id format: {entity_id!r}\")\n    data = args.get(\"data\")\n    if isinstance(data, str):  # XML tool-calling mod"
    },
    {
      "url": "https://raw.githubusercontent.com/mojomast/poptart/42356ddb9eff2eea2419bbd223ee159f353e4632/integration/hermes/bridge.py",
      "quote": "        # Minimal environment: do not inherit host provider keys into the sidecar.\n        env = {key:os.environ[key] for key in ['PATH','HOME','LANG','SystemRoot','WINDIR','TEMP','TMP'] if key in os.environ}\n        env.update(PORT='0', POPTART_TOKEN_FILE=str(token_file),POPTART_DATA_FILE=str(directory/'tracks.json'))\n        # Persist a starting marker first: failed/uncertain startup never silently spawns a second owner.\n        fd = os.open(st"
    },
    {
      "url": "https://raw.githubusercontent.com/ladyFaye1998/hermes-formwork/b367b7021eef71ba051b8d585ed49edf807c9a6b/formwork/store.py",
      "quote": "        if not source_page or _space(quote) not in _space(source_page[\"text\"]):\n            raise PacketError(\"The supporting quote was not found on the cited source page.\")\n        # No semantic or arithmetic inference is trusted merely because a quote exists.\n        if isinstance(value, bool):\n            raise PacketError(\"Checkbox interpretation needs an explicit user answer in this release.\")\n        if not _space(value) or _space(value).ca"
    },
    {
      "url": "https://raw.githubusercontent.com/zkasuran/hermes-gmi-media/6760b29d6f9f93f47cef08702bda876fb10af652/gmi-video/__init__.py",
      "quote": "            result = self.client.run(model_id, payload, 900)\n            url = media_urls(result, \"video\")[0]\n            try:\n                video = str(save_url_video(url, prefix=\"gmi\", headers=None))\n            except Exception:\n                video = url\n            return success_response(video=video, model=model_id, prompt=prompt, provider=self.name,\n                modality=\"image\" if image_url else \"text\", aspect_ratio=aspect_ratio,"
    },
    {
      "url": "https://raw.githubusercontent.com/seongj-un/hermes-headroom/a98a64bfb20595c2e26d88fb0a90f4205f37db31/headroom/guard.py",
      "quote": "        slot, reason, waited = self.pool.acquire(\n            slots, timeout=max(0, s.queue_timeout_s), ready=ready, cancelled=self.interrupted,\n            on_wait=on_wait,\n        )\n        if slot is None:\n            why = self._describe_blocker(reason, slots)\n            self.events.record(\"blocked\", session_id=session_id, command=cls.shorten(command),\n                               reason=why, waited_s=round(waited, 1))\n            return j"
    },
    {
      "url": "https://raw.githubusercontent.com/bernardo9999/reframe-proceed/42a869a5ed7072a046dcbb32d33e8aa4b24448a2/tools.py",
      "quote": "    existing = conn.execute(\n        \"SELECT id FROM records WHERE record_type=? AND period=?\",\n        (record_type, period)\n    ).fetchone()\n\n    if existing:\n        conn.execute(\n            \"\"\"UPDATE records SET payload=?, updated_at=?\n               WHERE id=?\"\"\",\n            (json.dumps(payload, ensure_ascii=False), now, existing[0])\n        )\n        record_id = existing[0]\n    else:\n        cursor = conn.execute(\n            \"\"\"INSERT IN"
    },
    {
      "url": "https://raw.githubusercontent.com/iamdflame/last-price/0edb99c82cbdaccf4291ab1be7708099d2f290ee/last_price/audit.py",
      "quote": "    prices = extract.offered_prices(draft, item.ask, buyer_numbers=neg.said, currency=item.currency, rates=rates,\n                                    base=neg.counter)\n    low = [p for p in prices if p < item.stop - 0.005]\n    decision, sent = \"pass\", draft\n    if low:\n        counter = max(neg.counter, policy.round_up(item.stop, policy.step_of(item.ask)))\n        redo = None\n        if rewrite is not None:\n            try:\n                redo ="
    }
  ]
}