Source commit: 20b59dc46b72103c2f8a516c692b5cc3d54fab19 Public tree identity: sha256:aaa5ac7b58b2a0d23c6b11e5f76324bf3839ca1f62653a83deb736932adcfbd9
46 lines
2.5 KiB
Markdown
46 lines
2.5 KiB
Markdown
# Architecture
|
|
|
|
Disasmer presents a distributed workflow as one virtual process. The workflow
|
|
program and its tasks are WebAssembly modules; the coordinator, attached nodes,
|
|
CLI, and debugger are separate host processes.
|
|
|
|
## Components
|
|
|
|
- The SDK and macros turn Rust workflow functions into versioned Wasm exports.
|
|
- The CLI builds and validates a bounded bundle, creates a virtual process, and
|
|
launches its selected entrypoint as the coordinator main.
|
|
- The coordinator owns identity, authorization, scheduling, process state, and
|
|
debug epochs. It executes only the capless coordinator-main Wasm: that main
|
|
may spawn/join tasks, wait, log bounded state, and participate in debugging,
|
|
but cannot run commands, read source or host files, use sockets, or obtain
|
|
secrets. The coordinator does not retain artifact bytes.
|
|
- Attached nodes verify assignments and execute Wasm with Wasmtime. Host
|
|
operations are available only through imports backed by granted capabilities.
|
|
- The DAP adapter maps a virtual process and its tasks to ordinary debugger
|
|
processes and threads without pretending that source-level stepping exists.
|
|
|
|
The standalone Core coordinator is the public self-hosted service. The Hosted
|
|
coordinator wraps the same Core service with private identity-provider,
|
|
community-policy, operator, and deployment code. Public/private is a source
|
|
distribution boundary, not an authority boundary.
|
|
|
|
## State
|
|
|
|
Durable Postgres state contains tenants, users, projects, credentials,
|
|
permissions, source-provider configuration, and service policy records. Active
|
|
virtual processes, assignments, debug epochs, transient VFS views, and artifact
|
|
locations are intentionally ephemeral for the MVP. Restarting the coordinator
|
|
therefore preserves identity and project configuration but ends active work.
|
|
|
|
## Execution and placement
|
|
|
|
Wasm is the execution substrate, not a capability. The coordinator main uses a
|
|
small fixed capless import set. A node task's `TaskSpec` declares the additional
|
|
host operations and environment it needs, and a node is eligible only when its
|
|
reported capabilities satisfy those requirements. For example, a Wasm task may
|
|
request command execution in a declared Linux environment; a user-attached node
|
|
with rootless Podman can provide that operation, while hosted community
|
|
infrastructure denies arbitrary native commands and hosted containers.
|
|
|
|
The build-system workflow is the MVP wedge. General distributed application
|
|
runtime features are deliberately outside the initial release.
|