02 / KEEP THE STATE. CARRY THE CODE.
Native instructions.
Living objects.
Run selected compiled methods with an owned heap. Keep the bytes at stable guest addresses, save a checkpoint, and continue in a fresh worker.
The original binary is no longer needed after import.
Module & contracts
Import an extracted capsulith.module.v1 module. Code identity and declared imports are validated by the runtime.
Extract from your ARM64 artifact
Choose an artifact you have rights to use. Declare each named root and its ABI explicitly. Extraction reads compiled bytes and supported direct dependencies; it does not run the artifact on the host or infer the object layout.
No artifact selected.
Use original symbol names. Types: reference, i32, u32, i64, u64. Declare allocator and native free lifecycle roots where the component requires them.
Portable mode has no extraction server. Extract with the included CLI, then import the resulting module JSON here.
Module source JSON
Named roots, code chunks and modeled dependencies will appear here.
Original chunks & dependencies
Declared memory imports
Extraction evidence
Instance lifecycle
No instance
Closing ends this worker. A saved matching checkpoint can reopen owned state with a fresh instance identity.
Checkpoint & portable source
No recovery checkpoint saved.
Checkpoints preserve owned region bytes, initialization and counters at method boundaries. The digest detects alteration, not authenticity. CPU and stack frames are not captured.
Owned memory & methods
Create → compress 65,536 bytes → save dictionary → release input → checkpoint → close → restore → continue 32,768 bytes → free.
Every step executes original compiled roots. The comparison appears only after computed compressed bytes match the supplied native oracle. This example does not establish support for other component ABIs.
Example source & comparison context
Allocate caller memory
Read-only access ends at supplied bytes. Other caller buffers zero-fill remaining capacity. Retained native pointers require the same region to stay live until the component's declared lifecycle releases them.
Call a named method
Choose a caller-declared contract.
Inputs freeze for each call. Editing while a call is running discards its worker and results. A fault or cancellation requires a prior checkpoint or a new instance.
Live owned regions
0 bytesNo live state. Heap fields remain opaque.
Raw hex only; ?? marks uninitialized heap bytes. This preview displays 128 bytes. Release is explicit and never guesses native reachability.
Observed execution
Return value, actual memory access, counters and bounded events come from the running instructions.
Returned value
Actual region access
Ranges are the smallest enclosing address intervals, with exclusive upper bounds. They may contain gaps.
Writable caller output bytes
Bounded memory events
Frozen call inputs & counters
Recovery is explicit
Save a checkpoint before a call you may need to undo. Failed or cancelled workers cannot produce a successful checkpoint or state bundle. Restoring validates the matching module and preserves guest addresses, while all references bind to a fresh instance.