Features
Four open-source primitives between your LLM and your GL.
closegate is the controls layer, not the agent. Each piece is a readable, forkable, testable primitive — adopt one or all four.
-
Policy gate
One server-side chokepoint. A pure function returns Allow / RequireHumanApproval / Deny for every state-changing tool call, tier-routed by reversibility.
Learn more → -
Tamper-evident audit log
Append-only SQLite with BEFORE UPDATE / BEFORE DELETE triggers. Every decision records the verbatim policy clause and a JSON-pointer into your policy.yaml.
Learn more → -
HITL approval envelopes
LLM proposes, a human with a different actor identity confirms. SoD enforced server-side, with Slack Block Kit and Teams Adaptive Card approval bots.
Learn more → -
Eval harness
Continuous evaluation across matching accuracy, policy enforcement, adversarial robustness, and latency — reproducible from the CLI as SOC 2 CC4.2 evidence.
Learn more →
Also in the box
The controls a finance agent actually needs.
-
Reversibility tiers
T0 read-only · T1 reversible · T2 above-materiality (one approval) · T3 irreversible (dual approval). The action's tier — not the model's confidence — decides who is in the loop.
-
Materiality routing
Per-account, per-jurisdiction, per-action dollar thresholds, expressed the way your auditor scopes materiality. Above the line escalates to human review automatically.
-
Compliance mappings
SOX 404, SOC 2, NIST AI RMF Agentic Profile, PCAOB AS 1215, and GDPR Article 22 — each mapped to closegate controls with file.py:line citations.
-
MCP server
19 finance tools over stdio, HTTP, and SSE. Works with Claude Desktop, Cursor, OpenAI Apps SDK, Mastra, and LangGraph — the LLM can never set its own actor id.
-
LLM-agnostic
Drop it in front of Claude, GPT-4, Gemini, or any open-weight model. The controls layer is independent of the model that proposes the action.
-
Ships three ways
pip install closegate-policy (pure primitive), uvx closegate-engine (MCP server), or docker run the demo image. Self-hosted, Apache-2.0, zero seat licensing.
Inbound
See the four pieces work end to end.
The quickstart scaffolds a policy.yaml, runs the gate against a sample match, and shows the audit row — in about five minutes.