KRATON
Open navigation menu

Kraton VMC / Verified Micro-Capability

A component is more than its binary.

A Kraton VMC is a WebAssembly Component plus the conditions under which its bytes are accepted: a typed contract, a declared boundary, and an accountable identity.

Current artifact envelope
code
component.wasm
policy
metadata.json
bundle
bundle.json
attestation
payload + component.sig

The local demo cache has this shape today. OCI distribution with Cosign verification remains the production target.

Bundle anatomy

Readable boundaries before a run begins.

01

Typed contract

A WIT world makes the component’s inputs, outputs, and composition seam inspectable before execution.

02

Declared boundary

A VMC does not inherit files, sockets, host time, or randomness merely because it was loaded. Its metadata must name each allowed capability.

03

Bound policy

The bundle manifest digests both code and metadata. Changing an allowlist or metering tier changes the signed object.

04

Chosen responsibility

A signature says who stood behind one exact bundle. The owner still decides which verifier keys to trust.

What the signature binds

component.wasm ──┐
                ├──► bundle.json (layer digests) ──► payload.json ──► component.sig
metadata.json ───┘

host-local after verification:
component.cwasm / component.epoch.cwasm

Policy cannot travel separately from proof.

The manifest names each layer by digest, so a signature over the manifest also covers the component and its capability metadata. The AOT files are a host-local cache, rebuilt when compatibility changes.

A real seam

A WIT contract shows what a VMC can say — and nothing else.

package wasmbrick:demo@0.1.0;

interface scheduling {
  record interval { start: u64, end: u64 }
  record request {
    window: interval,
    busy: list<interval>,
    step-minutes: u32,
    buffer-minutes: u32,
  }
  free-slots: func(req: request)
    -> result<list<interval>, scheduling-error>;
}

world typed-scheduler {
  export scheduling;
}

typed-scheduler.wit

Pure availability arithmetic.

The demo does not import a clock, random source, file system, or network. Its answer is a total function of the intervals supplied by the caller.

Inspect its runnable evidence

Build one, inspect it

The demo path is deliberately reproducible.

The checked-in scheduler uses the Rust WASI Preview 2 target, then its local signer writes the exact envelope shown above. This is the project's current path, not a fictional one-command publish flow.

From the Engine source root

OUTPUT / .cache/modules/typed-scheduler/0.1.0

From author to execution

Author

Writes domain logic in a language that targets WebAssembly, then exposes only the intended WIT world.

Verifier

Tests, audits, or proves a component according to its own trust policy and signs that specific artifact.

Owner’s Engine

Checks the artifact and policy, grants only selected authority, then measures the execution facts.