whatisgithub

What is wasi?

webassembly/wasi — explained in plain English

Analysis updated 2026-06-26

5,622RustAudience · developerComplexity · 5/5LicenseSetup · hard

In one sentence

The standard system interface for WebAssembly programs to access files, networking, and OS resources when running outside a browser.

Mindmap

mindmap
  root((WASI))
    What it does
      OS interface for Wasm
      File and network access
      Standardized system calls
    Versions
      Preview 1 witx
      Preview 2 stable
      Modular Wit format
    Use Cases
      Runtime implementation
      Wasm outside browser
      Toolchain support
    Audience
      Runtime developers
      Toolchain authors
      Language teams
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Build a WebAssembly runtime that can run programs needing file and network access using the WASI interface standard.

USE CASE 2

Compile a Rust or C program to WebAssembly and run it outside the browser with OS access via a WASI-compliant runtime.

USE CASE 3

Propose or review new system-level APIs for WebAssembly by following the WASI proposals process.

USE CASE 4

Understand how WASI defines OS capabilities for Wasm components to guide toolchain or language runtime development.

What is it built with?

RustWebAssemblyWitwitx

How does it compare?

webassembly/wasicloud-hypervisor/cloud-hypervisorloro-dev/loro
Stars5,6225,6315,613
LanguageRustRustRust
Setup difficultyhardmoderatemoderate
Complexity5/54/53/5
Audiencedeveloperops devopsdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · hard Time to first run · 1h+

Requires a WASI-compatible runtime (such as Wasmtime or WAMR) and language toolchain support to compile and run programs.

Open standard developed by the WebAssembly Community Group, free to implement and use.

So what is it?

WASI stands for WebAssembly System Interface, a collection of APIs that allow programs compiled to WebAssembly to interact with the underlying operating system. WebAssembly is a format that lets code written in many languages run in browsers and other environments at near-native speed, but without a system interface it has no way to access files, network connections, or other OS resources. WASI fills that gap. The project is developed by the WASI Subgroup, part of the broader WebAssembly Community Group, with the goal of eventual formal standardization. It draws on established ideas from POSIX, the traditional Unix system call standard, and from CloudABI. WASI has gone through two main versions. The first, now called Preview 1, was released earlier and is already widely adopted. It defined a set of low-level OS-like capabilities using a description language called witx. The second version, Preview 2, is now marked stable and takes a more modular approach. It uses a newer interface definition language called Wit, which supports a wider range of programming languages, a more expressive type system, and better isolation between components. Each individual API in the WASI family lives in its own separate repository. The main WASI repository serves as a central discussion space and a record of the project goals and working processes. A proposals list in the documentation links to all the individual API repos. Anyone who wants to suggest a new API can follow the project contributing guide, and new proposals are expected to use the Preview 2 format and repository structure based on a provided template. This repository is primarily of interest to developers building WebAssembly runtimes, toolchain authors, and language teams who need to target environments outside the browser. End users typically interact with WASI indirectly through tools and runtimes that implement it. The README for this repo is brief, pointing mainly to documentation and the proposals list for deeper detail.

Copy-paste prompts

Prompt 1
I want to compile a Rust program to WebAssembly and run it on a server with file access using WASI. Walk me through the toolchain setup and which WASI-compatible runtime to use.
Prompt 2
Explain the difference between WASI Preview 1 and Preview 2, and how I should decide which one to target for my WebAssembly project.
Prompt 3
I am building a WebAssembly runtime and want to implement WASI Preview 2. Where do I find the interface definitions and what format are they in?
Prompt 4
How does WASI relate to POSIX? What OS capabilities does WASI expose and which POSIX features does it leave out?
Prompt 5
I want to propose a new WASI API for accessing GPU resources. Walk me through the WASI proposals process and the repository structure I need to follow.

Frequently asked questions

What is wasi?

The standard system interface for WebAssembly programs to access files, networking, and OS resources when running outside a browser.

What language is wasi written in?

Mainly Rust. The stack also includes Rust, WebAssembly, Wit.

What license does wasi use?

Open standard developed by the WebAssembly Community Group, free to implement and use.

How hard is wasi to set up?

Setup difficulty is rated hard, with roughly 1h+ to a first successful run.

Who is wasi for?

Mainly developer.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.