{
  "sources": [
    {
      "url": "https://raw.githubusercontent.com/aydnOktay/hermes-done-bell-/3fa519a291d91b0e6c44bd42762190363ce80c39/README.md",
      "quote": "## 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\n```powershell\nNew-Item -ItemType Directory -Force -Path \"$env:LOCALAPPDATA\\hermes\\desktop-plugins\\done-bell\" | Out-Null"
    },
    {
      "url": "https://raw.githubusercontent.com/aydnOktay/hermes-done-bell-/3fa519a291d91b0e6c44bd42762190363ce80c39/desktop/plugin.js",
      "quote": "function BellWatcher({ ctx }) {\n  const query = useBell(ctx)\n  const busyMap = useValue(host.state.busyBySession) || {}\n  const prevMap = useRef(null)\n  const prevNeeds = useRef(false)\n  const settings = settingsOf(query.data)\n  const needsYou = Boolean(query.data && query.data.needs_you)\n\n  useEffect(() => {\n    const next = busyMap && typeof busyMap === 'object' ? busyMap : {}\n    const prev = prevMap.current\n    prevMap.current = next\n    if (!prev) return"
    },
    {
      "url": "https://raw.githubusercontent.com/NousResearch/hermes-official-plugins/e7a218f26db88426ab3e7376f0e000b6e356f5e7/homeassistant/README.md",
      "quote": "Official [Hermes Agent](https://github.com/NousResearch/hermes-agent) plugin for\n[Home Assistant](https://www.home-assistant.io/). It provides two things:\n\n1. **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\"."
    },
    {
      "url": "https://raw.githubusercontent.com/robberdom/hermes-safeguard/506fa45b9f275da05a2a20e380148d854b76bdbf/tools.py",
      "quote": "        # Broadcast on local node (e.g. Anvil) if unlocked account available\n        tx_hash = None\n        executed = False\n        broadcast = False\n        broadcast_msg = \"Transaction verified and approved for execution; broadcast payload prepared for runtime signer\"\n        if os.getenv(\"SAFEGUARD_AUTO_BROADCAST\", \"true\").lower() in (\"true\", \"1\", \"yes\"):\n            try:\n                accounts = rpc_request(rpc_url, \"eth_accounts\", [], timeout=1.5)"
    },
    {
      "url": "https://raw.githubusercontent.com/robberdom/hermes-safeguard/506fa45b9f275da05a2a20e380148d854b76bdbf/verifier.py",
      "quote": "def ensure_test_rpc_server(host: str = \"127.0.0.1\", port: int = 8545) -> int:\n    \"\"\"Ensure a local mock RPC server is available for testing.\"\"\"\n    global _SHARED_MOCK_SERVER, DEFAULT_RPC_URL\n    with _SHARED_MOCK_SERVER_LOCK:\n        if _SHARED_MOCK_SERVER is not None:\n            active_p = getattr(_SHARED_MOCK_SERVER, \"server_port\", port)\n            active_u = f\"http://{host}:{active_p}\"\n            DEFAULT_RPC_URL = active_u\n            os.environ[\"SAFEGUARD_RPC_URL\"] = active_u"
    },
    {
      "url": "https://raw.githubusercontent.com/mchevatheachiever/hermes-ticklist/464c69a3c2734e4359d8c6159f91eb824deefa66/README.md",
      "quote": "## Privacy and access\n\n- **No network calls.** Nothing leaves the machine except the tick notices in the chat.\n- **Local state only**: `<hermes home>/plugin-data/ticklist/lists.json`, written atomically\n  under a lock so the pane and the agent can't clobber each other.\n- **Limits**: 240 characters per item, 200 per list name, 2,000 items per list, 50 lists.\n  Every row is drawn, so a list of a couple of thousand will feel heavy — fine in the\n  hundreds."
    },
    {
      "url": "https://raw.githubusercontent.com/mchevatheachiever/hermes-ticklist/464c69a3c2734e4359d8c6159f91eb824deefa66/core.py",
      "quote": "    def _locked(self) -> Iterator[None]:\n        self.root.mkdir(parents=True, exist_ok=True)\n        handle = open(self.lock_path, \"a+\")\n        try:\n            if fcntl is not None:\n                fcntl.flock(handle.fileno(), fcntl.LOCK_EX)\n            yield\n        finally:\n            try:\n                if fcntl is not None:\n                    fcntl.flock(handle.fileno(), fcntl.LOCK_UN)\n            finally:\n                handle.close()\n\n    def read(self) -> dict[str, Any]:"
    },
    {
      "url": "https://raw.githubusercontent.com/jimmyplup/hermes-synap-provider/a0d29b658853760fc21e87f48b48cbe44ef58ee9/synap/__init__.py",
      "quote": "synap = ProviderProfile(\n    name=\"synap\",\n    aliases=(\"synap402\", \"linkrra\"),\n    display_name=\"Synap\",\n    description=\"Synap — OpenAI-compatible hosted inference\",\n    signup_url=\"https://synap402.com\",\n    env_vars=(\"SYNAP_API_KEY\",),\n    base_url=\"https://synap402.com/v1\",\n    models_url=\"https://synap402.com/v1/models\",\n    auth_type=\"api_key\",\n    default_aux_model=\"gpt-oss-20b\",\n    fallback_models=SYNAP_MODELS,\n)\n\nregister_provider(synap)\n"
    },
    {
      "url": "https://raw.githubusercontent.com/jimmyplup/hermes-synap-provider/a0d29b658853760fc21e87f48b48cbe44ef58ee9/synap/plugin.yaml",
      "quote": "name: synap\nkind: model-provider\nversion: 1.0.0\ndescription: Synap — OpenAI-compatible hosted inference\nauthor: Linkrra\nrequires_hermes: \">=0.22.0\"\n"
    },
    {
      "url": "https://raw.githubusercontent.com/Luecria/hermes-audit-lens/2ef43ce0ee666e87e3046ddd01599f3124b47703/audit.py",
      "quote": "def check_delegatecall(funcs: list[Function], cleaned: str,\n                       source: str) -> list[Finding]:\n    out: list[Finding] = []\n    for m in re.finditer(r\"\\.\\s*delegatecall\\s*\\(\", cleaned):\n        arg_start = m.end()\n        depth = 1\n        i = arg_start\n        while i < len(cleaned) and depth > 0:\n            if cleaned[i] == \"(\":\n                depth += 1\n            elif cleaned[i] == \")\":\n                depth -= 1\n            i += 1"
    },
    {
      "url": "https://raw.githubusercontent.com/Luecria/hermes-audit-lens/2ef43ce0ee666e87e3046ddd01599f3124b47703/sourcify.py",
      "quote": "    # Contract name: the first source whose path ends with the contract name,\n    # else the largest source file.\n    sol_sources = {p: s for p, s in sources.items() if p.endswith(\".sol\")}\n    if not sol_sources:\n        sol_sources = sources\n    main_path = max(sol_sources, key=lambda p: len((sol_sources[p] or {}).get(\"content\", \"\")))\n    contract_name = main_path.rsplit(\"/\", 1)[-1].replace(\".sol\", \"\")\n    return {\n        \"contract_name\": contract_name,\n        \"match\": match,"
    },
    {
      "url": "https://raw.githubusercontent.com/wadezigh96/rariflat-hermes/c5d6fba59c85eddfe75e2d890dfd0bc678060aa6/__init__.py",
      "quote": "def _rank_tools(task: str, tools: dict[str, dict]) -> list[dict]:\n    \"\"\"Rank tools using measurable task fit, reliability, usage rarity and restraint.\"\"\"\n    task_tokens = _tokens(task)\n    ranked = []\n    for name, data in tools.items():\n        learned = set(data.get(\"tokens\", [])) | _tokens(name)\n        overlap = len(task_tokens & learned)\n        match = (overlap / max(1, len(task_tokens))) * 100 if task_tokens else 0.0\n        uses = max(0, int(data.get(\"uses\", 0)))"
    },
    {
      "url": "https://raw.githubusercontent.com/buildngrowsv/genflick-hermes/c00b13ebdd9ecf3f9a25e451cb9d155bc50e725f/README.md",
      "quote": "**Hermes v0.23.1 requires one native OAuth configuration step.** The portable `mcp.json` entry does not carry an OAuth auth method, and `hermes mcp login` reads native `mcp_servers` configuration. The portable package alone therefore does not complete sign-in.\n"
    },
    {
      "url": "https://raw.githubusercontent.com/wavegrain/wavegrain-mcp/d5fbe25c4d47a46f85afcae137acf6d763f79647/README.md",
      "quote": "This repo holds the setup files, a plugin for Claude Code and an agent skill.\nThe server itself is hosted by Wavegrain; there is nothing to install or run.\n\n## Server\n\n| | |\n| --- | --- |\n| Address | `https://wavegrain.com/api/mcp` |\n| Transport | Streamable HTTP |"
    },
    {
      "url": "https://raw.githubusercontent.com/wavegrain/wavegrain-mcp/d5fbe25c4d47a46f85afcae137acf6d763f79647/mcp.json",
      "quote": "{\n  \"$schema\": \"https://agent-plugins.org/schemas/1.0.0/mcp.schema.json\",\n  \"mcpServers\": {\n    \"wavegrain\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https://wavegrain.com/api/mcp\"\n    }\n  }\n}\n"
    },
    {
      "url": "https://raw.githubusercontent.com/aligundogar/hermes-9router/4ab5030369f20a332ca03819b145c5c303ccb6b9/dashboard/plugin_api.py",
      "quote": "def run_group_test(group: str) -> dict[str, Any]:\n    status = build_status()\n    row = next((item for item in status[\"groups\"] if item[\"name\"] == group), None)\n    if row is None:\n        raise HTTPException(status_code=404, detail=\"Unknown group\")\n    models = sorted(row[\"models\"], key=lambda item: item.get(\"checked_at\") or 0)[:MAX_TEST_MODELS]\n    ids = [item[\"id\"] for item in models]\n    settings = _settings()\n    key = _secret(\"NINE_ROUTER_API_KEY\")"
    },
    {
      "url": "https://raw.githubusercontent.com/quotumorg/rh-preflight/594a01f54de46691c1903589fa988dd347ff11ff/rh_preflight/hooks.py",
      "quote": "            if decision.action == \"ask\":\n                # Hermes calls this directive 'approve'; it REQUESTS a human decision.\n                # A unique key prevents a previous session/always answer bypassing a new check.\n                return {\"action\": \"approve\", \"message\": message, \"rule_key\": f\"rh-preflight:{check_id}\"}\n            if decision.action == \"block\":\n                return {\"action\": \"block\", \"message\": message}\n            return None\n        except Exception:"
    },
    {
      "url": "https://raw.githubusercontent.com/quotumorg/rh-preflight/594a01f54de46691c1903589fa988dd347ff11ff/README.md",
      "quote": "The approval adapter in `rh_preflight/runtime.py` reads four private host helpers: `tools.approval.is_approval_bypass_active`, `tools.approval._presence`, and `tools.approval_context._is_cron_approval_context` / `_is_single_query_approval_context`. Hermes 0.23.0 has no documented combined presence query. These imports can change on later releases; the plugin treats an unreadable context as unattended and blocks detected actions in ask modes unless you explicitly allow unattended operat"
    },
    {
      "url": "https://raw.githubusercontent.com/invisiblemonsters/proof-lens/64c913e8489e8dcf2ee4d84e5a1e85cbd6a8b2c8/src/core.js",
      "quote": "  return {\n    valid: valid && accepted > 0 && hasEmpty,\n    accepted,\n    totalSteps: trace.steps.length,\n    maxDepth,\n    emptyDepth,\n    histogram,\n    elapsedMs: Date.now() - t0,\n    failedAt,\n    failedClause,\n    capped,\n    deletions: trace.deletions,\n    comments: trace.comments,\n    cnf: { vars: nv, clauses: clauses.length },\n    derivedWithEmpty: emptyDepth\n  }\n}\n"
    },
    {
      "url": "https://raw.githubusercontent.com/invisiblemonsters/proof-lens/64c913e8489e8dcf2ee4d84e5a1e85cbd6a8b2c8/test/test_core.mjs",
      "quote": "import fs from 'node:fs'\nimport { verifyTrace } from '../src/core.js'\n\nconst cnf = process.argv[2]\nconst drat = process.argv[3]\nif (!cnf || !drat) {\n  console.error('usage: node test/test_core.mjs <file.cnf> <file.drat>')\n  process.exit(2)\n}\nconst cnfText = fs.readFileSync(cnf, 'utf8')\nconst dratText = fs.readFileSync(drat, 'utf8')\nconst t0 = Date.now()\nconst r = verifyTrace(cnfText, dratText, { maxAdditions: Number(process.env.CAP || 300000) })\nconsole.log(JSON.stringify({"
    }
  ]
}
