{
  "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/kailashrajh/hermes-mdvault/46de6b47ab0772a7a6566f362304c41e1768fa6b/README.md",
      "quote": "- **Lexical, not semantic.** It matches words, not meanings. A note that says \"car\" will not\n  surface for \"automobile\". This is the price of zero dependencies and zero network; in practice,\n  a well-tagged vault more than compensates.\n- **Lexical storage in memory** caps at `max_notes` (5,000 by default) and 1 MB per note.\n- **No PDFs, images or OCR** — Markdown only.\n- **One provider at a time**, per Hermes's memory architecture.\n"
    },
    {
      "url": "https://raw.githubusercontent.com/Mxhi-04/Hermes-netscope/bd720baeb4c5fde2b39f6d869e7fa4d284442d3d/README.md",
      "quote": "- **Finite resources.** Defaults: 256 MiB file size, 2,000,000 packets, and a 30-second **reader** budget. This is not an end-to-end timeout or a constant-memory parser; memory grows with packets, hosts, and flows. The graph shows at most 300 hosts."
    },
    {
      "url": "https://raw.githubusercontent.com/Stormxftw/Pulsr/92ed7690dec17605c83e3c287ca96c473c18a88e/README.md",
      "quote": "**Live numbers beside your chat.** Pulsr adds a **Pulses** pane to Hermes\nDesktop: small rings, bars, numbers and trend lines that keep themselves up to date\nfrom Discord servers, GitHub, blog and release feeds, public JSON APIs, read-only\nMCP tools, Windows notifications and Hermes's own activity.\n\n- **Ask in plain words.** \"Keep an eye on catalog PRs in NousResearch/hermes-agent.\"\n  Hermes drafts the pulse. It cannot turn it on."
    },
    {
      "url": "https://raw.githubusercontent.com/KeyArgo/hermes-omniscience/38ea8c249698235836a0aa3f35c480f2d87c93fa/README.md",
      "quote": "Omniscience keeps metadata only: names, timings, sizes and statuses. It does not store prompts, commands, arguments or outputs. The few short free-text fields it keeps, such as an error reason, are truncated and run through pattern-based redaction for keys, tokens, passwords in URLs, email addresses and JWTs. Pattern matching can miss an unusual secret, so do not rely on it as your only protection. The viewer binds to loopback with no write endpoints.\n"
    },
    {
      "url": "https://raw.githubusercontent.com/desaianm/jobby-hermes/3b8c62670c138078e85c839f08f24a6a81213254/README.md",
      "quote": "Discovery requests Indeed and LinkedIn through JobSpy. Real Indeed results have been observed in native acceptance; independent LinkedIn success is not established. Provider availability and result completeness can vary. Source dates may be unknown, freshness is a provider filter, and aggregator salaries require employer verification. Approved public role/skill terms are used as queries; resume text and employer history are not sent as search terms.\n"
    },
    {
      "url": "https://raw.githubusercontent.com/buttercode101/smart-automation/52c77d609cd52ab3df0b6b6652240c35feca5aaa/README.md",
      "quote": "**Manual chain-runner design (honest):** There is no cron-completion hook in Hermes. Chains advance **only** when `orchestrator_trigger_chain` is called after verified success. `post_tool_call` is observer-only.\n\n## Tools\n- `orchestrator_create` — create a chain + steps (cycle detection)\n- `orchestrator_status` — list jobs / status\n- `orchestrator_graph` — nodes + edges for rendering"
    },
    {
      "url": "https://raw.githubusercontent.com/nyarenari/project-feed-plugins/8f4b72df1bea00f96f1798a66c98e99a1a302418/README.md",
      "quote": "Hermes signs in to remote MCP servers only when the server entry asks for OAuth, so add this to `~/.hermes/config.yaml`:\n\n```yaml\nmcp_servers:\n  Project Feed:\n    url: https://projectfeed.app/api/mcp\n    auth: oauth\n    trust: untrusted\n```\n\nRun `hermes mcp login \"Project Feed\"`, or start Hermes and approve the sign-in in your browser. `trust: untrusted` makes Hermes ask before tools that change data. Read-only tools run without a prompt.\n"
    },
    {
      "url": "https://raw.githubusercontent.com/arjunbagga-xyz/hermes-ghostbox/1a619268951f68bbaa1218e2f5678f8f8bc6cd5c/README.md",
      "quote": "**Ghost-Box** eliminates execution risk and developer confirmation fatigue for autonomous agents in Hermes.\n\nInstead of running irreversible commands (`bash`, `write_file`, database scripts) directly on your live workspace, Ghost-Box intercepts mutating actions, speculatively runs them in an ephemeral detached Git worktree with an isolated hermetic environment, and computes a cryptographic blast-radius report.\n"
    },
    {
      "url": "https://raw.githubusercontent.com/jinsu133/hermes-phone-assistant/7165a9d388744953add55aea9d9d97609a233826/README.md",
      "quote": "**The source-only preview does not include the Gradle wrapper JAR, Android AAR, wake models, Vosk model, or PCM test fixtures.** A plain checkout cannot build or run all tests until the verified upstream dependencies have been obtained separately and placed at the expected paths. The checksums and upstream sources in `android/ASSET-CHECKSUMS.md` identify the omitted files; they do not resolve redistribution licenses. No binary dependency or model is published in this preview."
    },
    {
      "url": "https://raw.githubusercontent.com/neekimyong/hermes-lang-tr/011de999a62555373876a1ca0fd30b3be0b290b4/README.md",
      "quote": "Hermes bundles Turkish for the CLI and messaging gateway (`locales/tr.yaml`) and\nfor the TUI (`locales/tr.tui.yaml`), but the Desktop app has no bundled Turkish\ncatalog. This pack ships all three surfaces: it fills the Desktop gap and\noverrides the bundled Turkish wording where the community translation differs.\n\nIt is a text-only language pack: three YAML files, a `plugin.yaml`, and an\n`__init__.py` whose `register()` does nothing (see below). The Hermes backend"
    },
    {
      "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, interrupted=False, platform=\"cli\")"
    },
    {
      "url": "https://raw.githubusercontent.com/Stormxftw/Pulsr/92ed7690dec17605c83e3c287ca96c473c18a88e/pulse_rings/mcp_access.py",
      "quote": "Prefer ctx.tool_info if a host supplies it. Hermes 0.22.7 has no public annotation\nAPI: the isolated fallback reads discovery's hint/cost metadata only.\nSee README rule-9 disclosure and submission/UPSTREAM-ISSUE-mcp-readonly.md.\n\"\"\"\n# Compatibility exceptions (Hermes 0.22.7 has no public equivalents):\n# - _tool_is_read_only: discovered annotations are stripped from public schemas."
    },
    {
      "url": "https://raw.githubusercontent.com/KeyArgo/hermes-omniscience/38ea8c249698235836a0aa3f35c480f2d87c93fa/store.py",
      "quote": "class EventStore:\n    def __init__(self, db_path, queue_max=10000, batch_max=500, flush_interval=0.25):\n        self.db_path = str(db_path)\n        self.queue_max = int(queue_max)\n        self.batch_max = int(batch_max)\n        self.flush_interval = float(flush_interval)\n        self.boot_id = uuid.uuid4().hex\n\n        parent = os.path.dirname(os.path.abspath(self.db_path))\n        if parent:\n            os.makedirs(parent, exist_ok=True)\n"
    },
    {
      "url": "https://raw.githubusercontent.com/buttercode101/smart-automation/52c77d609cd52ab3df0b6b6652240c35feca5aaa/__init__.py",
      "quote": "if row[\"calendar_rule\"] and args.get(\"after_iso\"):\n            free, warn = has_free_slot(row[\"calendar_rule\"], args[\"after_iso\"])\n            if not free:\n                conn.rollback()\n                return json.dumps({\"ok\": False, \"error\": warn or \"calendar busy\"})\n        if verified_success:"
    },
    {
      "url": "https://raw.githubusercontent.com/arjunbagga-xyz/hermes-ghostbox/1a619268951f68bbaa1218e2f5678f8f8bc6cd5c/engine.py",
      "quote": "tree_hash = tree_hasher.hexdigest()[:16]\n        safety_score = 98\n        if any(\".env\" in f.get(\"file\", \"\") for f in file_list):\n            safety_score -= 30\n\n        directive = (\n            f'::ghostbox-card[shadow_id=\"{shadow_id}\" '\n            f'status=\"verified\" '\n            f'safety_score={safety_score} '\n            f'files_changed={files_changed} '\n            f'lines_added={lines_added} '\n            f'lines_removed={lines_removed} '"
    },
    {
      "url": "https://raw.githubusercontent.com/arjunbagga-xyz/hermes-ghostbox/1a619268951f68bbaa1218e2f5678f8f8bc6cd5c/middleware.py",
      "quote": "if \"working_directory\" in args:\n                args[\"working_directory\"] = shadow_path\n            elif \"cwd\" in args:\n                args[\"cwd\"] = shadow_path\n\n            tool_call[\"_ghostbox_shadow_id\"] = active_id\n\n    return tool_call\n\n\ndef ghostbox_tool_execution_middleware(result: Any, tool_call: Dict[str, Any], context: Optional[Any] = None) -> Any:"
    },
    {
      "url": "https://api.github.com/repos/NousResearch/hermes-agent/pulls/150931",
      "quote": "The interactive OAuth sign-in and a live tool call were not run in 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. 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)."
    }
  ]
}
