BNLGit sits beside your repo and generates a summary twin for every source file: auth.py →
auth.py.llm, carrying structured facts — symbols, imports, endpoints, DB entities, side
effects — each anchored to a line and pinned to a blob SHA. It's a real git mirror: diffable,
reviewable in PRs, greppable, offline, and consumable by any tool that speaks MCP.
# generated fact block — schema v3 symbol verify_token(token: str) -> Claims @ L42 reads env "JWT_PUBLIC_KEY" raises ExpiredSignatureError, InvalidToken security signature checked before payload is trusted @ L51 endpoint POST /api/session -> verify_token @ L88 db none stale? no # tracks blob 9f3c1e… ; re-derives on change
Agents retrieve the facts over MCP, then jump straight back to the exact source line at the pinned commit — no re-reading whole files, no stale context, no hallucinated behaviour. When a source blob changes, its twin is marked stale and re-derived; coverage is honest to the SHA.
Diffable, blameable, mirrorable, greppable, offline. No proprietary index, no vector lock-in — the artifact is git, and it's yours.
Symbols, imports, endpoints, DB entities, side effects, security notes — a published schema you can query, join across repos, and diff for drift.
Bring your own models. Dial-time SSRF egress control, fail-closed key handling, redacted secrets, zero telemetry. Nothing phones home.
Every triage signal is marked deterministic (AST, git, tests) or model-inferred with confidence — so an agent never acts on a guess dressed as a fact.
Built on Gitea (MIT). BNLGit is a commercial code-intelligence layer over an open-source forge —
it attaches to the repositories you already have. Your keys, your infrastructure, no telemetry.
The .llm typed-fact schema will be published as an open specification.