EVERY REQUIREMENT. EVERY DECISION. EVERY PROOF.

From vibe coding to
governed development.

Keel brings structure, traceability and verification to AI-driven software development — without making your agents wait on people. Built for systems you'll maintain for years: every change traces to a requirement, an independent reviewer agent checks every merge request, and people answer only the questions that need them.

Apply for early access See it on a real system
THE PROBLEM

Agents write fast. Who checks?

Review can't keep up

Agents produce more code than people can read. Review becomes the bottleneck — or a rubber stamp.

Passes, but isn't what was asked

Code that compiles and passes its own tests — but does something nobody asked for.

Self-graded work

An agent that writes the code, the tests and the definition of done will always pass its own exam.

Code nobody can maintain

Vibe coding is fine for a prototype. A system you run for years isn't — six months later, someone has to say why each line exists and which requirement it serves.

HOW IT WORKS

One source of truth. Controlled execution. Verifiable outcomes.

01 · ONE SOURCE OF TRUTH

Requirements and decisions, on the record

Requirements, acceptance criteria, tasks and decisions are versioned records in Keel, and every change traces back to them. An examiner agent checks requirement changes before they're published. When a question needs a person — functionality, direction, exemptions, relaxing a check — the answer is recorded, with who decided.

02 · CONTROLLED EXECUTION

Agents work inside the rules

Coding agents work under the project's written engineering standards — library modules may only depend downward, enforced by architecture checks in CI. They can't change the acceptance criteria their tests must prove, and a rule forbids weakening a check to get green. A separate reviewer agent checks every merge request, test changes included.

03 · VERIFIABLE OUTCOMES

Done means the requirement holds

A task can't be marked done until its requirement chain exists and passes Keel's readiness check, and no code change merges until the automated checks pass. Routine approvals are delegated to agents, and the record shows which decisions a person made.

WHO DOES WHAT

A clear line between people and agents.

People decide Agents do
What to build, and in what orderDraft and evaluate requirements
How a feature should behave, when askedDesign test scenarios and cases
Exemptions and relaxed checksWrite the code and the unit tests
Credentials and accessReview each other's work, merge, release
PROOF

Keel builds Keel. And DynoInvoice, in public.

Keel is developed under its own governance. DynoInvoice, an invoicing system built with Keel, will be published on GitHub for study, with a public view that links its commits to tasks, requirements and reviews.

Read the case study
REAL KEEL OUTPUT · DYNOINVOICE, EXCERPTED
$ keel show INV-T-4981
# INV-T-4981 Build transport-svc: service skeleton, the stable internal transport interface, the Access Point adapter port and the attempt log

- type: task / implementation
- revision: 16
- published: snapshot 3454
- scope of effect: product

## Run State

- state: done
- state changed at: 2026-10-22T15:38:13Z

## Last Done Evidence

- kind=ac_checks value=INV-T-4981: done-when per live Keel task | 21 test classes all pass in the report
- kind=ci value=<pipeline 22993> success
- kind=mr value=<merge request !1> (merged by coder agent; independent review passed by reviewer agent)

## Body

Done when:
- Five Gradle modules transport-domain, -application, -adapters, -bootstrap and -contract build with the convention plugins; the layer rule fails the build on a Spring or jOOQ import in transport-domain …
- Contract gate: transport-contract is generated from the published contract; the gate fails …
- Every acceptance criterion in this task's ac_refs (17) has an automated test named by its key that passes at the service boundary against the certification-kit simulators …
  … (13 done-when items in total)

Fourth round (owner's own answer to INV-Q-8339, option D, in chat 2026-10-22: "transport-svc submitting the invoice payload to the Access Point is a system process in the architecture, not a human operation; …")

## Relations

- INV-T-4981 -> INV-REQ-538 (implements)
- INV-T-4981 -> INV-AC-1757 (implements)
  … 6 requirements, 17 acceptance criteria (implements), 22 tasks (depends_on), 1 module (owned_by_module)

$ keel show INV-REQ-538
# INV-REQ-538 Invoice data reaches IRAS only by API through an IMDA-accredited Access Point

- type: requirement / functional
- revision: 9 (active)
- published: snapshot 3131
- scope of effect: product

… marks omitted text. Internal links and account names are replaced in angle brackets or by role. Decisions are stored in English and recorded with who decided.

EARLY ACCESS

Become a design partner.

We're opening Keel to a small number of engineering teams already building with agents.

✓You get hands-on onboarding with the team that builds Keel, and direct influence on the roadmap.
✓We ask for one real project and regular, candid feedback.
✓Good fit if your team already uses coding agents and needs to answer to an auditor, a client or a regulator.