Typed Domain Grounding
A statically typed Kotlin DSL plus compiler and validation feedback gives LLMs a ground truth to work against — the same principle that makes kUML reliable, applied to engineering data.
One typed source. STEP-native models. Readable for humans and AI.
kSTEP is the first AI-first, code-first, STEP-native engineering modeling DSL for Kotlin/JVM. It brings Typed Domain Grounding — the architecture proven in kUML — to physical engineering: a statically typed DSL plus compiler feedback that gives humans and LLMs a reliable ground truth, from product structure to geometry.
// Bracket.kstep.kts — no imports required, kstep script host provides them
product(name = "Bracket-42") {
description = "Mounting bracket, aluminum, 4-hole"
partNumber = "BRK-42"
partVersion(id = "C") {
approvalStatus = Approved // type-safe enum, not a string
approvedBy = "J. Betchvaia"
}
}
// kstep render Bracket.kstep.kts --out Bracket.step (STEP Part 21 / AP242) Target syntax — sketched for M1, not shipped yet.
Today's CAD world offers GUI suites with proprietary formats — or code-first scripting without real AI integration. kSTEP is the deliberate third way.
A statically typed Kotlin DSL plus compiler and validation feedback gives LLMs a ground truth to work against — the same principle that makes kUML reliable, applied to engineering data.
kSTEP speaks ISO 10303 directly — AP242, Part 21 export, product structure and beyond. No binary vendor formats, no lossy conversion.
Geometry builds on OpenCascade (OCCT), accessed via JNI on the desktop first — with a WASM path already open for a later browser playground, from the same codebase.
LLM agents are a first-class user of the DSL — named parameters everywhere, validation loops, tool calling and an MCP server on the roadmap, mirroring what kUML already ships.
CadQuery and Build123d are Python — no static types, no compiler feedback. Kotlin's type system is kSTEP's deliberate differentiator, not an accident of language preference.
Apache 2.0 for kSTEP's own code, dynamically linked against LGPL OCCT and PlaneGCS. Cleared deliberately during Discovery — no GPL traps.
The repository is real, the milestones are public, and every step lands in the open.
kSTEP on GitHub