The backbone your
agents are missing.

Prevents agents from reading the wrong thingsand breaking the unseen things.

$curl -fsSL keel.engineer/install.sh | bash

Supports macOS, Linux, and WSL2.

Without keel — runtime crashWith keel — caught at compile
With keel — caught at compile

$ keel compile

error[E004]: Function `getUserById` was removed but has 3 caller(s)

--> src/models/user.ts:7

= fix: Remove or update callers of `getUserById` before deleting it

= callers: src/api/handlers.ts:4, src/api/middleware.ts:12, tests/api/user.test.ts:8

error[E001]: Signature of `createUser` changed; 2 caller(s) need updating

--> src/models/user.ts:15

= fix: Update callers of `createUser` to match new signature

= callers: src/api/handlers.ts:9, src/services/onboarding.ts:22

error[E005]: `handleGetUser` expects 2 args but callers pass 1

--> src/api/handlers.ts:3

= fix: Update call sites or restore previous arity

= callers: src/routes/users.ts:14

3 error(s), 0 warning(s) in 3 file(s) (38ms)

Without keel — runtime crash

$ node src/server.ts

Server listening on port 3000...

$ curl localhost:3000/api/users/42

TypeError: getUserById is not a function

at handleGetUser (src/api/handlers.ts:4:16)

at Layer.handle [as handle_request] (node_modules/express/lib/router/layer.js:95:5)

at next (node_modules/express/lib/router/route.js:144:13)

at Route.dispatch (node_modules/express/lib/router/route.js:114:3)

at Layer.handle [as handle_request] (node_modules/express/lib/router/layer.js:95:5)

at /src/node_modules/express/lib/router/index.js:284:15

[ERROR] Unhandled exception in request handler

Request: GET /api/users/42

Status: 500 Internal Server Error

Time: 2026-02-19T02:47:31.204Z

THE PROBLEM

AI agents don't understand
your architecture.

They read stale context. They break callers they never see. Every removed function, every changed signature — invisible until production.

Broken Callers

Agents change function signatures without updating the 50 other places that call them.

Type Drift

Subtle type mismatches that compile fine but crash at runtime. Agents don't trace downstream.

Structure Rot

Files in wrong modules, duplicated logic, code that violates your core domain boundaries.

HOW IT WORKS

Three commands. Complete structural coverage.

01. Map

Builds a graph of your codebase — functions, dependencies, type boundaries, all of it.

~/acme-api — keel map

02. Compile

Checks every import, boundary, and contract against your architecture map. Fails fast when something's wrong.

~/acme-api — keel compile

03. Fix

Generates a fix plan with exact diffs — or let your agent apply them automatically.

~/acme-api — keel fix
SETUP

One command. Every tool configured.

~/acme-api — keel init

Builds the graph DB

Scans every function, class, and call edge into .keel/graph.db.

Installs hooks

Git pre-commit hook and .keel/hooks/post-edit.sh — enforcement runs automatically.

Configures your tools

Auto-detects AI coding tools in your repo and generates their hook/instruction files.

<200msCompile Time
<5sFull Map Scan
<50msDiscovery
~50MBRuntime Footprint
INTEGRATIONS

Works with 11 tools you already use.

keel init auto-detects which tools you use and generates the right configs. No manual setup.

Claude Code
Claude CodeEnforced
Cursor
CursorEnforced
Gemini CLIEnforced
WindsurfEnforced
Letta Code
Letta CodeEnforced
GitHub Copilot
GitHub CopilotCooperative
Aider
AiderEnforced
Codex CLIEnforced
AntigravityEnforced
GitHub ActionsCI
VS CodeNative
DEVELOPER EXPERIENCE

Output designed for agents and humans.

JSON Output (for agents)
Human Output (for you)
--llmOptimized for LLM context windows
--batchBatch mode defers non-critical checks
--jsonMachine-parseable for CI pipelines
PROVEN

Built with obsessive rigor.

1,071TESTS PASSING
4LANGUAGES
11INTEGRATIONS
0DEPENDENCIES
COMING SOON

Free is complete. Pro is multiplied.

Every CLI command, every language, every integration — free forever. Pro adds team visibility, naming governance, and analytics.

Team Dashboard

See what your agents build — module health, error trends, naming drift.

Naming Conventions

Define once, enforce everywhere. Your agents follow the same rules.

Multi-Repo Linking

Connect frontend and backend schemas. One graph across repositories.

Get early access when Pro launches.

Start enforcing structure today.

$curl -fsSL keel.engineer/install.sh | sh

Supports macOS, Linux, and WSL2.