Define Your Data Model. Get Everything Else for Free.
DevKit is the Python development toolkit for metadata-driven C++/Python interoperability — code generation, type-safe runtime, database tooling, all in one bundle.
DevKit, dsviper, Viper — what's what?
Three names appear across this site. Here is how they layer.
DevKit
What you download here
The Digital Substrate Python toolkit, distributed as a single ZIP — bundles dsviper, the Kibo code generator, templates, CLI tools, and offline documentation.
dsviper
What runs in your Python apps
The Python runtime distributed on PyPI. Strong-typed Python API over the Viper C++ engine. Installed via pip install dsviper or pulled in by the DevKit ZIP.
Viper
The C++ engine behind dsviper
The underlying metadata-driven C++ runtime — type system, commit DAG, database tier. Currently used internally; not yet distributed standalone.
From Data Model to Production in 3 Steps
Define your data model once. Get type-safe code, versioning, and Python bindings automatically.
DSM
Describe
Define your data model with a declarative language. Types, structures, relationships.
Learn more →Kibo
Generate
Automatic code generation. 57x amplification. C++ and Python infrastructure.
Learn more →See It in Action
Define your model in DSM, use it in Python with full type safety
namespace Tuto {f529bc42-...} {
concept User;
struct Login {
string nickname;
string password;
};
struct Identity {
string firstname;
string lastname;
};
attachment<User, Login> login;
attachment<User, Identity> identity;
}; from dsviper import *
# Open database and inject constants
db = CommitDatabase.open("model.cdb")
db.definitions().inject()
# Create key and document
key = TUTO_A_USER_LOGIN.create_key()
login = TUTO_A_USER_LOGIN.create_document()
login.nickname = "zoop"
login.password = "robust"
# Commit to database (versioned)
state = CommitMutableState(db.initial_state())
state.attachment_mutating().set(TUTO_A_USER_LOGIN, key, login)
db.commit_mutations("Add user", state) Why DevKit?
A complete Python toolkit for data-intensive applications
Type Safety
Strong typing with immediate exceptions on type mismatch. No silent failures, no runtime surprises.
Data Versioning
Built-in commit DAG for your data. Track changes, branch, merge. Like Git, but for structured data.
Python Integration
Classes exposed via dsviper. Seamless C++/Python interoperability with zero boilerplate.
Persistence
SQLite-backed storage with automatic schema migration. ACID transactions out of the box.
Code Generation
57x amplification. Write 273 lines of DSM, get 15,592 lines of production-ready infrastructure.
Metadata Everywhere
Runtime introspection for types, values, serialization, RPC. One definition, multiple uses.
Ready to Get Started?
Download DevKit and build your first type-safe data model in minutes.