Component Model logo

Component Model

The WebAssembly Component Model is a broad-reaching architecture for building interoperable WebAssembly libraries, applications, and environments. It defines components as portable, sandboxed units of code that can compose with each other across language and runtime boundaries. The model introduces interfaces, worlds, and the WebAssembly Interface Type (WIT) language, along with a canonical ABI, binary and text formats, and a concurrency model. The Component Model underpins the WebAssembly System Interface (WASI) Preview 2 and is the foundation for portable Wasm on browsers, servers, edge, and embedded environments.

4 APIs 0 Features
ABIBytecode AllianceComponentInterfaceModularSpecificationWASIWebAssemblyWITWorld

APIs

WebAssembly Component Model Specification

The Component Model specification repository under the W3C WebAssembly Community Group. Contains design documents, the formal specification drafts, the WIT grammar, the canonica...

WebAssembly Interface Type (WIT)

WIT is the interface definition language for the Component Model. WIT describes the imports and exports of a component using interfaces and worlds. WIT is consumed by language t...

WebAssembly System Interface Preview 2

WASI Preview 2 is the first WASI release built on the Component Model. It defines a set of interfaces such as wasi:filesystem, wasi:io, wasi:http, wasi:cli, and wasi:sockets tha...

Component Model Implementations

A landscape of toolchains and runtimes that implement the Component Model, including Wasmtime, Jco, wit-bindgen language bindings, cargo-component for Rust, ComponentizeJS, and ...

Resources

🔗
Website
Website
🔗
Documentation
Documentation
👥
GitHubRepository
GitHubRepository
👥
GitHub Organization
GitHub Organization
🔗
Reference
Reference
🔗
Reference
Reference
🔗
Working Group
Working Group

Sources

apis.yml Raw ↑
aid: component-model
url: >-
  https://raw.githubusercontent.com/api-evangelist/component-model/refs/heads/main/apis.yml
name: Component Model
x-type: standard
description: >-
  The WebAssembly Component Model is a broad-reaching architecture for
  building interoperable WebAssembly libraries, applications, and
  environments. It defines components as portable, sandboxed units of code
  that can compose with each other across language and runtime boundaries.
  The model introduces interfaces, worlds, and the WebAssembly Interface
  Type (WIT) language, along with a canonical ABI, binary and text formats,
  and a concurrency model. The Component Model underpins the WebAssembly
  System Interface (WASI) Preview 2 and is the foundation for portable Wasm
  on browsers, servers, edge, and embedded environments.
image: https://kinlane-productions.s3.amazonaws.com/apis-json/apis-json-logo.jpg
tags:
  - ABI
  - Bytecode Alliance
  - Component
  - Interface
  - Modular
  - Specification
  - WASI
  - WebAssembly
  - WIT
  - World
