Kibo
Reads DSM, applies a template pack, emits what the pack defines. Kibo 2 is the current line — with kibo-template-viper 2, one DSM model gives C++, Python and TypeScript over the Viper runtime.
Engine + Template Pack
Kibo is the engine; a template pack defines what it emits. The two are decoupled — pair Kibo with any pack to target any runtime.
Kibo 2 — the engine
- Reads
.dsm.json— a DSM model, encoded bydsm_util.py encodeor by kibo-project - Template Model 2 — each DSM namespace is a unit; each type is named in three spaces: the DSM's, the target's, the binding's
- Renders per scope — once for the model, once per namespace, once per pool, as each template declares
- Template-agnostic — no built-in language or runtime bias
kibo-template-viper 2 — first-party pack
Targets the Viper runtime. Features, selected per target:
- Every target —
Base,Fields,Paths,Attachments,Pool - Per target —
PoolRemotein C++,Wheelin Python,Packagein TypeScript - One namespace, one unit — a C++ namespace, a Python module, a TypeScript directory
- Typed proxies over the runtime, the same surface in Python and TypeScript
Write your own template pack
Kibo is engine-only. If kibo-template-viper does not cover your target,
author a pack of your own and keep DSM as the single source of truth across stacks.
Why a custom pack?
Target a runtime kibo-template-viper doesn't cover —
Django, Protobuf, gRPC, JSON Schema, OpenAPI, your
internal codegen. One DSM model, N stacks; no schema drift.
The contract
Author StringTemplate (.stg) files that read
Template Model 2 — Kibo's projection of DSM
namespaces, concepts, clubs, structures, enumerations, attachments and function pools.
Where to learn
The Template Model reference documents every accessor a template reads.
Template Model reference →Workflow
Write DSM
model.dsm Validate
dsm_util.py check Generate
kibo_project.py generate Integrate
import model cmake && make npm install