
Gnt
io.github.gnt-aiPublished by GitHub account gnt-aiv0.6.0Updated Nov 2, 2026
Git-native policy layer for AI agents: check_action verdicts against rules approved via PR.
Overview
Git-native policy layer that lets an assistant check a planned action against team-approved rules and get an allow, block or escalate verdict.
- What you can do
- Check a described action against approved rules and get an allowed, blocked or needs_human verdict with cited rules and a one-line reason
- Search approved rules semantically, optionally filtered by tag
- Fetch a single approved rule by id with its provenance (approver, date, citations)
- List compiled skill pack versions for the org and fetch a pack's manifest and file list
- When to use it
- Use it when agents take consequential actions such as refunds, deletions or customer messages and you want each one gated by rules your team approves through merged pull requests, with a traceable paper trail.
- Requirements
- Remote MCP endpoint at api.gntai.dev. The companion CLI needs Node 22.13 or newer, a gnt login sign-in that stores an API key locally, and a connected GitHub repo for rules. Optional variables GNT_API_URL, GNT_WEB_URL and GNT_CONFIG_DIR change endpoints and config location.
Installation
In SourceWeft
- Open Gnt in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Use with an agent
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/io.github.gnt-ai%2Fgnt/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Other MCP clients
Add this to your client's mcpServers config.
{
"mcpServers": {
"gnt": {
"type": "http",
"url": "https://api.gntai.dev/mcp"
}
}
}README
Run the setup below once and every agent your team runs has a git-native rulebook it has to check over MCP before it acts, approved the same way your code already is: a merged pull request.
- Rules live in your repo as files and ship through normal PRs, not a dashboard click.
- Agents call
check_actionover MCP before anything risky (a refund, a delete, a message to a customer) and get back an allow/block/escalate verdict. - Every rule traces back to the git file and the PR that approved it, so "why did the agent do that" always has a paper trail.
Prefer not to run any of this yourself? The hosted version at gntai.dev does the same thing without you standing up a Postgres instance.
Get started (30 seconds)
Try it with Docker first
To see a real check_action response before installing Node or npm, clone
the repository and run the Docker-only demo:
It builds the full local stack in an isolated gnt-demo Compose project,
seeds an approved refund rule, calls check_action, and prints a curl command
you can run again. Without an Anthropic key the real fail-closed path returns
needs_human; pass GNT_DEMO_ANTHROPIC_API_KEY=sk-ant-... ./demo.sh to opt in
to the model's grounded policy verdict. The demo uses deterministic local embeddings and
throwaway localhost-only secrets, so it does not need a ZeroEntropy key.
[gnt connect's interactive picker, and what gnt prebrain's draft-PR output looks like]
Nothing for
gnt prebrainto scan yet? Rungnt initfirst — it scaffoldsrules/locally with a couple of example rule files so there's something real to look at and edit, and points you atgnt prebrain --starter-packsfor a curated pack to start from instead.
That merge lands a rule file in your connected repo, shaped like this:
Each file is plain markdown with YAML frontmatter:
See it in action
There's no captured transcript to show yet (see the gap noted at the bottom of this README).
Here's the actual response shape a check_action call returns, straight from the tool's
contract:
verdict is one of allowed, blocked, or needs_human. needs_human is the fail-closed
default: no approved rule covers the action, retrieval failed, or the check couldn't complete.
It never guesses.
What it does
One MCP endpoint, five tools:
Prerequisites
Install
gnt needs Node >=22.13. If the CLI fails to start with a version error, update Node first and confirm with
node --version.
Common commands
Config
Privacy
- No analytics or telemetry dependency in the CLI or the web app.
gnt prebrain's default extraction mode is cloud, not on-device: your source text goes straight to Anthropic's API (or Vercel AI Gateway with zero-data-retention, if you configure it), never to gnt's own servers. Fully on-device extraction needs--mode localagainst a local Ollama daemon.- The extracted rule candidates still get sent to gnt's API to open the PR. Raw source text stays off gnt's servers in cloud mode; the resulting rule text doesn't.
- Rules live in your connected GitHub repo and in gnt's own database. The MCP tools read from gnt's store, not by cloning your repo on every call.
- Self-hosting:
apps/apionly sends error data to Sentry if you setSENTRY_DSNyourself. Leave it unset and nothing goes out.
Team setup
- Who writes rules: anyone with access to your connected repo, either through
gnt prebrain(batch-extracted from real sources) orgnt review(hand-proposed). - How approval works: merging the PR is the approval. There's no separate publish step.
- What gets committed:
rules/<rule-id>.mdfiles with the frontmatter shown above and a plain markdown body. - Catching a malformed rule before it's reviewed:
gnt rules lintchecks a rule file's frontmatter locally, andgnt-ai/gnt/.github/actions/lint-rulesruns the same check as a CI step on your rules repo's own PRs, so a bad frontmatter fails the PR instead of the review.
Troubleshooting
Self-hosting:
gnt login's browser step has nowhere to land.gnt loginopens a browser to a/cli-loginpage and polls the API for the resulting key — that page is served by the hosted product's web app, which isn't part of this repo. There's no CLI-only login flow (device code or otherwise) today, and nogntcommand to set a key manually. Self-hosting this stack currently means building your own thin frontend for that one route (it just needs to complete the sign-in flow and hand the CLI a key). This is a real, open gap in the self-host path, not a config issue — closing it properly means adding a CLI-only login flow.
ValueError: refusing to start: these settings still have their .env.example placeholder value...Achange-me-...string is still sitting inapps/api/.env. The error names every offending field; generate a real value for each and retry.
storefails to start withGNT_STORE_INTERNAL_API_SECRET is not set.apps/store/.envwasn't filled in, or wasn't picked up. Confirm the file exists at that exact path, not still named.env.example.
Every store-to-api call gets rejected with 401 or 403, even though both services are up.
STORE_INTERNAL_API_SECRET/APPROVAL_SIGNING_SECRETinapps/api/.envdon't byte-for-byte matchGNT_STORE_INTERNAL_API_SECRET/GNT_APPROVAL_SIGNING_SECRETinapps/store/.env. This fails closed by design. Regenerate both pairs so the two files agree.
A rule fails to save with an embedding or rerank error.
apps/store/.envis missingZEROENTROPY_API_KEY, or it's still empty. Get a real one from zeroentropy.dev.
Full command reference
Shell completion
Learn more
- Self-hosting walkthrough, including the production-hardening path:
docs/self-hosting/README.md - Security policy:
SECURITY.md
Self-hosting is a first-class, fully supported path — Apache-2.0 from day one, run it on your own infra with your own keys, or use the hosted version at gntai.dev. The homepage FAQ and the self-hosting docs both describe this same path; there is no "not today" caveat.
License
Copyright © 2026 gnt.ai. Licensed under Apache-2.0 — see LICENSE for the terms and NOTICE for the trademark rule on forks.
Why is this free?
Self-hosting gnt costs you nothing, forever — clone it, run docker compose up, bring your own keys. What we sell is the part self-hosting doesn't give you: hosting at gntai.dev, managed OAuth connectors (GitHub, Slack, Linear, Notion, Zendesk — no app-approval process on your end), and usage-based AI features. If you'd rather run it yourself, that's a fully supported, fully free path, not a crippled trial of the real thing.
Contributing
See CONTRIBUTING.md for dev setup and how to open a PR. Every commit needs a Signed-off-by trailer (git commit -s), the Developer Certificate of Origin instead of a CLA. No separate form, just the flag.
Thanks to everyone who's sent a PR:
[gnt contributors]Source: README.md at commit 59a743d
Tools
0Version history
1- v0.6.0LatestSep 16, 2026
Score
85% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 daysRequired25 pts
- Auth declaredRequired10 pts
- Tools listedRequired15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts