{
  "schema": "https://hermes-labs.ai/software-catalog.json",
  "schemaVersion": 1,
  "publisher": {
    "name": "Hermes Labs",
    "url": "https://hermes-labs.ai",
    "@id": "https://hermes-labs.ai/#organization"
  },
  "source": "https://hermes-labs.ai/open-source",
  "note": "Generated from the same record as the /open-source page. Each maturityBoundary states what the project does not establish; read it before selecting a project. pinnedVersion is the release the site last verified against PyPI (see /release-truth-status.json); it can trail the registry between refreshes.",
  "count": 9,
  "projects": [
    {
      "id": "lintlang",
      "name": "lintlang",
      "category": {
        "id": "preflight",
        "label": "Static checks & drift gates"
      },
      "role": "Relational agent-language linter",
      "task": "Deterministic static analysis for agent instructions, including H1.6 pairwise differentia: comparisons of tool descriptions within one parsed input that report when one or both lack distinguishing wording. Zero LLM calls.",
      "maturityBoundary": "H1.6 uses a finite term-and-synonym model and does not establish runtime tool-selection improvement; a clean scan does not prove runtime safety.",
      "repository": "https://github.com/hermes-labs-ai/lintlang",
      "catalogEntry": "https://hermes-labs.ai/open-source",
      "productPage": "https://hermes-labs.ai/lintlang",
      "language": "Python",
      "license": {
        "spdx": "Apache-2.0",
        "url": "https://www.apache.org/licenses/LICENSE-2.0"
      },
      "install": {
        "route": "pypi",
        "command": "pip install lintlang==0.8.3",
        "tryCommand": "uvx --from lintlang==0.8.3 lintlang scan AGENTS.md",
        "registry": "https://pypi.org/project/lintlang/",
        "pinnedVersion": "0.8.3"
      }
    },
    {
      "id": "hermeneutic",
      "name": "hermeneutic",
      "category": {
        "id": "preflight",
        "label": "Static checks & drift gates"
      },
      "role": "Correction-aware drift gate",
      "task": "Mines corrections from chat logs (prior response, user correction, repair) and runs a preflight gate on the next response.",
      "maturityBoundary": "A drift check, not proof that the proposed response is correct or complete. A rule hit marks an evidence obligation; it does not show the claim is false.",
      "repository": "https://github.com/hermes-labs-ai/hermeneutic",
      "catalogEntry": "https://hermes-labs.ai/open-source",
      "productPage": "https://hermes-labs.ai/hermeneutic",
      "language": "Python",
      "license": {
        "spdx": "Apache-2.0",
        "url": "https://www.apache.org/licenses/LICENSE-2.0"
      },
      "install": {
        "route": "pypi",
        "command": "pip install hermeneutic",
        "tryCommand": "printf '%s\\n' 'Done. All 12 checks passed.' | uvx --from hermeneutic==0.1.12 hermeneutic gate",
        "registry": "https://pypi.org/project/hermeneutic/",
        "pinnedVersion": "0.1.12"
      }
    },
    {
      "id": "little-canary",
      "name": "little-canary",
      "category": {
        "id": "runtime",
        "label": "Observe and guard at runtime"
      },
      "role": "Experimental prompt-injection preflight",
      "task": "Probes untrusted input with a sacrificial canary model before the primary model acts.",
      "maturityBoundary": "Experimental security tool; efficacy and false-positive behavior depend on the models and evaluation distribution.",
      "repository": "https://github.com/hermes-labs-ai/little-canary",
      "catalogEntry": "https://hermes-labs.ai/open-source",
      "productPage": "https://hermes-labs.ai/little-canary",
      "language": "Python",
      "license": {
        "spdx": "Apache-2.0",
        "url": "https://www.apache.org/licenses/LICENSE-2.0"
      },
      "install": {
        "route": "pypi",
        "command": "pip install little-canary",
        "registry": "https://pypi.org/project/little-canary/",
        "pinnedVersion": "0.5.1"
      }
    },
    {
      "id": "hermes-rubric",
      "name": "hermes-rubric",
      "category": {
        "id": "evaluate",
        "label": "Evaluate and review"
      },
      "role": "Evidence-first review protocol",
      "task": "Builds structured rubrics, binds scores to cited evidence, and records reproducibility receipts.",
      "maturityBoundary": "Advisory, not a binary release gate; the published agreement result still needs independent reproduction. Scoring is a model call, so it needs a backend and no numeric score is guaranteed.",
      "repository": "https://github.com/hermes-labs-ai/hermes-rubric",
      "catalogEntry": "https://hermes-labs.ai/open-source",
      "productPage": "https://hermes-labs.ai/hermes-rubric",
      "language": "Python",
      "license": {
        "spdx": "Apache-2.0",
        "url": "https://www.apache.org/licenses/LICENSE-2.0"
      },
      "install": {
        "route": "pypi",
        "command": "pip install hermes-rubric",
        "tryCommand": "uvx --from hermes-rubric==1.2.3 hermes-rubric --version",
        "registry": "https://pypi.org/project/hermes-rubric/",
        "pinnedVersion": "1.2.3"
      }
    },
    {
      "id": "hermes-jailbench",
      "name": "hermes-jailbench",
      "category": {
        "id": "evaluate",
        "label": "Evaluate and review"
      },
      "role": "Jailbreak regression benchmark",
      "task": "Runs a repeatable battery of known-pattern attacks against an Anthropic or OpenAI-compatible model endpoint and classifies every response as refusal, partial, or compliance with deterministic keyword heuristics, so a model or prompt change that weakens refusals is visible. A dry-run mode inspects the prompts without an API key.",
      "maturityBoundary": "Known attack patterns and keyword scoring only: a clean run is not evidence that an endpoint is safe against novel attacks, and elaborate indirect compliance can be scored as a refusal.",
      "repository": "https://github.com/hermes-labs-ai/hermes-jailbench",
      "catalogEntry": "https://hermes-labs.ai/open-source",
      "language": "Python",
      "license": {
        "spdx": "MIT",
        "url": "https://opensource.org/license/MIT"
      },
      "install": {
        "route": "pypi",
        "command": "pip install hermes-jailbench",
        "next": "hermes-jailbench --demo",
        "pinnedVersion": "0.2.2"
      }
    },
    {
      "id": "langstate",
      "name": "langstate",
      "category": {
        "id": "memory",
        "label": "Memory & recovery"
      },
      "role": "Inspectable context compression",
      "task": "Compresses older conversation turns into visible scaffold state and records whether explicitly named literal facts survived.",
      "maturityBoundary": "Lossy compression prototype; its receipt checks literal text and does not establish semantic equivalence.",
      "repository": "https://github.com/hermes-labs-ai/langstate",
      "catalogEntry": "https://hermes-labs.ai/open-source",
      "productPage": "https://hermes-labs.ai/langstate",
      "language": "Python",
      "license": {
        "spdx": "Apache-2.0",
        "url": "https://www.apache.org/licenses/LICENSE-2.0"
      },
      "install": {
        "route": "pypi",
        "command": "pip install langstate",
        "next": "langstate demo",
        "registry": "https://pypi.org/project/langstate/",
        "pinnedVersion": "0.2.4"
      }
    },
    {
      "id": "fidelis",
      "name": "Fidelis Memory",
      "category": {
        "id": "memory",
        "label": "Memory & recovery"
      },
      "role": "Local-first agent memory",
      "task": "Returns your original stored passages verbatim, with no LLM call in the default retrieval path.",
      "maturityBoundary": "Published on PyPI as fidelis-memory; the repository, import name, and CLI remain fidelis. Independent install-to-recall proof remains open.",
      "repository": "https://github.com/hermes-labs-ai/fidelis",
      "catalogEntry": "https://hermes-labs.ai/open-source#fidelis",
      "productPage": "https://hermes-labs.ai/fidelis",
      "language": "Python",
      "license": {
        "spdx": "MIT",
        "url": "https://opensource.org/license/MIT"
      },
      "install": {
        "route": "pypi",
        "command": "pip install fidelis-memory",
        "next": "fidelis init"
      }
    },
    {
      "id": "hermes-blind",
      "name": "hermes-blind",
      "category": {
        "id": "memory",
        "label": "Memory & recovery"
      },
      "role": "Session goal recovery",
      "task": "Extracts turn-one goals from Claude Code or Codex session logs into a compact goal-recovery anchor, the session's original task objective, for long-task reorientation.",
      "maturityBoundary": "Deterministic mission representation, not automatic drift detection or proof of improved model behavior.",
      "repository": "https://github.com/hermes-labs-ai/hermes-blind",
      "catalogEntry": "https://hermes-labs.ai/open-source#hermes-blind",
      "productPage": "https://hermes-labs.ai/hermes-blind",
      "language": "Python",
      "license": {
        "spdx": "MIT",
        "url": "https://opensource.org/license/MIT"
      },
      "install": {
        "route": "pypi",
        "command": "pip install hermes-blind"
      }
    },
    {
      "id": "zer0dex",
      "name": "zer0dex",
      "category": {
        "id": "memory",
        "label": "Memory & recovery"
      },
      "role": "Memory reference implementation",
      "task": "A compact dual-layer memory pattern combining a human-readable index with vector retrieval.",
      "maturityBoundary": "Developer-preview reference implementation; benchmark implications are not independently reproduced.",
      "repository": "https://github.com/hermes-labs-ai/zer0dex",
      "catalogEntry": "https://hermes-labs.ai/open-source",
      "productPage": "https://hermes-labs.ai/zer0dex",
      "language": "Python",
      "license": {
        "spdx": "Apache-2.0",
        "url": "https://www.apache.org/licenses/LICENSE-2.0"
      },
      "install": {
        "route": "source",
        "command": "pip install zer0dex",
        "pinnedVersion": "0.1.2"
      }
    }
  ]
}
