Component Model

v0.1

Prismoid components are Rust trait implementations wired by the application composition root. There is intentionally no stable Rust plugin ABI.

Target model

The target extension boundary is language-neutral WIT executed by a WASI Component Model host. This gives Prismoid a path toward components authored in Rust, Go, Python, JavaScript, or other languages without loading untrusted native dynamic libraries into the runtime process.

Prismoid runtime
      │
      ├── native trusted adapter
      ├── MCP adapter
      ├── isolated process/container adapter
      └── WASI/WIT component host
                 │
             component

The initial WIT sketches live under /wit. They are deliberately not frozen as a stable ABI yet.

Capability security

A future component manifest should request explicit host capabilities:

permissions:
  filesystem:
    read: ["/matter/**"]
    write: []
  network:
    allow: ["api.example.com"]
  secrets: ["provider_token"]
  compute:
    memory: 256MiB

The host, not the component, decides whether those rights are granted.

Why Wasmtime later, not now

Wasmtime is a strong fit for the Component Model, but pulling it into the alpha kernel would add a large dependency and security surface before the Prismoid contracts are proven. v0.1 freezes the port semantics first; v0.3 can implement the same contracts with Wasmtime.