Automattic / Automattic/kandelo
Kandelo roadmap
- Dominant language
- TypeScript
- Stars
- 31
- Forks
- 15
- Avg merge
- 11h 7m
- Merged PRs (30d)
- 80
Description
## ❌ Next
### Layer 0 — Headline goals
- [ ] WordPress Playground integration with `--experimental-posix-kernel` — make the Wasm kernel a selectable runtime in Playground web/CLI behind a flag (the broader Playground beta-flag work is in Layer 10; this is the concrete entry point). Proof-of-concept PRs open against `WordPress/wordpress-playground`: [#3634 (CLI)](https://github.com/WordPress/wordpress-playground/pull/3634), [#3635 (Web)](https://github.com/WordPress/wordpress-playground/pull/3635).
- [x] Explore Node.wasm — bring the Node.js runtime onto the kernel (libuv event loop, native addons via dlopen, `child_process` via fork+exec). **Shipped via QuickJS-NG–based Node-compatible runtime** ([#482](https://github.com/brandonpayton/wasm-posix-kernel/pull/482)) covering `node:crypto`, `zlib`, TCP sockets, TLS, real `http`/`https`, and end-to-end `npm install lodash`/`express`/`vite`.
### Layer 1 — Stabilize what already works
- [ ] Fix the web server service worker losing context and failing to load WordPress
- [ ] Migrate from the deprecated Wasm `try` instruction to `try_table` (currently pinned via `-wasm-use-legacy-eh=false` and `-mllvm -wasm-use-legacy-eh=true` workarounds)
### Layer 2 — Finish the browser surface protocols
- [ ] HTTP relay protocol — extract from demo code into a documented, versioned spec
- [ ] Service Worker interface — multi-tab routing + connected-client visibility (see "Partially landed")
- [ ] A non-isolated tunnel for secrets — a side channel that does not require COOP/COEP, so credentials/API keys can flow into a Kandelo session without granting the isolated context full access to them
- [ ] Query params as inputs to the boot process — let demo URLs pre-seed `argv`, env, or boot scripts
- [x] fbDOOM mouse support — mouse input device alongside the existing keyboard scancode injection (currently called out as a limitation in `docs/browser-support.md`) @mho22
- [x] fbDOOM sound support — audio output device (`/dev/dsp`) for sound effects @mho22
- [x] fbDOOM music support — background music playback for fbDOOM @mho22
### Layer 3 — Distribution & ecosystem
- [ ] Software installer like `apt` (the resolver in `cargo xtask build-deps resolve` is the plumbing — this is the user-facing layer on top)
- [ ] Standalone published packages for the libraries that aren't yet first-class binary artifacts
- readline as its own package (not just bundled into bash)
- [ ] Deploy multiple kernel versions on the same web server, allowing staging and switching between live versions
### Layer 4 — Observability
- [ ] A thorough OS trace facility (syscalls, signals, scheduling, IPC)
- [ ] An MCP server for OS tracing — exposes the trace stream to agents
- [ ] A living diagram of system components, current state, and relationships, served by the running kernel
- Process listing (procfs already exists per [#220](https://github.com/brandonpayton/wasm-posix-kernel/issues/220) — needs a UI consumer)
- Memory visualizer
- File system visualizer and browser
### Layer 5 — Agent integration
- [ ] Run Claude within the kernel
- [ ] More agentic guidance (CLAUDE.md is a start; codify SDK / build / debug workflows further)
- [ ] Agent skills for using the SDK
- Software building (autoconf/CMake/Makefile flow with `wasm32posix-*`)
- Image building (VFS image authoring)
- Boot script writing (dinit `/etc/dinit.d/*` authoring)
### Layer 6 — Multi-host & networking
- [ ] Multi-computer network running in a single browser (multiple kernels, virtual L2/L3 between them)
- [ ] WebRTC remote login — let other clients log into your in-browser computer
- DOOM multiplayer over the WebRTC tunnel (now that fbDOOM mouse + sound + music have landed, this is the obvious payoff)
- [ ] Store and load kernel VFS images from IPFS
### Layer 7 — Branding
- [x] Lock in a memorable name — **Kandelo** is now in README, docs, the live UI host, and Kandelo.dev demo gallery wiring ([#427](https://github.com/brandonpayton/wasm-posix-kernel/pull/427), [#467](https://github.com/brandonpayton/wasm-posix-kernel/pull/467), [#483](https://github.com/brandonpayton/wasm-posix-kernel/pull/483), [#485](https://github.com/brandonpayton/wasm-posix-kernel/pull/485)). Repo rename and `host/` npm package rename still pending.
- [ ] Logo
### Layer 8 — Additional runtimes & ports
#### Runtime
- [ ] Explore Go.wasm — bring the Go runtime onto the kernel (goroutine scheduler interaction with our threads, syscall interface, GC behavior under shared `WebAssembly.Memory`) @mho22
#### Port
- [ ] [Roadrunner](https://roadrunner.dev/) — PHP application server
- [ ] [FrankenPHP](https://frankenphp.dev/) — PHP application server
### Layer 9 — Miscellaneous
- [ ] Explore SDL2 — cross-platform input/audio/video library; depends on the framebuffer (shipped), mouse input + audio output (Layer 2). Unlocks a large catalogue of games and tools. @mho22
- [ ] Explore ScummVM.wasm — fun/stretch: classic adventure game engine on the framebuffer + audio stack (depends on Layer 2 audio work) @mho22
- [ ] ALSA sound device — implement alongside `/dev/dsp` so software targeting the modern Linux audio stack works without falling back to OSS @mho22
- [ ] WebGPU - implement alongside WebGL @mho22
### Layer 10 — External suggestions
- [ ] `wp-load.php` benchmark: native vs wasm (the existing WordPress benchmark in `benchmarks/run.ts --suite=wordpress` measures HTTP first response, not the bare `wp-load.php` cost)
- [ ] Support both the Wasm kernel and PHP-WASM in Playground web, with the kernel behind a beta flag
- [ ] Raw Rust build command — no equivalent SDK wrapper today; user programs are C-only
## 🟡 Partially landed
Started, but not yet at the level Brandon's note describes:
- [ ] Protocol for relaying HTTP requests
- Working pipeline exists: service worker → `MessagePort` → kernel worker connection pump (`examples/browser/lib/http-bridge.ts`, `connection-pump.ts`, `lib/init/service-worker-bridge.ts`)
- Missing: documented, versioned protocol spec independent from demo glue, with a stable contract for non-Kandelo embedders
- [ ] A clean, focused Service Worker interface
- Current SW is a unified dual-mode file (`examples/browser/public/service-worker.js`) that already routes HTTP via a single `bridgePort`
- Still owed: route HTTP requests to the right client when multiple browser tabs are connected
- Still owed: provide visibility for all connected clients (an enumerable list of attached kernel workers)
- [ ] Solid E2E tests
- Playwright covers most browser demos (`examples/browser/test/demos.spec.ts`, `playwright.config.ts`)
- Coverage gaps remain for daemonized stacks under failure injection
- [ ] Shareable computer URL — fold a running kernel's VFS + boot state into a URL another browser can rehydrate
- Design landed: [docs/plans/2026-05-11-shareable-computer-url-design.md](https://github.com/brandonpayton/wasm-posix-kernel/blob/main/docs/plans/2026-05-11-shareable-computer-url-design.md) ([#452](https://github.com/brandonpayton/wasm-posix-kernel/pull/452))
- Implementation pending
## ✅ Shipped
### Kernel & POSIX coverage
- [x] 170+ syscalls across file I/O, fcntl, process, threads, signals, memory, networking, time, terminal, IPC, eventfd/timerfd/signalfd, poll/select/epoll
- [x] POSIX.1-2024 header overlays + constants — major XFAIL reductions across libc-test, sortix, open-posix-testsuite ([#147](https://github.com/brandonpayton/wasm-posix-kernel/issues/147) [#148](https://github.com/brandonpayton/wasm-posix-kernel/issues/148) [#149](https://github.com/brandonpayton/wasm-posix-kernel/issues/149) [#160](https://github.com/brandonpayton/wasm-posix-kernel/issues/160) [#161](https://github.com/brandonpayton/wasm-posix-kernel/issues/161))
- [x] Procfs (`/proc/self`, `/proc//{stat,status,cmdline,environ,maps,fd}`, `/proc/net/{tcp,unix}`) [#220](https://github.com/brandonpayton/wasm-posix-kernel/issues/220)
- [x] Virtual devfs — `/dev/{null,zero,urandom,full,fd/N,tty,ptmx,pts/*}` ([#228](https://github.com/brandonpayton/wasm-posix-kernel/issues/228) + earlier batch)
- [x] EPERM multi-user model [#326](https://github.com/brandonpayton/wasm-posix-kernel/issues/326), deferred pthread cancellation [#333](https://github.com/brandonpayton/wasm-posix-kernel/issues/333), per-thread signal routing [#332](https://github.com/brandonpayton/wasm-posix-kernel/issues/332), kernel-side `PTHREAD_PROCESS_SHARED` primitives [#324](https://github.com/brandonpayton/wasm-posix-kernel/issues/324)
- [x] AIO XFAIL closure + `pthread_setcanceltype` XPASS [#334](https://github.com/brandonpayton/wasm-posix-kernel/issues/334)
### Multi-process
- [x] fork via Asyncify snapshot/restore [#81](https://github.com/brandonpayton/wasm-posix-kernel/issues/81)
- [x] fork() from non-main threads ([#468](https://github.com/brandonpayton/wasm-posix-kernel/pull/468)); fork+dlopen replay so children inherit parent dlopens ([#466](https://github.com/brandonpayton/wasm-posix-kernel/pull/466)); host reaps child workers that die without `SYS_EXIT_GROUP` ([#465](https://github.com/brandonpayton/wasm-posix-kernel/pull/465))
- [x] `execve` with argv/envp [#123](https://github.com/brandonpayton/wasm-posix-kernel/issues/123), `posix_spawn` attribute handling + fd actions ([#167](https://github.com/brandonpayton/wasm-posix-kernel/issues/167) [#168](https://github.com/brandonpayton/wasm-posix-kernel/issues/168)), `execveat`/`fexecve`
- [x] Non-forking `posix_spawn` via SYS_SPAWN (ABI 7→8) ([#439](https://github.com/brandonpayton/wasm-posix-kernel/pull/439))
- [x] Cross-process pipes, signals, waitpid/waitid/zombies, process groups, sessions
- [x] Cross-process advisory file locking (OFD) via SharedArrayBuffer
- [x] Cross-process `PTHREAD_PROCESS_SHARED` mutexes/condvars [#324](https://github.com/brandonpayton/wasm-posix-kernel/issues/324) [#327](https://github.com/brandonpayton/wasm-posix-kernel/issues/327)
- [x] `O_CLOFORK` / `FD_CLOFORK` (POSIX.1-2024) [#159](https://github.com/brandonpayton/wasm-posix-kernel/issues/159)
### Threads & synchronization
- [x] `clone(CLONE_VM|CLONE_THREAD)` via Workers + shared `WebAssembly.Memory`
- [x] `pthread_create` in centralized mode, futex w/ timeout, RT signals + `sigqueue` `si_value`
- [x] `pthread_atfork`, `dladdr`, POSIX mqueues [#147](https://github.com/brandonpayton/wasm-posix-kernel/issues/147)
### Memory
- [x] mmap with `MAP_ANONYMOUS`, `MAP_PRIVATE` file-backed [#99](https://github.com/brandonpayton/wasm-posix-kernel/issues/99), `MAP_SHARED` file + `msync` writeback [#100](https://github.com/brandonpayton/wasm-posix-kernel/issues/100)
- [x] `mremap`, `splice`, `preadv2`/`pwritev2`, `readahead` [#67](https://github.com/brandonpayton/wasm-posix-kernel/issues/67), `memfd_create` + `copy_file_range` [#66](https://github.com/brandonpayton/wasm-posix-kernel/issues/66), `shm_open`/`sem_open`
- [x] Growable VFS with inodes sized for max capacity
- [x] dlopen data allocated through guest mmap ([#434](https://github.com/brandonpayton/wasm-posix-kernel/pull/434))
### Networking
- [x] AF_INET sockets — connect, send/recv, sendmsg/recvmsg, getsockopt/setsockopt, `SO_RCVTIMEO`/`SO_SNDTIMEO` [#115](https://github.com/brandonpayton/wasm-posix-kernel/issues/115), `TCP_INFO` + extra TCP options [#271](https://github.com/brandonpayton/wasm-posix-kernel/issues/271)
- [x] AF_UNIX (stream + dgram) with `SCM_RIGHTS` [#112](https://github.com/brandonpayton/wasm-posix-kernel/issues/112), AF_UNIX bind() creates filesystem inode [#356](https://github.com/brandonpayton/wasm-posix-kernel/issues/356)
- [x] In-kernel loopback TCP/UDP, `MSG_OOB` + `SIOCATMARK` [#104](https://github.com/brandonpayton/wasm-posix-kernel/issues/104)
- [x] DNS via host `__lookup_name`, getaddrinfo
- [x] Virtual MAC for network ioctls [#270](https://github.com/brandonpayton/wasm-posix-kernel/issues/270), `SIOCGIFCONF` ptrWidth-aware for wasm64 [#277](https://github.com/brandonpayton/wasm-posix-kernel/issues/277)
- [x] Host network backends: TCP, fetch, TLS-intercepting ([#240](https://github.com/brandonpayton/wasm-posix-kernel/issues/240))
- [x] Git HTTP clone over HTTPS in browser shell [#229](https://github.com/brandonpayton/wasm-posix-kernel/issues/229), AF_UNIX + git HTTP clone tests [#287](https://github.com/brandonpayton/wasm-posix-kernel/issues/287)
### Filesystem & VFS
- [x] `MemoryFileSystem` (SharedArrayBuffer-backed), `OpfsFileSystem` (browser persistence), `DeviceFileSystem`
- [x] `*at()` family with stored OFD paths, `realpath`, hard links, `chmod`/`utimensat`
- [x] Lazy VFS files — defer fetch until first read [#206](https://github.com/brandonpayton/wasm-posix-kernel/issues/206)
- [x] Pre-built VFS images replacing JSON bundles [#286](https://github.com/brandonpayton/wasm-posix-kernel/issues/286)
- [x] zstd-compressed `.vfs.zst` browser demo images ([#384](https://github.com/brandonpayton/wasm-posix-kernel/pull/384))
- [x] Lazy archive-backed files (e.g. `vim.zip` in shell demo) [#279](https://github.com/brandonpayton/wasm-posix-kernel/issues/279)
- [x] Kernel-owned VFS + dinit-supervised demos [#370](https://github.com/brandonpayton/wasm-posix-kernel/issues/370)
- [x] VFS uid/gid foundation — chown stores values, stat reports honestly ([#417](https://github.com/brandonpayton/wasm-posix-kernel/pull/417))
- [x] mkrootfs CLI — declarative rootfs image builder ([#440](https://github.com/brandonpayton/wasm-posix-kernel/pull/440)); rootfs source tree + image build wiring ([#441](https://github.com/brandonpayton/wasm-posix-kernel/pull/441)); mount-table cutover + remove `synthetic_file_content` ([#442](https://github.com/brandonpayton/wasm-posix-kernel/pull/442))
### Browser runtime
- [x] Centralized kernel architecture w/ channel IPC over `SharedArrayBuffer` + `Atomics`
- [x] Dedicated kernel worker (NodeKernelHost) [#289](https://github.com/brandonpayton/wasm-posix-kernel/issues/289) + browser kernel worker [#194](https://github.com/brandonpayton/wasm-posix-kernel/issues/194)
- [x] Service worker COOP/COEP bootstrap + HTTP bridge [#117](https://github.com/brandonpayton/wasm-posix-kernel/issues/117)
- [x] TLS MITM for transparent HTTPS in demos [#240](https://github.com/brandonpayton/wasm-posix-kernel/issues/240)
- [x] Configurable CORS proxy for GitHub Pages [#248](https://github.com/brandonpayton/wasm-posix-kernel/issues/248)
- [x] GitHub Pages deployment of demos [#198](https://github.com/brandonpayton/wasm-posix-kernel/issues/198)
- [x] PTY support + xterm.js terminal panel ([#181](https://github.com/brandonpayton/wasm-posix-kernel/issues/181) [#182](https://github.com/brandonpayton/wasm-posix-kernel/issues/182))
- [x] Framebuffer (`/dev/fb0`) + canvas renderer + fbDOOM ([#349](https://github.com/brandonpayton/wasm-posix-kernel/issues/349) [#350](https://github.com/brandonpayton/wasm-posix-kernel/issues/350) [#351](https://github.com/brandonpayton/wasm-posix-kernel/issues/351) [#364](https://github.com/brandonpayton/wasm-posix-kernel/issues/364))
- [x] fbDOOM mouse input via `/dev/input/mice` + Pointer Lock ([#459](https://github.com/brandonpayton/wasm-posix-kernel/pull/459))
- [x] fbDOOM sound output via `/dev/dsp` + Web Audio ([#460](https://github.com/brandonpayton/wasm-posix-kernel/pull/460))
- [x] fbDOOM MUS/MIDI music through OPL2 → `/dev/dsp` ([#461](https://github.com/brandonpayton/wasm-posix-kernel/pull/461))
- [x] fbDOOM IWAD fetched at runtime ([#462](https://github.com/brandonpayton/wasm-posix-kernel/pull/462))
- [x] dinit init system across daemon demos ([#234](https://github.com/brandonpayton/wasm-posix-kernel/issues/234) [#370](https://github.com/brandonpayton/wasm-posix-kernel/issues/370))
- [x] WASI Preview 1 shim + 14 Unix utility build scripts [#205](https://github.com/brandonpayton/wasm-posix-kernel/issues/205)
- [x] Hybrid wasm32/wasm64 kernel with i64 channel ABI [#269](https://github.com/brandonpayton/wasm-posix-kernel/issues/269)
- [x] Git revision link in demo sidebar [#280](https://github.com/brandonpayton/wasm-posix-kernel/issues/280)
- [x] WordPress LAMP demo install: ~30 s → ~2 s ([#425](https://github.com/brandonpayton/wasm-posix-kernel/pull/425))
- [x] wasm64 mariadbd boot + MySQL/Redis demo handshake fixes ([#420](https://github.com/brandonpayton/wasm-posix-kernel/pull/420))
- [x] Terminal pane on WordPress demos + shell-based VFS ([#463](https://github.com/brandonpayton/wasm-posix-kernel/pull/463))
- [x] Kandelo live UI host ([#467](https://github.com/brandonpayton/wasm-posix-kernel/pull/467), [#483](https://github.com/brandonpayton/wasm-posix-kernel/pull/483)) + Node.js live gallery demo ([#485](https://github.com/brandonpayton/wasm-posix-kernel/pull/485))
### Runtimes on the kernel
- [x] Node.js–compatible runtime via QuickJS-NG — `node:crypto`, real `zlib`, TCP, TLS, real `http`/`https` with Mozilla `cacert.pem`, `npm install lodash`/`express`/`vite` end-to-end, plus browser Node/npm demo ([#482](https://github.com/brandonpayton/wasm-posix-kernel/pull/482), design [#470](https://github.com/brandonpayton/wasm-posix-kernel/pull/470), implementation plan [#471](https://github.com/brandonpayton/wasm-posix-kernel/pull/471))
### SDK & toolchain
- [x] All 8 CLI wrappers — `wasm32posix-{cc,c++,ar,ranlib,nm,strip,pkg-config,configure}` (#sdk batch)
- [x] WebAssembly dynamic linking — dylink.0 parser + dlopen runtime [#62](https://github.com/brandonpayton/wasm-posix-kernel/issues/62), end-to-end shared library load [#63](https://github.com/brandonpayton/wasm-posix-kernel/issues/63)
- [x] `setjmp`/`longjmp` via Wasm exception handling, `exnref` for setjmp [#79](https://github.com/brandonpayton/wasm-posix-kernel/issues/79)
- [x] Asyncify-onlylist fork support for Git 2.47.1 [#218](https://github.com/brandonpayton/wasm-posix-kernel/issues/218)
- [x] Nix flake providing reproducible dev shell [#376](https://github.com/brandonpayton/wasm-posix-kernel/issues/376)
- [x] Fork instrumentation tool ([#488](https://github.com/brandonpayton/wasm-posix-kernel/pull/488))
### Ported software (~40 packages)
- [x] Servers/DBs: nginx 1.27, PHP 8.4 (CLI + FPM, opcache enabled [#423](https://github.com/brandonpayton/wasm-posix-kernel/pull/423)), MariaDB 10.5 (Aria + InnoDB [#291](https://github.com/brandonpayton/wasm-posix-kernel/issues/291), dual-arch wasm32/wasm64 [#294](https://github.com/brandonpayton/wasm-posix-kernel/issues/294)), Redis 7.2, SQLite, WordPress 6.7
- [x] Languages: CPython 3.13, Perl 5.40, Ruby 3.3, QuickJS-NG, Erlang/OTP 28 BEAM ([#255](https://github.com/brandonpayton/wasm-posix-kernel/issues/255) [#258](https://github.com/brandonpayton/wasm-posix-kernel/issues/258) [#260](https://github.com/brandonpayton/wasm-posix-kernel/issues/260) [#263](https://github.com/brandonpayton/wasm-posix-kernel/issues/263)), bash 5.2 + readline [#293](https://github.com/brandonpayton/wasm-posix-kernel/issues/293)
- [x] Editors: Vim 9.1 + ncurses, GNU nano 8.3, NetHack 3.6.7
- [x] Tooling: Git 2.47, GNU coreutils 9.6, grep, sed, gawk, findutils, diffutils, make, m4, bc, tar, less, file, lsof
- [x] Compression: gzip, bzip2, xz, zstd, zip, unzip [#222](https://github.com/brandonpayton/wasm-posix-kernel/issues/222)
- [x] Network: curl + libcurl, wget
- [x] Demo headliners: TeX Live (pdfTeX) [#285](https://github.com/brandonpayton/wasm-posix-kernel/issues/285), fbDOOM [#351](https://github.com/brandonpayton/wasm-posix-kernel/issues/351), full LAMP stack [#121](https://github.com/brandonpayton/wasm-posix-kernel/issues/121)
### Testing infrastructure
- [x] musl libc-test runner (539+ tests passing, 0 unexpected failures)
- [x] Vitest host integration tests (276 tests)
- [x] Open POSIX Test Suite integration #38ac0b1a
- [x] Sortix os-test integration (4817+ pass) #40399442
- [x] Browser test infrastructure — Playwright libc-test + POSIX runners [#152](https://github.com/brandonpayton/wasm-posix-kernel/issues/152) [#153](https://github.com/brandonpayton/wasm-posix-kernel/issues/153)
- [x] Browser sortix runner [#155](https://github.com/brandonpayton/wasm-posix-kernel/issues/155), browser E2E demo tests [#131](https://github.com/brandonpayton/wasm-posix-kernel/issues/131)
- [x] MariaDB mysql-test suite (185 tests in browser) [#256](https://github.com/brandonpayton/wasm-posix-kernel/issues/256), nginx + SQLite test suites [#257](https://github.com/brandonpayton/wasm-posix-kernel/issues/257), SQLite TCL upstream suite [#264](https://github.com/brandonpayton/wasm-posix-kernel/issues/264)
- [x] Performance benchmark suite (5 suites, Node.js + browser) [#282](https://github.com/brandonpayton/wasm-posix-kernel/issues/282)
- [x] **CI gating on every PR** — `cargo test`, `vitest`, `run-libc-tests.sh`, `run-posix-tests.sh`, and `check-abi-version.sh` all run in `.github/workflows/prepare-merge.yml` (Phase B-1/B-2 [#428](https://github.com/brandonpayton/wasm-posix-kernel/pull/428) [#432](https://github.com/brandonpayton/wasm-posix-kernel/pull/432), staging release [#438](https://github.com/brandonpayton/wasm-posix-kernel/pull/438))
### ABI, packaging, releases
- [x] Structural ABI snapshot + enforced version bump [#295](https://github.com/brandonpayton/wasm-posix-kernel/issues/295)
- [x] Kernel-wasm exports included in snapshot [#296](https://github.com/brandonpayton/wasm-posix-kernel/issues/296)
- [x] Runtime ABI version enforcement on kernel and user programs [#297](https://github.com/brandonpayton/wasm-posix-kernel/issues/297)
- [x] Additive ABI snapshot changes allowed without version bumps ([#490](https://github.com/brandonpayton/wasm-posix-kernel/pull/490))
- [x] Per-package manifests, content-addressed cache, `binaries-abi-v` release scheme [#365](https://github.com/brandonpayton/wasm-posix-kernel/issues/365)
- [x] **Binary resolution via `index.toml` ledger** — replaces the in-package `[binary]` schema with a per-release index, atomic publish via `scripts/index-update.sh`, project-state split into `build.toml` ([#464](https://github.com/brandonpayton/wasm-posix-kernel/pull/464), design [#457](https://github.com/brandonpayton/wasm-posix-kernel/pull/457))
- [x] Decoupled package builds — Phase B-1 per-package matrix + content-hash gating ([#428](https://github.com/brandonpayton/wasm-posix-kernel/pull/428)), Phase B-2 sticky PR comment + `kernel_abi` required check ([#432](https://github.com/brandonpayton/wasm-posix-kernel/pull/432)), Phase C resolver cutover + legacy publish pipeline removal ([#438](https://github.com/brandonpayton/wasm-posix-kernel/pull/438))
- [x] **libc++ published as a binary package**, bundling libunwind ([#368](https://github.com/brandonpayton/wasm-posix-kernel/pull/368))
- [x] dinit published as a package [#371](https://github.com/brandonpayton/wasm-posix-kernel/issues/371); lockfile + sha refresh flow ([#372](https://github.com/brandonpayton/wasm-posix-kernel/issues/372) [#377](https://github.com/brandonpayton/wasm-posix-kernel/issues/377) [#379](https://github.com/brandonpayton/wasm-posix-kernel/issues/379))
### Documentation
- [x] Architecture, SDK, porting, browser-support, posix-status, profiling, package-management, binary-releases, abi-versioning, wasm-limitations docs in `docs/`
- [x] TypeDoc API docs auto-deployed to GitHub Pages [#265](https://github.com/brandonpayton/wasm-posix-kernel/issues/265)
- [x] CLAUDE.md test-verification + ABI checklist
- [x] Relicensed to GPL-2.0-or-later with MIT runtime [#223](https://github.com/brandonpayton/wasm-posix-kernel/issues/223)
### Mapping to Brandon's manual list
These are the items from the original list that are now closed:
- [x] Protocol for rendering to a frame buffer — [#349](https://github.com/brandonpayton/wasm-posix-kernel/issues/349) [#350](https://github.com/brandonpayton/wasm-posix-kernel/issues/350) [#351](https://github.com/brandonpayton/wasm-posix-kernel/issues/351) [#364](https://github.com/brandonpayton/wasm-posix-kernel/issues/364)
- [x] Protocol for TTY — [#181](https://github.com/brandonpayton/wasm-posix-kernel/issues/181) [#182](https://github.com/brandonpayton/wasm-posix-kernel/issues/182) [#221](https://github.com/brandonpayton/wasm-posix-kernel/issues/221)
- [x] CORS proxy workaround for COOP/COEP — [#248](https://github.com/brandonpayton/wasm-posix-kernel/issues/248) [#240](https://github.com/brandonpayton/wasm-posix-kernel/issues/240)
- [x] Each demo build tagged with git revision — [#280](https://github.com/brandonpayton/wasm-posix-kernel/issues/280)
- [x] Prebuilt disk images — [#286](https://github.com/brandonpayton/wasm-posix-kernel/issues/286) [#279](https://github.com/brandonpayton/wasm-posix-kernel/issues/279) [#370](https://github.com/brandonpayton/wasm-posix-kernel/issues/370)
- [x] Binary registry of prebuilt programs and libraries — [#365](https://github.com/brandonpayton/wasm-posix-kernel/issues/365) [#371](https://github.com/brandonpayton/wasm-posix-kernel/issues/371) [#372](https://github.com/brandonpayton/wasm-posix-kernel/issues/372) [#464](https://github.com/brandonpayton/wasm-posix-kernel/pull/464)
- libcurl, ncurses, libc++ ([#368](https://github.com/brandonpayton/wasm-posix-kernel/pull/368)) all shipped as standalone packages; readline still only via bash [#293](https://github.com/brandonpayton/wasm-posix-kernel/issues/293) (standalone package still in Layer 3)
- [x] Raw C build command (Dennis) — `wasm32posix-cc` + 7 sibling SDK wrappers
---
_Last updated: May 17, 2026 (originally April 30, 2026)_
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reviewing the unchecked roadmap items and the referenced entry points, especially examples/browser/lib/http-bridge.ts, connection-pump.ts, lib/init/service-worker-bridge.ts, and examples/browser/public/service-worker.js. Use examples/browser/test/demos.spec.ts and playwright.config.ts to assess existing coverage; a contribution is done when one clearly scoped roadmap item is implemented with its corresponding behavior or tests.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- playwright, typescript, wasm, wordpress
- Domain
- documentation, networking, operating-systems, testing-qa, web-dev
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100