SID
How DIS Works

Intent, serialized.
A system, derived.

DIS compiles a declarative specification into a complete, working application — the backend, data model, API, and interface all derived from a single source, then validated against their own construction.

1,418
lines described the largest real project
236
files that project generated
0
warnings and errors on every verified build
schema.adl1,418 lines → full app
meta:
  version: "2.0"
  domain: "clinic"

topology database:
  kind: "postgresql"
  port: 5432

entity Appointment:
  field id: u64 @primary_key @auto_increment
  field doctor_id: u64 @required
  field scheduled_at: timestamp @required
  field reason: string @max_length: 512

contract AppointmentFutureTime:
  scope: "CreateAppointment"
  invariant: "req.scheduled_at >= now"
  enforcement: "pre_condition"
  on_violation: "abort"
  message: "Appointments must be scheduled in the future"

operation CreateAppointment:
  input: "doctor_id:u64, scheduled_at:timestamp, reason:string"
  output: "Appointment"
  create: "Appointment doctor_id=req.doctor_id, scheduled_at=req.scheduled_at, reason=req.reason"

operation CompleteAppointment:
  input: "id:u64"
  output: "Appointment"
  bindings: "appointment:Appointment@id"
  guard: "appointment.status == 'scheduled'"
  mutate: "appointment.status = 'completed'"
→ Parsing ADL ................... ✓ (28ms)
→ Validating entities ........... ✓ (12ms)
→ Checking invariants ........... ✓ (8ms)
→ Emitting Rust/Axum ............ ✓ (2.1s)
→ Emitting PostgreSQL schema ..... ✓ (340ms)
→ Emitting React frontend ........ ✓ (1.8s)
→ Emitting tests (24) ............ ✓ (920ms)
→ Emitting Docker + K8s .......... ✓ (210ms)
✓ 162 files generated
How it works

Define it once.
Emit a coherent system.

DIS derives backend, schema, API, and interface from a single specification. Because each layer is generated from the same source, the pieces cannot drift out of agreement.

A declarative source of truth

The application's structure and rules are expressed once, in a readable specification. DIS treats that specification as canonical and derives every layer from it.

Authority carried in the spec

Access and policy are declared up front and compiled into the generated system — enforced as part of the build, not bolted on after the fact or lost in documentation.

Consistency by construction

Schema, API, and interface descend from one source, so they stay in agreement by design. A change to the model propagates across every emitted surface at once.

A deployable, coherent system

The result is a runnable application — server, data model, API contracts, tests, and deployment scaffolding — produced as real files, not a mockup.

Your description
entity Appointment:
  field id: u64 @primary_key @auto_increment
  field doctor_id: u64 @required
  field scheduled_at: timestamp @required
  field reason: string @max_length: 512

entity Doctor:
  field id: u64 @primary_key @auto_increment
  field name: string @required
  field specialty: string @required

relation doctor:
  from Appointment.doctor_id → Doctor.id

operation CreateAppointment:
  input: "doctor_id:u64, scheduled_at:timestamp, reason:string"
  output: "Appointment"
  create: "Appointment doctor_id=req.doctor_id, scheduled_at=req.scheduled_at, reason=req.reason"
What DIS writes
#[derive(Serialize, Deserialize, Clone)]
pub struct Appointment {
  pub id: u64,
  pub doctor_id: u64,
  pub scheduled_at: DateTime<Utc>,
  pub reason: String,
}

pub async fn create_appointment(
  State(pool): State<PgPool>,
  Json(req): Json<CreateAppointment>,
) -> Result<Json<Appointment>, AppError> {
  // contract enforced: req.scheduled_at >= now
  let row = sqlx::query_as!(
    Appointment,
    "INSERT INTO appointments (doctor_id, scheduled_at, reason)
     VALUES ($1, $2, $3) RETURNING *",
    req.doctor_id, req.scheduled_at, req.reason
  ).fetch_one(&pool).await?;
  Ok(Json(row))
}

One description, every layer. The same input produces a working server, database, API docs, tests, and deployment setup — so the pieces stay in step without manual syncing.

How DIS processes

From specification to running system.

DIS parses the specification, derives the structure to build, validates its rules, emits every layer, and confirms the result is sound before delivery.

Stage 1
Parse
Reads and interprets the specification
Stage 2
Model
Derives the structure to be generated
Stage 3
Validate
Checks rules and constraints before emitting
Stage 4
Generate
Emits backend, schema, API, and interface
Stage 5
Self-check
Confirms its own output is sound
Stage 6
Deliver
Produces a runnable, deployable result
A real run — 1,418-line description → a generated codebase
Input
1,418 lines you wrote
Output
236 files on disk (incl. Rust, SQL, tests, docs)
Backend · Database · Tests · API docs · Docker
Capabilities

Specify the system.
DIS constructs it.

DIS transforms a specification into a working, self-validated system. Every capability below reflects the compiler's actual behavior today; what is not yet wired is stated as coming soon rather than implied.

1418
lines to specify the largest app
236
files generated for that app
14/14
benchmark apps compile clean
manual edits survive regeneration

A specification that becomes an application

backend · schema · API · interface

DIS consumes a declarative specification and compiles it into the backend, data model, API, and interface. A verified run on disk substantiates it: a 1,418-line spec yielded a full generated codebase.

  • Backend, schema, API, and UI from a single source
  • Real, generated code — not a mockup
  • One canonical specification to maintain

Verified output, attested on disk

every compiled run lands in the SHA-256 ledger

DIS validates its output as it generates and rejects anything invalid. Every compiled run is hashed into a signed Merkle ledger — see the live root on the evidence page.

  • Faults surfaced at generation time
  • Invalid output rejected, never shipped
  • Download → hash → compare against the ledger

