Your agents ship code faster than anyone can review it. Skeg gives that code a spec to answer to, a review before you push, and a gate it must pass — without changing your IDE, your agent or your model.
any IDE · any agent · any model · self-hosted · free for teams up to five
$ skeg review comparing 14 files against specs/guest-checkout.md in scope guest session, payment intent, tests out of scope adds a redis dependency (not in the spec) risk card number logged at handler.ts:88 not evidenced "declines show a retry" — no test
Install
A single binary, no runtime, no account. Run it in any repo you already have.
skeg undo removes exactly what it addedWhy
None of this is the agent's fault. It did what you asked, at a speed the process around it was never built for.
No spec existed, so nobody can say. Scope creep arrives as a 900-line PR nobody wants to review.
A key, a customer record, a production connection string. Nobody was watching the wire.
rm -rfAnd you found out afterwards. Agents run commands and call tools; a gateway sees none of it.
How it works
Skeg wraps the tools you already use. Not a new IDE, not another agent, not another gateway.
One page with acceptance criteria. skeg review gives the CI verdict before you push; skeg pr does the paperwork. Your agent reads the same spec.
Secrets stripped before they leave, approved models, per-seat budgets. Plus hooks that stop destructive commands and reads of .env.
Architecture, decisions and past incidents as markdown in the repo — read by your agent and by the next engineer.
Pricing
There is no payment system yet, deliberately. Small teams stay free permanently; design partners get everything free for twelve months and help set the price.
Up to five builders. No card, no expiry, no seat audit.
Ten teams. The whole product free for twelve months, hands-on setup, a call every fortnight.
A platform fee plus seats for builders. Reviewers free. Never per PR, per prompt or per commit.
Open core
Skeg is Apache-2.0 with no CLA — you keep your copyright. Every change here goes through Skeg's own spec, size cap, security scan and review, so if the tool is irritating, contributors feel it before customers do.
Go, Rust, Ruby, PHP, Elixir, Swift. One folder: lint, test, build, CI job, agent rules. No Go code required, and immediately useful to someone.
Found something the gate lets through? Add the pattern and its canary case, and a release-blocking test protects everyone from then on.
136 regression checks and an 81-step end-to-end suite, plus an audit that fails the build if this website ever claims something the binary cannot do.
Standard library only, no third-party Go dependencies, and no vendor model default — a CI guard enforces both. What gets merged, and what gets pushed back →
Feedback
One command, from the terminal where the annoyance happened. It shows you exactly what would be sent before anything goes, and it never includes your code, paths or prompts.
$ skeg feedback bug "pr guessed the wrong ticket" $ skeg feedback suggestion "let me skip the size cap"
Or in writing
Tell us your team size, which agents you use, and what you would want working in the first week. We reply within one business day.
Questions
No. Any IDE, any coding agent, and any OpenAI- or Anthropic-style endpoint — hosted, in your cloud, or a model you run yourself.
No. Everything runs in your network. We receive nothing, so we cannot lose it or train on it. Detail, including what is not done yet, on the trust page.
No, it works with yours. Skeg adds the spec and PR gates, the endpoint hooks that see what agents do, and the knowledge base.
Yes, for whoever runs the platform: an eight-screen admin app you run locally, plus dashboards in your own network. Developers stay in the terminal. How to run it.
No, deliberately. Skeg is one executable on your PATH; an .msi would add an uninstall entry, possibly ask for administrator rights, and give you nothing copying a file does not. Windows developers get PowerShell, Scoop or WinGet.
A skeg is the fin aft of the keel. It keeps a heavy hull tracking straight instead of wandering off the line it was pointed at.