Show HN: Get your agents into regulated industries MakerChecker, a self-hosted governance software for AI agents, launched to enforce structural controls and human approvals in regulated industries. The tool blocks agents from exceeding grants or approving their own work, logs all actions in a verifiable audit chain, and is available as open-source on GitHub. Website: makerchecker.ai Your AI agent moved the money. No one approved it. MakerChecker is self-hosted software that governs AI agents through structural enforcement and human approvals . Structural enforcement runs at machine speed with no human in the path: an agent acts only through a role , runs only the skills its role was granted deny by default, pinned to an exact version , cannot exceed its limits, and provably cannot approve its own work. Human approval is reserved for the few high-risk actions where a rule requires a named person to sign. Every action commits to a hash-chained, Ed25519-signed audit log that anyone verifies offline. Change one row and verification breaks at it. Your agents keep running in their existing framework. MakerChecker is the checkpoint in front of them and the record behind them: a Fastify server on Postgres. Agents connect as a flow MakerChecker runs the steps and gates or a proxy session MakerChecker authorizes and records tool calls your framework executes . Both write the same audit chain. New here? Operator → Quickstart quickstart . Integrator → Integration integration . Security reviewer → docs/security-model.md /sammysltd/MakerChecker/blob/main/docs/security-model.md . Examiner → docs/audit-spec.md /sammysltd/MakerChecker/blob/main/docs/audit-spec.md . GRC analyst → docs/compliance/control-mapping.md /sammysltd/MakerChecker/blob/main/docs/compliance/control-mapping.md . Live demo https://makerchecker.ai/demo/ : an agent is blocked from exceeding its grant and from approving its own work, the run's audit chain verifies offline, and a named human signs off only where a rule requires it. No signup. Grant. Bind a role to exact skill versions. Nothing else runs. Check. Every tool call hits the gate first. No grant, over a limit, or against an SoD constraint, and it is denied before the tool body runs. Gate. High-risk steps wait for named human approval. The requester cannot approve their own. Record. State changes and tool calls commit to the audit chain in the same transaction, each event chained to the last by hash. Every refusal is named and audited: | Control | Refusal | |---|---| | Skill not granted to the role | skill not granted | | Over a per-invocation amount or count limit fails closed | limit amount , limit invocations | | A conflicting role already acted in the run segregation of duties | enforcement.sod violation | | High-risk skill with no preceding gate | high risk requires gate | | Any altered audit row | audit verify → { ok: false, failedSeq } | docker compose up Postgres and the server come up on port 3000. First boot seeds the demo and prints an admin key and an officer key — copy them from the logs. On a production non-demo deployment nothing is seeded; mint the first admin and its API key explicitly with node dist/cli.js bootstrap-admin --email