Regeneration keeps your manual work

loop-escape — verified on the largest project

Hand-tune generated code, change the spec, regenerate — your manual edits come back. Marked regions are re-injected; whole files under custom/ are preserved. DIS is the generator you can iterate with, not just one-shot.

  • BEGIN/END MANUAL regions re-injected on every build
  • custom/ overlay files win over generated output
  • Regenerate freely without losing agent work

Attestable releases — live

every compiled run lands in the ledger

Every compiled run is hashed into a SHA-256 Merkle ledger signed by the control plane. Verify any artifact byte-for-byte — the live root and per-file hashes are on the evidence page.

  • Each build carries a verifiable hash
  • Download → hash → compare
  • Live merkle root on /evidence
For your agent

Your coding agent,
upgraded to a whole-application builder.

Hook DIS into the harness you already use. Your agent goes from writing files to shipping complete applications — and keeps its work when things regenerate.

Claude Code
connect, describe, ship
Codex
compile apps straight from the CLI
Cursor
agent drives DIS as a tool
Any MCP client
one protocol, every harness

Tell your agent what to build

You describe the app in plain language — entities, workflows, rules. Your agent turns that into a short, readable DIS specification. No boilerplate, no scaffolding by hand.

Your agent compiles the whole thing

One command — or one MCP tool call — and DIS writes the full codebase: server, database schema, API, frontend, tests, and deploy setup. Real files, ready to run.

Run it, break it, fix the spec

You and your agent run the app, hit a bug, and fix it where it belongs — in the specification. Recompile, and every layer updates together. No hunting through five codebases for the same change.

Your hand-written work survives

If your agent hand-tunes something DIS generated, that work is kept when the project regenerates. DIS never wipes manual edits — it re-applies them on top of the fresh build.

The game changer

Regenerate the whole project.
Keep every manual edit.

This is what makes DIS usable by real agents. Most generators are a one-way door: hand-tune the output and you can never regenerate. DIS breaks that loop. Your agent can change the spec, regenerate the entire application, and all the code it wrote by hand — the custom logic, the careful fixes, the bespoke pieces — comes back intact.

Marked regions survive regeneration
// BEGIN MANUAL: custom_helpers
pub fn my_custom_rule(x: i64) -> i64 { x * 2 }
// END MANUAL: custom_helpers

// regenerated code below stays in sync with the spec

Anything inside BEGIN/END MANUAL markers is snapshotted before regeneration and re-injected after. The rest of the file updates to match the new spec.

Whole files survive via custom overlay
your-app/
  custom/
    dashboard.tsx      ← hand-written, never touched
    auth_helpers.ts    ← hand-written, never touched
  backend/             ← regenerated fresh each time
  frontend/            ← regenerated fresh each time

Files under custom/ are copied over the generated tree after every build. Keep whole hand-written files here; they win over generated output, every time.

Verified on a real regeneration. A 363-line clinic specification was regenerated with a hand-written region and a custom overlay in place — both survived, the regenerated files changed, and the rebuilt app compiled.

Real runs, real evidence

Sample projects, compiled end to end.

Every number below is from an actual DIS run — generated, built, and verified end to end. Backend: cargo build. Frontend: tsc. "Build" shows warnings / errors.

ProjectSpec linesFilesLinesBuild
Control plane exemplar (largest)1,41823412,3310 / 0
SaaS exemplar50420611,2790 / 0
Clinic exemplar3631608,1160 / 0
Inventory exemplar3361647,8200 / 0
The engine behind these runs — verifiable commits (local only, no pushes)
362087dids-v7V3.0 authoring validation, manual-change preservation, exemplar fixes
d60a1c8ids-v7resolve req.* guards/contracts and clean generated-code warnings
9fd4bf4ids-v7make guard:/mutate: declarative syntax compile and persist
e63d005ids-v7unwrap nullable mutation targets before arithmetic
ff63343sid-platformresolve dis binary via canonical bin path with release fallback
Honest scope: per-build signed attestation with rollback is the next milestone and is not yet wired — it is not claimed as shipped. Everything else on this page was verified on real generated output.
Live today

Capabilities verified on the running system.

Everything here was tested against the live endpoint — not mocked, not planned, running now.

One-click connect

Paste one URL into your AI app and approve in the browser. OAuth 2.0 with PKCE and dynamic client registration handles the rest — no key copying, no config files. Verified live end to end.

Memory that persists

The platform remembers across sessions. Recall relevant patterns before you build and report outcomes after — a stored marker returns verbatim on a later recall. Verified against the running system.

Fair, enforced limits

Every tier has a real quota and rate limit, enforced per key on the live endpoint — trial, developer, team, and beyond. What you are told is what is enforced.

The pipeline

From specification to deployed system,
without the friction.

The end-to-end journey DIS performs: author a specification, derive a coherent system, validate it, and deliver something runnable. Anything not yet wired is flagged as coming soon.

01

Author the specification

The system's structure, data, and rules are captured in a declarative specification — human-readable, yet precise enough for a compiler to derive an application from.

02

DIS derives the application

From the specification, DIS generates the backend, data model, API, and interface as real files on disk — a coherent system, not a mockup.

03

It validates its own output

Before treating the output as complete, DIS verifies it is sound and reports precisely when it is not. This self-verification is being strengthened with each compiler release.

04

You receive a runnable system

The deliverable is deployable software — a working server, data model, API contracts, and deployment setup — an integrated whole rather than hand-assembled fragments.

05

Every release attested — coming soon

Carrying a permanent, verifiable record on each release — one you can confirm and roll back — is the next milestone. It is not yet active, so it is marked coming soon rather than claimed.

Ready to see it in action?

Explore the evidence of every compilation. Or jump straight into the API portal and start building.