As-Is
What the code actually contains.
ARCHITECTURE CONTRACT · EXPLORER · DETERMINISTIC CHECKS
ArchKeel checks architecture boundaries locally and in CI. Its optional change-check compares a candidate with an expectation published before submission, for humans and coding agents.
Architecture checks for coding agents
Local · No LLM in the checker · MIT · Python, Dart, TypeScript with different analysis scope
RECORDED FINDING / DATAMIMIC EE
During the DATAMIMIC EE refactoring, ArchKeel reported an internal import even though the public interface existed. It was one of three interface findings; the focused test suite passed.
from datamimic_ee.errors.context import DescriptorLocation # before
from datamimic_ee.errors import DescriptorLocation # afterRead the case study → · Python guide →
Source: DATAMIMIC EE field notes. We develop both DATAMIMIC and ArchKeel.
What the code actually contains.
What the contract declares.
Where implementation and Target differ.
Open a component to explore its responsibilities, interfaces and dependencies. As-Is, Target and Diff show our own code and the contract declared for it.
Recorded snapshot · 79a2296 · generated 2026-10-29. Analysis limits and UNKNOWN are recorded in the report.
Open the full report ↗Latest published report ↗OUR OWN PRACTICE
Teams at rapiddweller use ArchKeel across projects and technologies, including DATAMIMIC CE, EE and platform projects. The DATAMIMIC case below comes from our own work.
In DATAMIMIC CE and EE, ArchKeel surfaced imports across internal interfaces. The case study shows findings, corrections and analysis limits.
Read the case study →Teams also use ArchKeel in platform projects across different technologies.
GREEN TESTS ARE NOT ENOUGH
A coding agent can cross a boundary without failing a behavior test. This rule declares the boundary. The finding identifies the source location.
{
"id": "DEP-RENDER-NO-STORE",
"kind": "forbidden_dependency",
"source": "shop.render",
"target": "shop.store",
"include_type_checking": true,
"rationale": "Text projection consumes typed values without touching persistence.",
"provenance": ["docs/architecture/shop.md"],
"decided_by": "architect"
}10 lines from the Shop rule. The full contract also contains components and other rules.
Presentation reaches into persistence. This dependency is forbidden by the contract.
from shop.store import OrderRepositorySource: Shop fixture in the README.
ARCHITECTURE GOVERNANCE
Agents can create a growing collection of drift and boundary checks. A shared architecture contract can consolidate overlapping structural rules when their scope and failure cases match.
Runtime behavior, API compatibility and security still need their own tests.
How to consolidate checks safely →EVIDENCE / PYTHON REPLAY
A switch to dictionary dispatch keeps eight behavior tests green. Static analysis can no longer resolve the new call. The candidate is rejected for that regression.
# before · sample/work.py
from sample.helpers import credit, debit
def run(key: str, amount: int) -> int:
if key == 'credit':
return credit(amount)
if key == 'debit':
return debit(amount)
raise KeyError(key)
# candidate · sample/work.py
from sample.helpers import credit, debit
def run(key: str, amount: int) -> int:
handlers = {'credit': credit, 'debit': debit}
return handlers[key](amount)This replay measures static visibility. It does not establish a runtime defect. The source record contains the full conditions and call counts.
Conditions & source ↗Result JSON ↗Reproduce ↗WHY ARCHKEEL?
Import Linter and Tach check Python boundaries; ArchUnit tests JVM architecture, including calls and accesses. dependency-cruiser and Nx check dependencies in JavaScript/TypeScript projects.
ArchKeel combines declared-change checks, regression checks on comparable analysis evidence, and focused snapshot queries that retain UNKNOWN. ANMA and code-governance also support agents. Choose ArchKeel when you need this review loop.
Compare the candidate with an expectation published before submission.
Fewer findings are insufficient when analysis can see less.
Query the contract and findings by scope. Keep global results and UNKNOWN.
Compare the tools against the review loop you need.
Compare tools and limitsYOUR FIRST CHECK
Python 3.11+ and a Git repository with at least one commit. Use a Python version compatible with your project.
Ask your agent to read the architecture docs, propose boundaries, and let you decide which dependencies are allowed.
Read the setup guide ↗uv tool install archkeel
archkeel skill install codex
# or: archkeel skill install claudearchkeel validateFor the declared-change gate: archkeel check with the protocol configured. report produces evidence and can exit 0 despite FAIL or UNKNOWN.
ArchKeel 4.0.1 is released. Historical examples use their documented versions. Release notes ↗
ARCHKEEL CHECKS ARCHKEEL
We check our own code with the same tool. The snapshot in the Explorer contains these rule assessments:
Completed rules without violations.
Rules with recorded violations.
Rules whose required evidence is incomplete.
Overall result: UNKNOWN. Passing rules leave the remaining analysis gaps open.
Inspect findings and evidence ↗FAQ
Architecture checks for coding agents. ArchKeel checks declared architecture boundaries and changes in AI-assisted code. The CLI runs locally and deterministically, without an LLM in the checker.
If you only need import or module constraints in your existing stack, your current checker may be sufficient. ArchUnit also offers JVM structural tests.
Complete runtime correctness or good architecture. Analysis is static and depends on the language profile.
The collaborative Studio interface is planned. The CLI and its reports are available. See the Studio concept on Vision & Roadmap.