{
  "sources": [
    {
      "url": "https://gist.githubusercontent.com/gtmcknight/594c47336546c8763e641b46cf9af4ec/raw/field.json",
      "quote": "{\"pr\":153640,\"name\":\"patient-research\",\"repo\":\"https://github.com/solo386/patient-research\",\"sha\":\"8642b35bfc6a169ad20cc2f343f8c6dd34d82681\",\"subdir\":\"plugin\"}"
    },
    {
      "url": "https://gist.githubusercontent.com/gtmcknight/594c47336546c8763e641b46cf9af4ec/raw/RUN.md",
      "quote": "The report says:\n\n- `validate`: Nous's catalog admission check (the gate a listing must pass), with its JSON.\n- `enable` and `doctor`: whether Hermes would turn it on, and Hermes's own runtime check of it.\n- `chat`: the conversation, run in-process the way Nous's own end-to-end tests run Hermes (no gateway or socket needed).\n- `added_by_plugin`: the tools it added to what Hermes offers a model. A plugin that adds hooks, a plat"
    },
    {
      "url": "https://raw.githubusercontent.com/NousResearch/hermes-agent/a84025ade22d2a4085f575d4353072e5b702635d/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). A subscription sign-in (Codex / ChatGPT\n   today) is used only through `credentialed_provider_request` with\n   `re"
    },
    {
      "url": "https://raw.githubusercontent.com/TANGBUDU/permission-canvas/3a3086066051f5cc7a6ee52c20d62395b814da3f/README.md",
      "quote": "Permission Canvas adds element-level permissions to Hermes `computer_use`. The backend checks policy before dispatching desktop input and redacts configured hidden elements before returning a screenshot or accessibility tree to the model.\n\n| Level | Behavior |\n|---|---|\n| Green | Allow operations on the matched element. |\n| Blue | Allow observation; refuse click, drag, text entry an"
    },
    {
      "url": "https://raw.githubusercontent.com/TANGBUDU/permission-canvas/3a3086066051f5cc7a6ee52c20d62395b814da3f/backend.py",
      "quote": "class PermissionCanvasBackend(ComputerUseBackend):\n    def __init__(self, inner: ComputerUseBackend, policy_loader: Callable[[], Policy],\n                 approvals: Optional[ApprovalStore] = None, log_path: Optional[str] = None, control=None):\n        self.inner = inner\n        self._load = policy_loader\n        self.approvals = approvals or ApprovalStore()\n        self.log_path = log_p"
    },
    {
      "url": "https://raw.githubusercontent.com/TANGBUDU/permission-canvas/3a3086066051f5cc7a6ee52c20d62395b814da3f/tests/test_loading.py",
      "quote": "assert r.code == 'approval_required' and b.inner.n('click') == 0\nif enabled:\n    aid = r.meta['permission_canvas']['action_id']\n    assert aid in handler('')\n    assert 'Approved once' in handler(aid)\n    assert b.click(element=4).ok\n    assert b.click(element=4).code == 'approval_required'\n    assert b.inner.n('click') == 1\nprint(json.dumps({'provider': provider.name, 'command_registered': bool(handler), 'ok': True}))\n\"\"\"\n   "
    },
    {
      "url": "https://raw.githubusercontent.com/ctmakc/hermes-redactgate/d4bb87d78381d0514cd8dd74525fea98a5b46d62/README.md",
      "quote": "RedactGate is a Hermes Agent plugin that pseudonymizes personal data at the model boundary.\nIn every request the agent sends to its model, names, e-mails, phone numbers, payment cards,\nIBANs and national IDs become `[[TYPE_xxxxxx]]` placeholders. The reply you read and the\narguments your local tools receive get the real values back. It also checks the side channels\nHermes runs outside plugins (session titles, context compression), flags"
    },
    {
      "url": "https://raw.githubusercontent.com/ctmakc/hermes-redactgate/d4bb87d78381d0514cd8dd74525fea98a5b46d62/engine.py",
      "quote": "def on_llm_request(self, request: dict[str, Any], **kw: Any) -> dict[str, Any] | None:\n        session = str(kw.get(\"session_id\") or kw.get(\"task_id\") or \"\")\n        try:\n            if not isinstance(request, dict):\n                return None\n            vault = self.vaults.get(session)\n            counts: Counter[str] = Counter()\n            for text in iter_texts(request):  # pass 1: learn names anywhere in the request\n                if text"
    },
    {
      "url": "https://raw.githubusercontent.com/ctmakc/hermes-redactgate/d4bb87d78381d0514cd8dd74525fea98a5b46d62/vault.py",
      "quote": "def token(self, entity_type: str, value: str) -> str:\n        canon = canonical(entity_type, value)\n        digest = hmac.new(self.key, f\"{entity_type}\\x00{canon}\".encode(), hashlib.sha256).hexdigest()[:6]\n        tok = f\"[[{entity_type}_{digest}]]\"\n        with self.lock:\n            if tok not in self.by_token:\n                self.by_token[tok] = (entity_type, value.strip())\n                if len(self.by_token) > self.max_entries:\n                    self.by_token.popitem(last=Fals"
    },
    {
      "url": "https://raw.githubusercontent.com/ainsleys/hermes-confidential-mode/e407486a2227be8cafe7b4350586f3016ebff573/README.md",
      "quote": "**What the plugin does.** You lock a profile to a tier, which is a rule for where text may go.\n`attested` allows only enclaves whose hardware report the plugin has verified and whose build you\napproved; `on-host-only` allows only your machine. While locked:\n\n- Every model call, main or side, goes only to the tier (a side call that strays mid-turn is recorded,\n  not stopped). The plugin checks every configured route before locking and before each "
    },
    {
      "url": "https://raw.githubusercontent.com/ainsleys/hermes-confidential-mode/e407486a2227be8cafe7b4350586f3016ebff573/confidential_mode/gate_llm.py",
      "quote": "Behaviour:\n- unlocked: ledger ``send_observed`` (host, serialised request byte size), call through\n  unchanged; downstream exceptions propagate untouched so Hermes' normal retry/fallback runs.\n- locked: classify the destination with the locked tier's predicate. Off-tier: ledger\n  ``send_refused`` and refuse without calling ``next_call``. Attested tier: ``attested_ok``\n  must also pass before ``next_call``. In-tier: call through; any provider erro"
    },
    {
      "url": "https://raw.githubusercontent.com/ainsleys/hermes-confidential-mode/e407486a2227be8cafe7b4350586f3016ebff573/__init__.py",
      "quote": "def register(ctx) -> None:\n    global _RUNTIME\n    rt = Runtime(ctx)\n    _RUNTIME = rt\n    try:\n        _register(rt)\n    except Exception as exc:  # noqa: BLE001 - belt and braces: register never raises\n        rt.errors.append((\"register\", f\"{type(exc).__name__}: {exc}\"[:300]))\n        logger.warning(\"confidential-mode: register failed: %s\", exc)\n    return None\n\n\ndef _start_progress(rt: Runtime):\n    \"\"\"(Progress, data dir, commit) for the sta"
    },
    {
      "url": "https://raw.githubusercontent.com/ASV-Labs/hermes-helm/0f68da9b485870059be2bef71f284a81ad771fdd/README.md",
      "quote": "**A complete redesign of Hermes Desktop, shipped as a plugin.** See what every bot is doing, answer what's waiting on you, and follow the plan as it happens \u2014 from one desk.\n\n[Install](#install) \u00b7 [What's inside](#whats-inside) \u00b7 [Guides](docs/guides/README.md) \u00b7 [Launch film](https://github.com/ASV-Labs/hermes-helm/releases/latest/downlo"
    },
    {
      "url": "https://raw.githubusercontent.com/ASV-Labs/hermes-helm/0f68da9b485870059be2bef71f284a81ad771fdd/desktop/plugin.js",
      "quote": "from '@hermes/plugin-sdk'\nimport { jsx, jsxs } from 'react/jsx-runtime'\nimport { useEffect, useMemo, useRef, useState } from 'react'\n\nconst ID = 'helm'\nconst VERSION = '1.0.5'\nconst BOTS_ROUTE = '/helm/bots'\nconst LOOK_ROUTE = '/helm/look'\nconst DESK_ROUTE = '/helm/desk'\n\n// \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 themes\n\nconst HELM_CSS_SCOPE = ':root["
    },
    {
      "url": "https://raw.githubusercontent.com/ASV-Labs/hermes-helm/0f68da9b485870059be2bef71f284a81ad771fdd/dashboard/plugin_api.py",
      "quote": "NAME_RE = re.compile(r\"^(base|face|topper|chest|tool|back)_[a-z]+(_[a-z]+)?\\.png$\")\nBATCH_MAX = 16\n\n\n@lru_cache(maxsize=1)\ndef _manifest() -> dict:\n    path = SPRITES / \"manifest.json\"\n    if not path.is_file():\n        return {\"colors\": [], \"faces\": [], \"toppers\": [], \"chests\": [], \"tools\": [], \"backs\": [], \"size\": [640, 800]}\n"
    },
    {
      "url": "https://raw.githubusercontent.com/RaYYeR220/housemate/09c1a1d0a88bfa8762cee6b3ccf94271b0f172c5/README.md",
      "quote": "Most homes have a drawer of old phones. Housemate turns them into room speakers for your own Hermes: the Alexa routine (a pasta timer that rings in the kitchen, \"tell the office dinner's ready\", \"stop\") from an assistant that is actually your agent, with your tools, your memory and your approvals. There is no hardware to buy and no app to install. You need a browser, a QR code and a six-digit pairing code.\n\n![The Rooms page in Hermes Desktop: the kitchen p"
    },
    {
      "url": "https://raw.githubusercontent.com/RaYYeR220/housemate/09c1a1d0a88bfa8762cee6b3ccf94271b0f172c5/core/hub.py",
      "quote": "ctx = cls(ssl.PROTOCOL_TLS_SERVER)\n    ctx.load_cert_chain(str(cert), str(key))\n    return ctx\n\n\nclass HubPortInUse(OSError):\n    "
    },
    {
      "url": "https://raw.githubusercontent.com/RaYYeR220/housemate/09c1a1d0a88bfa8762cee6b3ccf94271b0f172c5/tools.py",
      "quote": "\"housemate_timer_set\": (\n        housemate_timer_set,\n        \"Start a countdown timer that rings in a room (chime plus the spoken label) when it ends. It is \"\n        \"deterministic: it rings even if the conversation has moved on and survives a restart. Use it \"\n        \"for 'set a timer for 10 minutes' or 'pasta timer, 8 minutes'; convert the duration to \"\n        \"seconds. For a time of day use housemate_alarm_set. For repeating reminders or anything th"
    },
    {
      "url": "https://api.github.com/repos/solo386/patient-research",
      "quote": "Not Found"
    },
    {
      "url": "https://gist.githubusercontent.com/gtmcknight/594c47336546c8763e641b46cf9af4ec/raw/tryit.py",
      "quote": "One conversation in-process, the way Nous's own end-to-end tests drive Hermes (AIAgent against the\n    scripted model), so no gateway or control socket is involved.\"\"\"\n    env = dict(os.environ, HERMES_HOME=str(home), NO_COLOR=\"1\""
    }
  ]
}
