{
  "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/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/nicoarias81/leash/f3bf4f4dc3b4300aef0fabdaf5b08bd77bb63c9a/README.md",
      "quote": "- The engine's `leash_login` stores session tokens locally at\n  `$HERMES_HOME/plugin-data/leash/identities.json` (plaintext, same trust\n  boundary as the profile's own config). They never enter the model context.\n- `pre_tool_call` sees the arguments of monitored tools; arguments may contain\n  user content or secrets. Excerpts (first 600 chars) are stored **locally**\n  under `$HERMES_HOME/plugin-data/leash/` and are never sent anywhere."
    },
    {
      "url": "https://raw.githubusercontent.com/PinnacleCryptNG/doubt/4b35c4b296f50fd2184be4faf80bc90e8e3e9862/README.md",
      "quote": "## Limits\n\n- Scores are only kept when `model.streaming` is `false`.\n- Providers don't return logprobs on tool-call turns. That's why the guard re-derives the arguments.\n- Some models score themselves near-100% sure of everything. Doubt is only as honest as the model's\n  probabilities. GLM-5.3 and Hermes 4 were informative in testing. Small free models were not.\n\n## Development\n\n```bash\npython3 -m venv .venv && .venv/bin/pip install \"pytest>=8,<9\""
    },
    {
      "url": "https://raw.githubusercontent.com/InitechSoftware/whatsapp-mcp-by-timelinesai/288f85e9c162c6ac9b9fc0054d41a995f4776020/plugins/timelinesai-hermes/README.md",
      "quote": "## Disclosure\n\n- Hosted connector: every tool call goes to `mcp.services.timelines.ai`, operated by TimelinesAI.\n- Reads and, on request, sends WhatsApp messages for the account you sign in with.\n- Credentials: OAuth tokens are stored by Hermes; none are in this package.\n- No telemetry in the package. The tool set is served remotely and is not covered by the pinned commit.\n- The package marks the server `untrusted`, so Hermes asks before tool calls run."
    },
    {
      "url": "https://raw.githubusercontent.com/remoet-labs/agent-skills/3e153fdadc552265f6281d80c319e7e959287bfb/hermes-plugin/README.md",
      "quote": "The sign-in writes a `remoet` entry to `~/.hermes/config.yaml`, which replaces the plugin's own entry. Hermes stores and refreshes the OAuth tokens. After sign-in, Hermes runs write tools, `apply_to_job` included, without asking, unless you add `trust: untrusted` to that entry:\n\n```yaml\nmcp_servers:\n  remoet:\n    trust: untrusted\n```\n\n## What it connects to and what it does\n"
    },
    {
      "url": "https://raw.githubusercontent.com/mintymac/decision-forge/d9aa33d261092db0cd4837e5d1ceed45273404e8/README.md",
      "quote": "### 1. Native Agent Tools (`decision_route` & `decision_brief`)\n- **`decision_route(state, engine=\"rules\")`**\n  Classifies response intent across the 7 routes using conservative contrastive cues (returning `null` when ambiguous so the agent uses judgment). Includes an optional `--engine laya` adapter for the local open-weight `convaiinnovations/laya` System One classifier (27/28 accuracy on the bundled benchmark)."
    },
    {
      "url": "https://raw.githubusercontent.com/V1rgul/hermes-plugin-t3sidebar/5989b1d88ff6061204df2d0807363f69ae576c56/README.md",
      "quote": "- **Reads outside its own data:** Hermes `state.db` and `projects.db` (read-only), Hermes's credential pool via `read_credential_pool`, and Claude Code's `.credentials.json` (fallback only)."
    },
    {
      "url": "https://raw.githubusercontent.com/trenthalden/vibe-relay/aac27eea07fea6fe7ffa9767b53be811559ffa04/README.md",
      "quote": "## Tools / commands\n\n| Surface | Name | Role |\n|---|---|---|\n| Delegation backend | `vibe-relay` | `lane` auto\\|self\\|executor; requires `allowed` + `gate` |\n| Tool | `vibe_accept` | Changed paths ⊆ allowed + fresh gate PASS → ACCEPT/REJECT |\n| Tool | `df_init` / `df_check` / `df_nav` | Vendored DEV Framework (df_check returns a terminal command) |\n| Slash | `/vibe` | Quota, mode, last gate, pending park |"
    },
    {
      "url": "https://raw.githubusercontent.com/nevpit/ghostwriter/90a9f5364e681ad2fd4ff4dcf953f37a768420d2/README.md",
      "quote": "- **Safe revisions.** Every change is an immutable revision; undo and restore\n  never delete anything. Model edits go through *proposals* that are checked\n  (Fountain parse, protected passages, allowed speakers, page/speech limits)\n  and can be reviewed before they are accepted — or applied immediately and\n  undone later. Concurrent edits from the chat and the editor never silently\n  overwrite each other."
    },
    {
      "url": "https://raw.githubusercontent.com/ShawnCRMer/hermes-pugin/4cb5692d424f317f5e1b9c92eae9f65cf212a16f/README.md",
      "quote": "- **Reads only.** The Desktop half asks Hermes for the focused chat's subagents, processes and pending approvals every 4 seconds while Desktop is open. The server half has one read-only route, `GET /api/plugins/pugin/linked-work`, which opens Hermes's Kanban board databases read-only to find cards that belong to that chat.\n- **One action.** The **Stop** button calls Hermes's own interrupt for a subagent or kill for a background process, only when you click it and confirm."
    },
    {
      "url": "https://raw.githubusercontent.com/yucode-kk/dsh-pet/ea058fcac75289abda09c1335ec830a6c2b9926e/hermes/README.md",
      "quote": "- Catalog installs fetch a pinned runtime on first start. It is **not**\n  `npm install dsh-pet@0.4.7`: the plugin ships a lockfile (`hermes/runtime-lock/`,\n  `lockfileVersion` 3) pinning `dsh-pet@0.4.7` plus all 98 transitive packages to exact\n  versions with `sha512` integrities resolved from `registry.npmjs.org`, and installs it with\n  `npm ci --omit=dev --ignore-scripts --no-audit --no-fund` into"
    },
    {
      "url": "https://raw.githubusercontent.com/aydnOktay/hermes-done-bell-/3fa519a291d91b0e6c44bd42762190363ce80c39/tests/test_bell.py",
      "quote": "def test_cli_notify_gate() -> None:\n    bell_store.patch_settings({\"muted\": True, \"os_notify\": True})\n    assert bell_store.should_os_notify_cli(\"cli\") is False\n    bell_store.patch_settings({\"muted\": False, \"os_notify\": True})\n    assert bell_store.should_os_notify_cli(\"cli\") is True\n    assert bell_store.should_os_notify_cli(\"gateway\") is False\n    assert bell_store.should_os_notify_cli(\"desktop\") is False\n\n\nif __name__ == \"__main__\":\n    test_defaults()"
    },
    {
      "url": "https://raw.githubusercontent.com/NousResearch/hermes-official-plugins/e7a218f26db88426ab3e7376f0e000b6e356f5e7/homeassistant/tools.py",
      "quote": "def _get_config():\n    \"\"\"Return the active profile's Home Assistant URL and token; raise ValueError on a URL without a scheme.\"\"\"\n    hass_url = (get_secret(\"HASS_URL\", \"http://homeassistant.local:8123\") or \"\").rstrip(\"/\")\n    if problem := url_scheme_problem(hass_url):\n        raise ValueError(problem)\n    return hass_url, (get_secret(\"HASS_TOKEN\", \"\") or \"\").strip()\n\n\ndef _get_entity_filter_config():"
    },
    {
      "url": "https://raw.githubusercontent.com/nicoarias81/leash/f3bf4f4dc3b4300aef0fabdaf5b08bd77bb63c9a/leash_engine.py",
      "quote": "def _load_identities() -> dict:\n    p = _identities_path()\n    if os.path.isfile(p):\n        try:\n            with open(p, \"r\", encoding=\"utf-8\") as fh:\n                return json.load(fh)\n        except (OSError, json.JSONDecodeError):\n            pass\n    return {}\n\n\ndef _save_identities(idents: dict) -> None:\n    with open(_identities_path(), \"w\", encoding=\"utf-8\") as fh:\n        json.dump(idents, fh, indent=1)\n\n\ndef _session_headers(ident: dict) -> dict:\n    hdrs = {}"
    },
    {
      "url": "https://raw.githubusercontent.com/PinnacleCryptNG/doubt/4b35c4b296f50fd2184be4faf80bc90e8e3e9862/__init__.py",
      "quote": "        if not key:\n            log.info(\"doubt: no scorer key; guard skipped\")\n            return None\n        model = self.cfg(\"scorer_model\") or ctx[\"model\"]\n        try:\n            tokens = scorer.probe(ctx[\"messages\"], tool, field, base_url=base_url, api_key=key, model=model)\n        except Exception as exc:\n            log.warning(\"doubt: probe failed: %s\", exc)\n            return None\n        if not tokens:\n            return None"
    },
    {
      "url": "https://raw.githubusercontent.com/V1rgul/hermes-plugin-t3sidebar/5989b1d88ff6061204df2d0807363f69ae576c56/usage_limits.py",
      "quote": "def _claude_code_login(clock=time.time):\n\t\"\"\"Claude Code's OAuth login on this host as {token, expired}, or None. Read-only: honours CLAUDE_CONFIG_DIR like the CLI; refreshing is left to Hermes.\"\"\"\n\tconfig = os.environ.get(\"CLAUDE_CONFIG_DIR\", \"\").strip()\n\tpath = (Path(config).expanduser() if config else Path.home() / \".claude\") / \".credentials.json\"\n\ttry:\n\t\tentry = json.loads(path.read_text(encoding=\"utf-8-sig\")).get(\"claudeAiOauth\")\n\texcept (OSError, ValueError, AttributeError):"
    },
    {
      "url": "https://raw.githubusercontent.com/trenthalden/vibe-relay/aac27eea07fea6fe7ffa9767b53be811559ffa04/acceptance.py",
      "quote": "def working_tree_hash(cwd: Optional[str] = None) -> str:\n    \"\"\"Stable hash of porcelain status + diff (read-only).\"\"\"\n    root = _cwd(cwd)\n    chunks: List[bytes] = []\n    for args in (\n        [\"git\", \"status\", \"--porcelain=v1\", \"-uall\"],\n        [\"git\", \"diff\", \"HEAD\"],\n        [\"git\", \"ls-files\", \"--others\", \"--exclude-standard\"],\n    ):\n        try:\n            run = subprocess.run(\n                args, cwd=str(root), capture_output=True, timeout=30, check=False,\n            )"
    },
    {
      "url": "https://raw.githubusercontent.com/nevpit/ghostwriter/90a9f5364e681ad2fd4ff4dcf953f37a768420d2/screenplay/service.py",
      "quote": "        ``expected_active`` is a compare-and-swap guard on the project's active\n        revision pointer, so two writers (agent + desktop, possibly in different\n        processes) can never silently overwrite each other.\"\"\"\n        if scenes is None:\n            scenes = self._engine(project=project).parse(snapshot)[0]\n        rev = M.Revision(id=M.new_id(\"rev\"), project_id=project.id, parent_id=parent_id,"
    },
    {
      "url": "https://raw.githubusercontent.com/ShawnCRMer/hermes-pugin/4cb5692d424f317f5e1b9c92eae9f65cf212a16f/dashboard/plugin_api.py",
      "quote": "            conn = sqlite3.connect(f\"file:{db}?mode=ro\", uri=True, timeout=1.0)\n        except sqlite3.Error:\n            unreadable.append(slug)\n            continue\n        try:\n            cols = {row[1] for row in conn.execute(\"PRAGMA table_info(tasks)\")}\n            if \"session_id\" not in cols:\n                continue  # board predates provenance; nothing can be linked\n            extra = [c if c in cols else \"NULL\" for c in OPTIONAL]"
    }
  ]
}
