{
  "sources": [
    {
      "url": "https://gist.githubusercontent.com/gtmcknight/594c47336546c8763e641b46cf9af4ec/raw/field.json",
      "quote": "{\"about\":\"Hermes Agent Plugin Hackathon entries: every plugin-catalog entry added to github.com/NousResearch/hermes-agent by a pull request opened from the hackathon post (2026-11-04 21:33Z) to its close (2026-11-11 22:00Z), one per distinct plugin. pr is the entrant's own pull request.\",\"refs\":[{\"n"
    },
    {
      "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.\n\n## 1. Hermes, once\n"
    },
    {
      "url": "https://raw.githubusercontent.com/PhiBao/manyhands/bc5ec1cb57bb26a133f7967bd06dee6441409544/README.md",
      "quote": "**One Hermes, many people.** Every sender who talks to your bot gets their own identity, their own\nmemory, their own tool allowlist and their own approvals — and you can see who asked for what.\n\n```\nKiter  (owner)   → every tool\nMinh   (member)  → web_search, recall_search, manyhands_remember …"
    },
    {
      "url": "https://raw.githubusercontent.com/PhiBao/manyhands/bc5ec1cb57bb26a133f7967bd06dee6441409544/middleware.py",
      "quote": "Fail-open by design: this is a privacy filter, not an authorization gate. If anything about the\npayload is unexpected, return None and let the request through unchanged; `pre_tool_call` is what\nstops a tool, and it never depends on this module having run.\n\"\"\""
    },
    {
      "url": "https://raw.githubusercontent.com/PhiBao/manyhands/bc5ec1cb57bb26a133f7967bd06dee6441409544/tests/live_integration.py",
      "quote": "It runs against a **throwaway HERMES_HOME** in a temp directory: your live profile's config, plugin\nlist, roster and database are never touched, and the plugin is copied there rather than installed.\n\"\"\"\n\nfrom __future__ import annotations\n\nimport json\nimport os\nimport shutil\nimport sys\nimport tempfile\nimport time\nfrom pathlib import Path\n\nREPO = Path(__file__).resolve().parent.parent"
    },
    {
      "url": "https://raw.githubusercontent.com/Investorquab/Seedguard/4809791d06471235fe3243fd1888c66eefb129e1/README.md",
      "quote": "Hermes' auxiliary side-model calls (titles, compression) bypass plugin middleware\n  — see [Known limitations](#known-limitations-honest-list); `/seedguard doctor`\n  prints the exact config fixes.\n\n## How it works\n\n```\nyou (Telegram) ──► \"my seed is abandon abandon … about\"\n                    │  pre_gateway_dispatch: redacted before the agent sees it"
    },
    {
      "url": "https://raw.githubusercontent.com/Investorquab/Seedguard/4809791d06471235fe3243fd1888c66eefb129e1/detectors.py",
      "quote": "_ENV_QUOTED_RE = re.compile(rf\"(?m)(?:^|(?<=\\s))(?:export\\s+)?({_SECRET_NAME})\\s*[=:]\\s*(['\\\"])(.{{8,}}?)\\2\")\n_ENV_BARE_RE = re.compile(rf\"(?m)(?:^|(?<=\\s))(?:export\\s+)?({_SECRET_NAME})\\s*=\\s*([^\\s'\\\"#]{{8,}})\")\n_JSON_RE = re.compile(rf\"([\\\"'])({_SECRET_NAME})\\1\\s*:\\s*([\\\"'])([^\\\"'\\n]{{8,}})\\3\")\n_NAME_EXCLUDE = (\"PATH\", \"FILE\", \"DIR\", \"URL\", \"NAME\", \"TYPE\", \"SIZE\", \"LENGTH\", \"COUNT\","
    },
    {
      "url": "https://raw.githubusercontent.com/Investorquab/Seedguard/4809791d06471235fe3243fd1888c66eefb129e1/tests/test_resolution_boundary.py",
      "quote": "Where placeholders can and cannot resolve, and the honest detection limits.\n\nAnswers the common review question \"can a placeholder be resolved somewhere\nunexpected later?\" — no: only `tool_request` ever rehydrates, and only for an\nallowlisted tool, an armed secret, in the catching session. Also pins the\nknown detection gaps (encoded / split secrets) so a future change is noticed.\n\"\"\"\nimport base64\n"
    },
    {
      "url": "https://raw.githubusercontent.com/P0GL0L/hermes-lineage/61de70980f4322838a9b53f4802623146f1046c2/README.md",
      "quote": "The honest part. Most provenance tooling draws one arrow and calls it \"derived from\". lineage keeps three, labels each, and writes the label into the receipt so a reader can discount the weak ones.\n\n| | basis | what it means | drawn as |\n|---|---|---|---|"
    },
    {
      "url": "https://raw.githubusercontent.com/P0GL0L/hermes-lineage/61de70980f4322838a9b53f4802623146f1046c2/lineage_core/receipt.py",
      "quote": "def build_receipt(store: Store, ref: str, *, include_signature: bool = True, data_dir: Optional[Path] = None) -> Optional[dict]:\n    \"\"\"Assemble the receipt for an artifact (node id, absolute path, or basename).\"\"\"\n    node = store.resolve(ref)\n    if not node or node.get(\"kind\") != \"file\" or not node.get(\"produced\"):\n        return None  # receipts are for files the agent made, never for files it merely read\n    nid = node[\"id\"]\n    path = node.get(\"path\") or \"\"\n"
    },
    {
      "url": "https://raw.githubusercontent.com/P0GL0L/hermes-lineage/61de70980f4322838a9b53f4802623146f1046c2/tests/test_tracker.py",
      "quote": "def test_graph_receipt_and_sidecar(plugin, ctx, workspace, session_factory):\n    store_mod = _mod(plugin, \"store\")\n    receipt_mod = _mod(plugin, \"receipt\")\n    s = session_factory()\n    report, chart, csv = research_task(s, workspace)\n    store = plugin.get_tracker().store\n\n    node = store.find_file_node(str(report))\n    assert node and node[\"produced\"] == 1 and node[\"sha256\"]"
    },
    {
      "url": "https://raw.githubusercontent.com/ainsleys/hermes-confidential-mode/e407486a2227be8cafe7b4350586f3016ebff573/README.md",
      "quote": "**Four limits before you rely on this.** The attested tier admits only models the two vendors serve\ninside enclaves; those are open-weight models such as the Qwen, DeepSeek, Llama and gpt-oss families,\nso a hosted frontier model cannot be in the tier. Because fallbacks are refused while locked, a vendor\noutage ends the turn instead of routing elsewhere. The agent can still run shell commands and code, and the plugin"
    },
    {
      "url": "https://raw.githubusercontent.com/ainsleys/hermes-confidential-mode/e407486a2227be8cafe7b4350586f3016ebff573/confidential_mode/hermes_compat.py",
      "quote": "Every import of a private (undocumented) Hermes core module, in one place.\n\nHermes documents a plugin surface (``ctx.*``, the hooks, ``tools.registry``, ``agent.secret_scope``,\n``providers``, ``hermes_cli.config``, ``plugins.plugin_storage``); modules that use only that surface import it\nwhere they use it. Every private Hermes module or name the plugin imports, and every private attribute it reads"
    },
    {
      "url": "https://raw.githubusercontent.com/ainsleys/hermes-confidential-mode/e407486a2227be8cafe7b4350586f3016ebff573/tests/fault/test_crypto_replay_faults.py",
      "quote": "def test_a_one_byte_edit_to_a_signed_send_or_its_evidence_fails_the_replay_and_the_chain(tmp_path, field):\n    \"\"\"Amendment 5: \"hermes confidential replay replays NEAR evidence ... and every send_signed row ... any\n    failed signature makes the exit code 1\"; receipts.verify_chain: \"True iff the rows' hash chain recomputes\n    ... every evidence blob equals its row's\". Fault: one character changed in one field.\"\"\"\n    world, doc = _near_receipt(tmp_path)"
    },
    {
      "url": "https://raw.githubusercontent.com/Bruno-coder21/fluent/182c4301f2437e784e9022f1f38576e1d68c3f5f/README.md",
      "quote": "**Your agent becomes fluent in any program.**\n\nHermes already checks the code it writes. **fluent checks the shell commands it runs**,\nagainst the real `--help` and `man` pages of the program installed on *your* machine,\nbefore they run.\n\n![Your agent's tree: every program you adopt grows a branch, every error caught becomes a fruit](docs/screenshots/agent-tree.png)\n\n```"
    },
    {
      "url": "https://raw.githubusercontent.com/Bruno-coder21/fluent/182c4301f2437e784e9022f1f38576e1d68c3f5f/glue/hooks.py",
      "quote": "def on_pre_tool_call(tool_name: str = \"\", args: dict | None = None, tool_call_id: str = \"\",\n                     **kwargs):\n    \"\"\"Check a terminal command before it runs. Returns None to allow.\"\"\"\n    try:\n        if tool_name != \"terminal\" or not isinstance(args, dict):\n            return None\n        verdict = guard().check(args.get(\"command\") or \"\")\n        if verdict.action == \"block\":"
    },
    {
      "url": "https://raw.githubusercontent.com/Bruno-coder21/fluent/182c4301f2437e784e9022f1f38576e1d68c3f5f/tests/test_guard.py",
      "quote": "def test_low_confidence_is_never_judged():\n    card = _card()\n    card.nodes[\"run\"].confidence = \"medium\"\n    assert check_invocation(split_command(\"tool run --rmm img\")[0], card).findings == []\n\n\n# ----------------------------------------------------------------- hooks\nclass Ctx:\n    def __init__(self):\n        self.posts = []\n\n    def post_message(self, text):\n        self.posts.append(text)\n\n\n@pytest.fixture"
    },
    {
      "url": "https://raw.githubusercontent.com/emiwltz/hermes-habits/c2e32395e0e3461fe56c7d68b7bc993ee0954277/README.md",
      "quote": "**More than a skill or a script.** A skill, even one that ships a script, waits for the model to choose it and to read its output. A reflex can start on a message you said yes to, before Hermes's model is called; it branches on rules and closed questions; and when it cannot finish, it hands the rest back.\n\n## Try it in 2 minutes, without a key\n\n```bash\nhermes plugins install emiwltz/hermes-habits"
    },
    {
      "url": "https://raw.githubusercontent.com/emiwltz/hermes-habits/c2e32395e0e3461fe56c7d68b7bc993ee0954277/habits/tools.py",
      "quote": "        full = Path(os.path.expanduser(value.strip())).resolve()\n        hidden = any(part.startswith(\".\") for part in full.parts)\n        if runner.secret_name(value) or runner.secret_name(full):  # the runner hands such an end back already\n            continue\n        if full.is_file() and not hidden and any(f == full or f in full.parents for f in folders):\n            found += [str(full)] if str(full) not in found else []\n    return found"
    },
    {
      "url": "https://raw.githubusercontent.com/emiwltz/hermes-habits/c2e32395e0e3461fe56c7d68b7bc993ee0954277/docs/SAFETY.md",
      "quote": "## 9. Files written\n\nUnder `$HERMES_HOME/plugin-data/habits/`, unencrypted: `habits.db` (runs with a trace of 64,000 characters at most, each step's output cut to 400; habits, history, news, the dream's drafts, proposals, practice and dreams), `pages/` (HTML pages of runs), `locks/`, and the switch files `paused` and `off`. Tool arguments and outputs of runs are stored as they come and can hold secrets. A run that a message started also keeps that message (cut to 300 characters, cleare"
    }
  ]
}