created: '2025-01-01'
modified: '2026-04-28'
specificationVersion: '0.19'
apis:
  - aid: component-model:specification
    name: WebAssembly Component Model Specification
    description: >-
      The Component Model specification repository under the W3C WebAssembly
      Community Group. Contains design documents, the formal specification
      drafts, the WIT grammar, the canonical ABI, and the binary and text
      formats that define a WebAssembly component.
    humanURL: https://github.com/WebAssembly/component-model
    baseURL: https://github.com/WebAssembly
    tags:
      - Specification
      - W3C
      - WebAssembly
    properties:
      - type: GitHubRepository
        url: https://github.com/WebAssembly/component-model
      - type: Documentation
        url: https://github.com/WebAssembly/component-model/blob/main/design/mvp/Explainer.md
      - type: Specification
        url: https://github.com/WebAssembly/component-model/tree/main/design/mvp
      - type: Reference
        url: https://github.com/WebAssembly/component-model/blob/main/design/mvp/CanonicalABI.md
      - type: Reference
        url: https://github.com/WebAssembly/component-model/blob/main/design/mvp/WIT.md
    x-features:
      - Defines components, interfaces, and worlds
      - Introduces WIT, the WebAssembly Interface Type language
      - Specifies a canonical ABI between components and host
      - Provides binary and text formats for components
      - Foundation for WASI Preview 2 system interfaces
    x-useCases:
      - Tracking the evolving Component Model standard
      - Implementing language toolchains targeting components
      - Implementing runtimes that load and link components
  - aid: component-model:wit
    name: WebAssembly Interface Type (WIT)
    description: >-
      WIT is the interface definition language for the Component Model. WIT
      describes the imports and exports of a component using interfaces and
      worlds. WIT is consumed by language toolchains to generate bindings
      and by runtimes to validate and link components at load time.
    humanURL: https://component-model.bytecodealliance.org/design/wit.html
    baseURL: https://component-model.bytecodealliance.org
    tags:
      - Bindings
      - IDL
      - Interface
      - WIT
    properties:
      - type: Documentation
        url: https://component-model.bytecodealliance.org/design/wit.html
      - type: Specification
        url: https://github.com/WebAssembly/component-model/blob/main/design/mvp/WIT.md
      - type: Reference
        url: https://github.com/bytecodealliance/wit-bindgen
    x-features:
      - Declarative IDL for components
      - Records, variants, enums, flags, options, results
      - Resources with methods for borrowed and owned references
      - Interfaces compose into worlds
    x-useCases:
      - Authoring portable component interfaces
      - Generating language bindings via wit-bindgen
      - Defining stable contracts between platform and components
  - aid: component-model:wasi-preview-2
    name: WebAssembly System Interface Preview 2
    description: >-
      WASI Preview 2 is the first WASI release built on the Component Model.
      It defines a set of interfaces such as wasi:filesystem, wasi:io,
      wasi:http, wasi:cli, and wasi:sockets that components can import to
      interact with the host system in a portable, capability-based way.
    humanURL: https://wasi.dev/
    baseURL: https://wasi.dev
    tags:
      - System Interface
      - WASI
      - Capabilities
    properties:
      - type: Documentation
        url: https://wasi.dev/
      - type: GitHub Organization
        url: https://github.com/WebAssembly/WASI
      - type: Reference
        url: https://github.com/WebAssembly/wasi-http
      - type: Reference
        url: https://github.com/WebAssembly/wasi-filesystem
    x-features:
      - Capability-based system access
      - Defined as a collection of WIT worlds
      - wasi:http provides a portable HTTP server interface
      - Worlds for CLI, HTTP proxy, and embedder customization
    x-useCases:
      - Building portable WebAssembly server functions
      - Running components in Wasmtime, Jco, WasmEdge, and Spin
      - Implementing capability-secure host bindings
  - aid: component-model:bytecode-alliance-implementations
    name: Component Model Implementations
    description: >-
      A landscape of toolchains and runtimes that implement the Component
      Model, including Wasmtime, Jco, wit-bindgen language bindings,
      cargo-component for Rust, ComponentizeJS, and Spin for serverless
      Wasm. These implementations are largely stewarded by the Bytecode
      Alliance.
    humanURL: https://bytecodealliance.org/
    baseURL: https://bytecodealliance.org
    tags:
      - Bytecode Alliance
      - Implementations
      - Runtimes
      - Toolchains
    properties:
      - type: Reference
        url: https://github.com/bytecodealliance/wasmtime
      - type: Reference
        url: https://github.com/bytecodealliance/wit-bindgen
      - type: Reference
        url: https://github.com/bytecodealliance/cargo-component
      - type: Reference
        url: https://github.com/bytecodealliance/jco
      - type: Reference
        url: https://github.com/bytecodealliance/ComponentizeJS
      - type: Reference
        url: https://github.com/fermyon/spin
    x-features:
      - Wasmtime native runtime with component support
      - Jco JavaScript host and tooling
      - cargo-component for Rust component projects
      - wit-bindgen for cross-language bindings
    x-useCases:
      - Running components on the server, edge, or in browsers
      - Generating language bindings from WIT
      - Building serverless Wasm functions on Spin
common:
  - type: Website
    url: https://component-model.bytecodealliance.org/
  - type: Documentation
    url: https://component-model.bytecodealliance.org/design/
  - type: GitHubRepository
    url: https://github.com/WebAssembly/component-model
  - type: GitHub Organization
    url: https://github.com/WebAssembly
  - type: Reference
    url: https://wasi.dev/
  - type: Reference
    url: https://bytecodealliance.org/
  - type: Working Group
    url: https://www.w3.org/community/webassembly/
maintainers:
  - FN: Kin Lane
    email: [email protected]