Loading…
Python today · TypeScript next
leangate
A calm second pair of eyes inside your coding agent.
It checks every change against your whole repo, and won't let the agent call the task done until the code belongs there.
Install LeanGate by following https://leangates.com/agents.md
Your agent runs the installer; you approve the machine once in your browser. The links only fill in the prompt: nothing runs until you press Enter.
irm https://leangates.com/install.ps1 | iex
In PowerShell, in the repo you want checked. It opens your browser once to approve the machine, installs LeanGate and connects your AI tools. Run it again to update.
curl -fsSL https://leangates.com/install.sh | sh
In a terminal, in the repo you want checked. It opens your browser once to approve the machine, installs LeanGate and connects your AI tools. Run it again to update.
Private beta: request access first. Free during the beta, with 1,000 model decisions a month. Prefer to set it up by hand?
What changes
Tested on repos it had never seen.
Claude Code, the same tasks with and without LeanGate, on PostHog, Dagster, frappe, JumpServer and addons-server. Five runs per task, each reviewed blind by a separate model.
190 times, down from 19
times the agent shipped the unsafe code a prompt pushed for, and called it done.
Of 25 runs. With LeanGate it fixed the code or stopped and asked you.
40%64%
of the time it used the helper your repo already has, instead of writing another.
25 runs each, five reuse tasks.
18 of 19
reused the right helper once LeanGate had learned the repo, in 5 turns instead of 8.
With LeanGate's memory wiped: 14 of 19.
The first run let 4 unsafe changes through, all one gap (a PagerDuty routing key). It was fixed, and the 0 is from the run after. Small samples: treat a run or two as noise.
How it works
Four moments in your agent's loop.
A plugin for Claude Code, or an MCP server for any agent. Simple checks run on your machine in milliseconds; NVIDIA Nemotron and Jev weigh in only where judgement is needed.
-
Before it writes
Your repo's own helpers, and the ones earlier changes used for tasks like this, arrive with the task. The agent starts from what you already have.
-
After every edit
Reinvented helpers, missing timeouts, swallowed errors, injection, secrets: flagged on the lines it just changed, in milliseconds, before it builds on them.
-
When it wants to finish
It can't call the task done while a blocking issue is open. It fixes the code or asks you, and only you can waive a security finding.
-
Every run
It learns your repo: which helper does which job, how your endpoints check permissions, which rules always hold here. Per repo, nothing shared.
Privacy
Your repo stays on your machine.
The dashboard shows only repos your own LeanGate reported from, only to you.
What the dashboard receives
- Each finding's rule, file, line, message and decision
- Timing, and LeanGate's own model cost per run
- What LeanGate learned: helper names, rule records
- The repo's name, from its git remote
What it never receives
- Your source code. Snippets are dropped and quoted code is blanked out; a message may still name a function
- Your machine's file paths
- Repos without a git remote, or anything when sync is off
- Your GitHub repos: sign-in only reads your public profile
To judge a finding, LeanGate sends the changed snippet it's about to the models, which we run for you during the beta: it passes through this site to the provider and isn't stored, logged or kept by either. Export or delete everything from your account page, any time. Everything that leaves your machine, and where it goes.
Get started
LeanGate is in private beta.
Sign in and request access. Once you're approved, one command sets everything up. It checks Python codebases today, on Python 3.11 or newer.
Your usage this month
AccountInstall with one command
RecommendedRun this in your terminal, in the repo you want checked. Your browser opens once so you can approve the machine; then it installs LeanGate and connects your AI tools. Run it again any time to update.
Windows (PowerShell)
irm https://leangates.com/install.ps1 | iex
macOS / Linux
curl -fsSL https://leangates.com/install.sh | sh
Or ask your coding agent to do it:
Install LeanGate by following https://leangates.com/agents.md
Not approved yet? Sign in and request access in step 2 below first. The installer waits for your approval in the browser, never for a key.
Or set it up step by step
The same thing by hand: download the file for your computer, install it, and connect it with an API key. Once you're signed in, this list ticks itself off as you go.
-
Sign in
With GitHub. LeanGate only reads your public profile: no repos, no code.
Signed in as .
Sign in with GitHub -
Get access and install
LeanGate is invite-only while in beta. Sign in to request access.
Ask for a spot in the beta. We review requests by hand, usually within a day.
Request received. You'll be able to install as soon as it's approved; this page updates by itself.
Your request wasn't approved for this round of the beta. We'll be in touch when spots open up.
You're in. Download the file for your computer and Python version, then install it:
No build for your computer yet: tell us which one you need.
Not sure which Python? Run
python --version.pip install "./leangate.whl"
Claude Code: add the hooks to the repo you want checked.
leangate hooks --write --repo .
Any other MCP agent (Codex, Cursor, VS Code): add
leangate mcpas an MCP server. -
Create an API key
Once you're signed in, you can create it right here.
One key per machine, so you can switch one off without touching the others.
Your new key
Copy it now: it's shown only this once.
-
Activate this machine
Run this and approve the machine in your browser (or
leangate login --pasteto paste the key from step 3; it's hidden as you type). It activates LeanGate here and sends run reports (never code) to your dashboard.leangate login
Waiting for a machine to connect…
-
Your first run
Work with your agent as usual, or run
leangate verifyin a repo that has a git remote. Each run appears on your dashboard as it finishes.