{
  "sources": [
    {
      "url": "https://gist.githubusercontent.com/gtmcknight/594c47336546c8763e641b46cf9af4ec/raw/field.json",
      "quote": "fae4e9df58767e5e3832c8f65936b97868bc98fc\",\"subdir\":\"\"},{\"pr\":149741,\"name\":\"zeromem\",\"repo\":\"https://github.com/ptaranat/zeromem\",\"sha\":\"f7e669c47cc0f6c9867829c37af8e4fc2803fe15\",\"subdir\":\"hermes/zeromem\"},{\"pr\":149744,\"name\":\"wellness-nour"
    },
    {
      "url": "https://gist.githubusercontent.com/gtmcknight/594c47336546c8763e641b46cf9af4ec/raw/RUN.md",
      "quote": "For 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\n    git clone --depth 1 https://github.com/NousResearch/hermes-agent test/scratch/hermes\n    cd test/scratch/hermes "
    },
    {
      "url": "https://raw.githubusercontent.com/NousResearch/hermes-agent/b89e04eb7021a549db13d910b7a29483ead4f043/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/NousResearch/hermes-agent/b89e04eb7021a549db13d910b7a29483ead4f043/tools/tool_search.py",
      "quote": "\"\"\"Progressive tool disclosure (\"tool search\"): MCP/plugin tools and a curated set of\nevent-triggered core tools are replaced in the model-visible array by three bridge tools \u2014\ntool_search / tool_describe / tool_call. Invariants: core tools (``toolsets._HERMES_CORE_TOOLS``)\nand session-gated GUI toolsets never defer unless named in ``defer``; ANY deferrable tool\nactivates the bridge (the listing scales with budget, not activation); the catalog is"
    },
    {
      "url": "https://raw.githubusercontent.com/merdoks/trust-ladder/fae4e9df58767e5e3832c8f65936b97868bc98fc/README.md",
      "quote": "- **Not a sandbox.** Guards are best-effort pattern matches on what a call names. A determined model can\n  phrase a command a guard does not recognise (a script file, an alias). Use them to stop repeat\n  mistakes, and use OS isolation for hostile code.\n\n## Development\n\n```bash\ncd tests && pytest              # 85 tests, no Hermes runtime needed (uses a fake ctx)\nhermes plugins doctor . --ci\nhermes plugins validate . "
    },
    {
      "url": "https://raw.githubusercontent.com/merdoks/trust-ladder/fae4e9df58767e5e3832c8f65936b97868bc98fc/__init__.py",
      "quote": "    ctx.register_hook(\"pre_tool_call\", ladder.on_pre_tool_call)\n    ctx.register_hook(\"transform_tool_result\", ladder.on_transform_tool_result)\n    ctx.register_hook(\"pre_llm_call\", ladder.on_pre_llm_call)\n    ctx.register_hook(\"pre_verify\", ladder.on_pre_verify)\n    ctx.register_hook(\"transform_llm_output\", ladder.on_transform_llm_output)\n\n    def _teach(raw_args: str = \"\", **kwargs) -> str:\n        return ladder.cmd_teach(ra"
    },
    {
      "url": "https://raw.githubusercontent.com/ddaikodaiko/hermes-time-machine/1ac9c78e539dd518d6c8d8ffd64395b72bab30d4/README.md",
      "quote": "### 3. Effect memory\n\nEach turn, `pre_llm_call` compares the ledger of the current session with what the\nmodel can still see. If a recorded effect has disappeared from the history (rollback,\nundo, retry, compaction), a short reminder is injected, once per effect:\n\n```\n[hermes-time-machine] Effect memory: the conversation was rewound or compacted, but these actions already happened outside the workspace and were NOT undone:\n1. git push \u2192 origin/ma"
    },
    {
      "url": "https://raw.githubusercontent.com/ddaikodaiko/hermes-time-machine/1ac9c78e539dd518d6c8d8ffd64395b72bab30d4/guard.py",
      "quote": "        session = handlers.session_dir()\n\n        found = effects.preflight(str(tool_name), args, session)\n\n        checkpoint_id = None\n        if config.get(\"auto_checkpoint\", True):\n            try:\n                checkpoint_id = _auto_checkpoint(tool_name, args, config, kwargs, session)\n            except Exception as exc:\n                _safe_journal({\"type\": \"hook_error\", \"hook\": \"pre_tool"
    },
    {
      "url": "https://raw.githubusercontent.com/user1303836/kumi/7f8b0de9f52d4bca526914c469e084a554388486/hermes-plugin/README.md",
      "quote": "**Kumi puts Hermes inside Ableton Live, REAPER and Renoise: it hears your mix, makes the changes you ask for (each\nrecorded in HISTORY, most undoable), and turns your own samples into new sounds.**\n\n![The sound map in Hermes Desktop: 3,840 sounds laid out by how they sound, each family in its own co"
    },
    {
      "url": "https://raw.githubusercontent.com/user1303836/kumi/7f8b0de9f52d4bca526914c469e084a554388486/hermes-plugin/setup.py",
      "quote": "def _component(result: Any) -> dict:\n    \"\"\"A `setup_daw` result, checked before anything acts on it or shows it.\"\"\"\n    if not isinstance(result, dict) or result.get(\"state\") not in _COMPONENT_STATES:\n        raise SetupError(\"bad_runtime_reply\", \"Kumi's runtime gave setup an answer it doesn't understand.\")\n    paths, effects = result.get(\"paths\"), result.get(\"effects\")\n    if not isinstance(paths, list) or not all(_plain(p, _MAX_PATH) and Path(p).is_absolute() for"
    },
    {
      "url": "https://raw.githubusercontent.com/user1303836/kumi/7f8b0de9f52d4bca526914c469e084a554388486/hermes-plugin/tests/test_setup.py",
      "quote": "    def test_the_daw_steps_approval_shows_each_path_it_writes_verbatim(self) -> None:\n        self.install_runtime()\n        paths = [str(FAKE_LIBRARY / \"Remote Scripts\" / \"AbletonMcpBridge\"),\n                 str(FAKE_LIBRARY.parent / \"Preferences\" / \"Live 12\" / \"My  Library.cfg\"),\n                 str(FAKE_LIBRARY.parent / (\"long \" * 180) / \"Kumi\")]\n        self.plan(setup_daw=Runtime(paths=paths, effects=[\"Copy the Remote Script into your User Library\"]"
    },
    {
      "url": "https://raw.githubusercontent.com/user1303836/kumi/7f8b0de9f52d4bca526914c469e084a554388486/hermes-plugin/tests/test_scripts.py",
      "quote": "        saved = self.data / \"state\" / \"scripts\" / f\"{scripts.sha256(code)}.py\"\n        self.assertIn(f\"Full code: {saved}\", desktop)\n\n    def test_the_code_is_kept_once_and_runs_only_as_approved_into_a_history_"
    },
    {
      "url": "https://raw.githubusercontent.com/mrnetwork0001/Joust/b88242eb72f50c6dfa284d1f4335e8b59b30afbf/README.md",
      "quote": "- **Isolation is scoping, not a sandbox.** File paths, patch headers, search roots and terminal working directories are redirected and escapes are vetoed, but the text of a shell command is not rewritten. Judge only code you are willing to run.\n- **Secrets stay out of storage.** Captured output is scrubbed of token-like strings (API keys, GitHub and Slack tokens, AWS key ids, b"
    },
    {
      "url": "https://raw.githubusercontent.com/mrnetwork0001/Joust/b88242eb72f50c6dfa284d1f4335e8b59b30afbf/__init__.py",
      "quote": "def register(ctx: Any) -> None:\n    \"\"\"Register Joust tools, middleware, hooks, slash commands, CLI subcommand, and bundled skill.\"\"\"\n    tools.set_context(ctx)\n\n    ctx.register_tool(\n        name=\"joust_launch\",\n        toolset=\"joust\",\n        schema=schemas.JOUST_LAUNCH,\n        handler=tools.joust_launch,\n        description=\"Launch parallel Git-worktree contenders for a coding task\",\n        emoji=\"\u2694\ufe0f\",\n    )\n    ctx.register_tool"
    },
    {
      "url": "https://raw.githubusercontent.com/prakhar-raj-031104/hermes-agentline/6e4c34e61084e5db154a0159bc57440b6ffbceeb/README.md",
      "quote": "- **Approvals.** `agentline_call`, `agentline_sms` and `agentline_buy_number` return an `approve`\n  directive from a `pre_tool_call` hook, so Hermes's own approval gate decides. With nobody to\n  approve (cron, an unattended gateway) the gate fails closed and nothing is dialed. Replies to\n  an allowed person's text or call are not gated; they are the conversation itself.\n- **Always refused.** Emergency and service codes (911, 411, ...), premium-rate numbers and\n  num"
    },
    {
      "url": "https://raw.githubusercontent.com/prakhar-raj-031104/hermes-agentline/6e4c34e61084e5db154a0159bc57440b6ffbceeb/tools.py",
      "quote": "def _secret(name: str) -> str:\n    from agent.secret_scope import get_secret\n\n    return (get_secret(name) or \"\").strip()\n\n\ndef has_api_key() -> bool:\n    try:\n        return bool(_secret(API_KEY_ENV))\n    except Exception:  # get_secret raises when no profile scope is bound; the tools are then unavailable\n        return False\n\n\ndef _client() -> AgentLineClient:\n    key = _secret(API_KEY_ENV)\n    if not key:\n        raise Agen"
    },
    {
      "url": "https://raw.githubusercontent.com/prakhar-raj-031104/hermes-agentline/6e4c34e61084e5db154a0159bc57440b6ffbceeb/tests/integration_hermes.py",
      "quote": "What it exercises, through Hermes's own code paths:\n\n* plugin discovery, tool registration and the ``pre_tool_call`` hook via ``handle_function_call``,\n* the real ``BasePlatformAdapter`` pipeline (``handle_message`` -> handler -> ``send`` ->\n  ``on_processing_complete``) with the adapter created by the platform registry,\n* the relay WebSocket loop, against a local server that speaks AgentLine's frames.\n\"\"\"\n\nfrom __future__ import annotations\n\nimport asyncio\nimp"
    },
    {
      "url": "https://raw.githubusercontent.com/noegng/local-hands/62327c4174582e3e8ea2d0b1e8fc57d4f4a24842/README.md",
      "quote": "- The active machine belongs to the Hermes process, not to one conversation: if the agent switches\n  machine in one chat, other chats of the same gateway follow (each is told at its next turn).\n- Environment variables and skill files are not sent to the machine. A skill that ships scripts must\n  find them on the machine itself.\n- Browser and `computer_use` tools do not follow the terminal; they still act where Hermes runs.\n- `execute_code` needs "
    },
    {
      "url": "https://raw.githubusercontent.com/mrnetwork0001/Joust/b88242eb72f50c6dfa284d1f4335e8b59b30afbf/tests/test_engine_edges.py",
      "quote": "    def test_symlink_pointing_outside_is_clamped(self) -> None:\n        (self.A / \"evil_link\").symlink_to(\"/etc\")\n        out = self.mw(\"read_file\", {\"path\": \"evil_link/hosts\"})[\"args\"][\"path\"]\n        self.assert_inside_alpha(out)\n        self.assertNotEqual(Path(out).resolve(), Path(\"/etc/hosts\"))\n        with self.assertRaises(ValueError):\n            eng._jail_path_inside_worktree(\"evil_link/hosts\", self.A)\n\n    def test_tilde_dotdot_and_absolute_system_paths_ar"
    },
    {
      "url": "https://raw.githubusercontent.com/noegng/local-hands/62327c4174582e3e8ea2d0b1e8fc57d4f4a24842/lh_core.py",
      "quote": "def _connect_control(ctl_path: Path, timeout: Optional[float]):\n    sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)\n    sock.settimeout(timeout)\n    try:\n        sock.connect(str(ctl_path))\n    except OSError as exc:\n        sock.close()\n        raise HubUnavailable(str(exc)) from exc\n    return sock\n\n\ndef rpc(ctl_path: Path, request: dict, timeout: float = 3.0) -> dict:\n    \"\"\"One request, one reply.\"\"\"\n    sock = _connect_con"
    }
  ]
}