{
  "sources": [
    {
      "url": "https://gist.githubusercontent.com/gtmcknight/594c47336546c8763e641b46cf9af4ec/raw/field.json",
      "quote": "done-bell\",\"repo\":\"https://github.com/aydnOktay/hermes-done-bell-\",\"sha\":\"3fa519a291d91b0e6c44bd42762190363ce80c39\",\"subdir\":\"\"},{\"name\":\"homeassistant\",\"repo\":\"https://github.com/NousResearch/hermes-"
    },
    {
      "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."
    },
    {
      "url": "https://raw.githubusercontent.com/aydnOktay/hermes-done-bell-/3fa519a291d91b0e6c44bd42762190363ce80c39/README.md",
      "quote": "## Install (dev)"
    },
    {
      "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`), withou"
    },
    {
      "url": "https://raw.githubusercontent.com/ericklindberg/lookahead/4ba97988a76e49e60a037901f05063ae03828974/README.md",
      "quote": "**Do not rely on Lookahead to catch every same-day plan.** In 15 native MiniMax-M2.7\ntrials of one fictional meeting sentence, capture succeeded **3/5** at +4 minutes,\n**1/5** at +30 minutes and **5/5** for tomorrow 09:30. All six misses were valid\nempty item lists. The prompt already includes the observation clock and timezone;\nit has no same-day exclusion. We found no clear defect and made no post-holdout\nextraction tune. These tiny operational samples are not a g"
    },
    {
      "url": "https://raw.githubusercontent.com/hejijunhao/whiplash/3f4f883346167dfcb31e06d0fc5ac3cf57e0f1dd/README.md",
      "quote": "The timing lives in the plugin, not the model. Hermes makes one validated tool call (\"ramp the cutoff over 8 bars\"); Whiplash's sequencer does the musical part on its own MIDI clock, so sweeps stay smooth and switches land on the one however long the model takes to answer."
    },
    {
      "url": "https://raw.githubusercontent.com/Dgardenhire/hermes-imprint/a8ce37bc2f62e0c1d287a36b836a227eef243747/README.md",
      "quote": "- **Numbers are checked.** After the model has written, code matches every number and quoted phrase against the\n  passages it cites. A number that is not in your sources is flagged, and Export waits until you fix it, have your\n  model fix it, or keep it on purpose. Hover a number to see the source sentence with the number marked. The check\n  shows that a number appears in your sources. It cannot tell you whether the source is right. It checks numbers and\n  quotes, not claims "
    },
    {
      "url": "https://raw.githubusercontent.com/CyStrat-Services-GmbH/hermes-agentic-soc/03bdbbcb21052d2409ebc595a270c28157667b30/README.md",
      "quote": "| Technology coverage | 25 skills and inactive MCP descriptors | **0 verified live remote connectors** |"
    },
    {
      "url": "https://raw.githubusercontent.com/PedValme/foreman/c15453cb2fc07fa674d6f7b548a553b3ce9e6f5d/plugin/README.md",
      "quote": "### When Foreman asks a person instead of blocking"
    },
    {
      "url": "https://raw.githubusercontent.com/vijaygopalbalasa/hermes-necromancer/0ff7bec40aba10091a84f94025d4471984fd7386/README.md",
      "quote": "- **The gate (`pre_verify`).** When Hermes edited code and is about to answer, the plugin runs the frozen contracts\n  within a time budget (25 s by default, under Hermes's 30 s hook limit) and returns `continue` with the failing\n  contracts and the end of their output. Hermes caps this at `agent.max_verify_nudges` (3 by default).\n- **The stamp (`transform_llm_output`).** Hermes keeps the gate's note to the agent out of the chat, so the final\n  reply says what happen"
    },
    {
      "url": "https://raw.githubusercontent.com/Pratiikpy/workroom-for-hermes/c5f6bf334c1163951e203dc7c5777faadfe49795/README.md",
      "quote": "- **A document engine** that patches only the parts of an Office file that must change and leaves every other part byte-identical.\n- **A Desktop panel** (Needs you, Made, Room, Rules) where you review, compare and approve, plus `/workroom-approve` from a messaging app.\n- **A signed record** of each release, which can be embedded in the file and checked in any browser without a server."
    },
    {
      "url": "https://raw.githubusercontent.com/Agozie180/andreed/c2338b38f22bff8fbeb72d94fd5da3e6bee0d832/README.md",
      "quote": "The live verification was deliberately read-only. Mutating tools are tested\nthrough the fake ADB transport and still require a fresh Hermes approval on a\nreal phone."
    },
    {
      "url": "https://raw.githubusercontent.com/daji-dev/mem-diffs/e6b424c1ca1b0249fd06a4c002a5971da7f76198/README.md",
      "quote": "MemDiffs makes changes to persistent model context (Memory, Skills, Self-improvement review) viewable as diffs each time they are written. \nThis is done by using the middleware SDK to capture persistent context files before the existing tools write them, and then add the diffs to those tool results for display. \nThe added fields are stripped from requests to the conversational model to avoid polluting context, though compaction still sees them."
    },
    {
      "url": "https://raw.githubusercontent.com/100yenadmin/hermes-personal-assistant/68016ef7e3558e3c60ce05fd16a5439cdbfc906d/README.md",
      "quote": "  - on a session's first turn, owner memory not yet in your files: active preferences and people (name, relationship, channel and rules; sensitive people by name only), plus forgotten entries still in your files, marked do-not-use. This happens on the first turn of any session in a chat Hermes lets the agent answer, so in a shared chat it can be another person's turn;\n  - a note asking the agent to save a stated preference or correction in PA's owner memory instead of Hermes memory."
    },
    {
      "url": "https://raw.githubusercontent.com/ericklindberg/lookahead/4ba97988a76e49e60a037901f05063ae03828974/runner.py",
      "quote": "adapter = IcsSource(ics_path=ctx.get_config('ics_path'), ics_url=ctx.get_config('ics_url'),\n                            timezone=config.timezone, horizon_hours=config.horizon_hours,\n                            freshness_hours=ctx.get_config('ics_freshness_hours', 24),\n                            timeout=ctx.get_config('ics_timeout_seconds', 5))\n        status.update(adapter.status)\n        snapshot = adapte"
    },
    {
      "url": "https://raw.githubusercontent.com/hejijunhao/whiplash/3f4f883346167dfcb31e06d0fc5ac3cf57e0f1dd/engine.py",
      "quote": "    def send(self, msg):\n        if msg.type not in ALLOWED_TYPES:\n            raise WhiplashError(f\"refusing to send {msg.type} (Whiplash never sends SysEx/program changes)\")\n        with self._lock:\n            if self._port is None:\n                raise WhiplashError(\"no MIDI port open\")\n            try:\n                self._port.send(msg)\n            except Exception:\n             "
    },
    {
      "url": "https://raw.githubusercontent.com/Dgardenhire/hermes-imprint/a8ce37bc2f62e0c1d287a36b836a227eef243747/tests/test_security_audit.py",
      "quote": "    def test_a_real_gzip_bomb_never_inflates_past_the_cap(self):\n        bomb = gzip_bomb(200)  # about 200 KB on the wire, 200 MB inflated\n        ingest._client_factory = mock(lambda req: answer(200, bomb, {\n            \"content-encoding\": \"gzip\", \"content-type\": \"text/html\"}))\n        tracemalloc.start()\n        try:\n            with self.assertRaises(ingest.Refused) as cm:\n                run(ingest.fetch(\"https://example.org/\", max_bytes=2 * 1024 * 1024))\n            _cur, peak = "
    },
    {
      "url": "https://raw.githubusercontent.com/Agozie180/andreed/c2338b38f22bff8fbeb72d94fd5da3e6bee0d832/__init__.py",
      "quote": "    completed = subprocess.run(\n        argv,\n        capture_output=True,\n        text=True,\n        encoding=\"utf-8\",\n        errors=\"replace\",\n        timeout=timeout,\n        check=False,\n        shell=False,\n    )\n    if len(completed.stdout or \"\") > OUTPUT_LIMIT or len(completed.stderr or \"\") > OUTPUT_LIMIT:\n        raise AndreedError(\"ADB returned too much output; refusing to process it.\")\n    return completed"
    },
    {
      "url": "https://raw.githubusercontent.com/daji-dev/mem-diffs/e6b424c1ca1b0249fd06a4c002a5971da7f76198/tests/test_smoke.py",
      "quote": "    def test_receipts_do_not_cross_scope_or_survive_deletion(self):\n        result, _ = self.save_memory()\n        receipt_id = json.loads(result)[\"mem_diff\"]\n        self.assertEqual(self.backend.api_detail(receipt_id, \"other-chat\")[0], 404)\n        with tempfile.TemporaryDirectory(prefix=\"memdiffs-other-\") as other:\n            token = set_hermes_home_override(Path(other))\n            try:\n                self.assertEqual(self.backend.api_detail(receipt_id, \"chat\")[0], 404)\n         "
    },
    {
      "url": "https://raw.githubusercontent.com/Pratiikpy/workroom-for-hermes/c5f6bf334c1163951e203dc7c5777faadfe49795/docs/LIMITS.md",
      "quote": "- The agent's file-write tools are blocked on Office files inside registered projects; a shell command that looks like it writes one is sent to your approval prompt (a heuristic that a determined script can evade, and in an auto-approve mode the prompt answers itself: a real model told to skip Workroom saved a deck directly from a Python script that way). Under that, a safety net remembers the files of every registered project before a shell or code tool runs. If a managed Office file "
    }
  ]
}