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.
Agents produce more code than people can read. Review becomes the bottleneck — or a rubber stamp.
Code that compiles and passes its own tests — but does something nobody asked for.
An agent that writes the code, the tests and the definition of done will always pass its own exam.
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.
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.
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.
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.
| People decide | Agents do |
|---|---|
| What to build, and in what order | Draft and evaluate requirements |
| How a feature should behave, when asked | Design test scenarios and cases |
| Exemptions and relaxed checks | Write the code and the unit tests |
| Credentials and access | Review each other's work, merge, release |
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.
$ 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.
We're opening Keel to a small number of engineering teams already building with agents.