{
  "sources": [
    {
      "url": "https://gist.githubusercontent.com/gtmcknight/594c47336546c8763e641b46cf9af4ec/raw/field.json",
      "quote": "{\"pr\":153826,\"name\":\"googlehome\",\"repo\":\"https://github.com/karmsheel/google-home\",\"sha\":\"b9a23c4f7ac3ea884ebeeb0cc0184f9960911c6f\",\"subdir\":\"googlehome\"}"
    },
    {
      "url": "https://gist.githubusercontent.com/gtmcknight/594c47336546c8763e641b46cf9af4ec/raw/field.json",
      "quote": "{\"pr\":151135,\"name\":\"wake-me-when\",\"repo\":\"https://github.com/kruxarth/wake-me-when\",\"sha\":\"77e827a03053102c3af28049384521853b0caab8\",\"subdir\":\"\"}"
    },
    {
      "url": "https://gist.githubusercontent.com/gtmcknight/594c47336546c8763e641b46cf9af4ec/raw/field.json",
      "quote": "{\"pr\":150110,\"name\":\"hermes-colab\",\"repo\":\"https://github.com/PietrangeloManco/hermes-colab\",\"sha\":\"f05cf934fff3b446f2e00cc32e19432e9e41e87b\",\"subdir\":\"\"}"
    },
    {
      "url": "https://gist.githubusercontent.com/gtmcknight/594c47336546c8763e641b46cf9af4ec/raw/field.json",
      "quote": "{\"pr\":153596,\"name\":\"sentinel-vision\",\"repo\":\"https://github.com/StarAtNyte/hermes-sentinel\",\"sha\":\"fb48bf5c835fa2e8acb74dfc05c52458b3c1194d\",\"subdir\":\"sentinel-vision\"}"
    },
    {
      "url": "https://gist.githubusercontent.com/gtmcknight/594c47336546c8763e641b46cf9af4ec/raw/field.json",
      "quote": "{\"pr\":152481,\"name\":\"argus\",\"repo\":\"https://github.com/albertodvp/argus\",\"sha\":\"bf0b6a3b7ecf978590605ad166956229c39e238d\",\"subdir\":\"argus\"}"
    },
    {
      "url": "https://gist.githubusercontent.com/gtmcknight/594c47336546c8763e641b46cf9af4ec/raw/field.json",
      "quote": "{\"pr\":153357,\"name\":\"twring\",\"repo\":\"https://github.com/saasagelabs/twring\",\"sha\":\"5a7083e3c9d1cd656f1fd85da771d6eee3d2267a\",\"subdir\":\"integrations/hermes\"}"
    },
    {
      "url": "https://raw.githubusercontent.com/karmsheel/google-home/b9a23c4f7ac3ea884ebeeb0cc0184f9960911c6f/googlehome/README.md",
      "quote": "# Hermes ⇄ Google Home\n\nPut a **Google Home Mini** — or any Cast-only Google Home / Nest speaker — on the\nother end of a Hermes Agent profile's conversation: you talk into the computer's"
    },
    {
      "url": "https://raw.githubusercontent.com/kruxarth/wake-me-when/77e827a03053102c3af28049384521853b0caab8/README.md",
      "quote": "# Wake Me When\n\n**Tell Hermes what you're waiting for in a live stream, and it pings you the moment it happens:\nwith the quote, a jump-in link, the clip, and a catch-up when you tune in.**"
    },
    {
      "url": "https://raw.githubusercontent.com/PietrangeloManco/hermes-colab/f05cf934fff3b446f2e00cc32e19432e9e41e87b/README.md",
      "quote": "# hermes-colab\n\nRun Python scripts and Jupyter notebooks on **Google Colab GPUs from a Hermes chat**."
    },
    {
      "url": "https://raw.githubusercontent.com/StarAtNyte/hermes-sentinel/fb48bf5c835fa2e8acb74dfc05c52458b3c1194d/sentinel-vision/README.md",
      "quote": "# sentinel-vision\n\n**Tell Hermes in plain English what to watch (\"tell me if someone takes my coffee mug\"). It watches a webcam, your screen or a stream, and sends you an alert with a photo when it happens.**"
    },
    {
      "url": "https://raw.githubusercontent.com/albertodvp/argus/bf0b6a3b7ecf978590605ad166956229c39e238d/argus/README.md",
      "quote": "# Argus (Hermes plugin)\n\nArgus reads a Hermes agent by **intents** instead of sessions and lets a person decide what to keep\nof what it learns. It groups the agent's turns into intents (one goal, possibly over many turns,"
    },
    {
      "url": "https://raw.githubusercontent.com/saasagelabs/twring/5a7083e3c9d1cd656f1fd85da771d6eee3d2267a/integrations/hermes/README.md",
      "quote": "# Twring for Hermes\n\n![Twring for Hermes: when it matters, Hermes calls you](assets/banner.png)"
    },
    {
      "url": "https://raw.githubusercontent.com/karmsheel/google-home/b9a23c4f7ac3ea884ebeeb0cc0184f9960911c6f/googlehome/tools.py",
      "quote": "def _handle_speak(args: dict[str, Any], **_kwargs: Any) -> str:\n    return json.dumps(_speak(str(args.get(\"text\") or \"\")))\n\n\ndef _handle_notify(args: dict[str, Any], **kwargs: Any) -> str:"
    },
    {
      "url": "https://raw.githubusercontent.com/kruxarth/wake-me-when/77e827a03053102c3af28049384521853b0caab8/wakeme/tools.py",
      "quote": "    def watch(args: dict, **kw: Any) -> str:\n        every = args.get(\"every_minutes\")\n        cond, said_mode, said_cooldown = planmod.repeat_words(str(args.get(\"condition\", \"\")).strip())\n        req = planmod.WatchRequest(url=str(args.get(\"url\", \"\")).strip(), condition=cond,\n                                   mode=\"every\" if every or said_mode else \"once\","
    },
    {
      "url": "https://raw.githubusercontent.com/PietrangeloManco/hermes-colab/f05cf934fff3b446f2e00cc32e19432e9e41e87b/tools.py",
      "quote": "    def colab_doctor(self, args: dict, **_: Any) -> str:\n        checks: list[dict[str, Any]] = []\n        missing = [n for n in (\"HERMES_COLAB_CLIENT_ID\", \"HERMES_COLAB_CLIENT_SECRET\") if not self.env(n)]\n        checks.append({\"check\": \"OAuth client variables\", \"ok\": not missing,\n                       \"detail\": \"set\" if not missing else f\"missing: {', '.join(missing)}\","
    },
    {
      "url": "https://raw.githubusercontent.com/StarAtNyte/hermes-sentinel/fb48bf5c835fa2e8acb74dfc05c52458b3c1194d/sentinel-vision/__init__.py",
      "quote": "def register(ctx: Any) -> None:\n    \"\"\"Plugin entry point called by Hermes.\"\"\"\n    from .sentinel.agent.commands import ARGS_HINT, SentinelCommand\n    from .sentinel.agent.tools import register_tools\n    from .sentinel.runtime import Sentinel, register_aux_tasks, set_active_sentinel"
    },
    {
      "url": "https://raw.githubusercontent.com/albertodvp/argus/bf0b6a3b7ecf978590605ad166956229c39e238d/argus/__init__.py",
      "quote": "def register(ctx: PluginContext) -> None:\n    for name, fn in HOOKS.items():\n        ctx.register_hook(name, fn)\n    capture.after_turn = cli.IdleScheduler(ctx).turn_ended\n    ctx.register_auxiliary_task("
    },
    {
      "url": "https://raw.githubusercontent.com/saasagelabs/twring/5a7083e3c9d1cd656f1fd85da771d6eee3d2267a/integrations/hermes/cli.py",
      "quote": "def _status(out: Callable[[str], None] = print) -> int:\n    token = _hermes_get(\"TWRING_TOKEN\")\n    server = _hermes_get(\"TWRING_SERVER\") or DEFAULT_SERVER\n    if not token:\n        out(\"Twring is not linked. Run:  hermes twring link\")"
    },
    {
      "url": "https://raw.githubusercontent.com/NousResearch/hermes-agent/fdde27e7dae174cb4ba842589e92508852b7dd9f/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)`,"
    },
    {
      "url": "https://gist.githubusercontent.com/gtmcknight/594c47336546c8763e641b46cf9af4ec/raw/RUN.md",
      "quote": "# Run a plugin inside real Hermes\n\nFor seats in rounds 3 and 4. Everything lives under `test/scratch/`. Nothing here needs a model, a key or an account: the model is Nous's own scripted test stand-in, `tests/fakes/fake_llm_provider.py` in the Hermes source, which answers with the tool calls you plan and records everything Hermes sends."
    }
  ]
}
