Back to News
Advertisement
bbrandonpayton about 2 hours ago 3 commentsRead Article on kandelo.dev

RU version is available. Content is displayed in original English for accuracy.

Kandelo is an open-source, Wasm-based multi-process kernel that runs POSIX programs in browsers and Node.js.

Kandelo is still experimental, but it already runs a substantial range of existing software.

Do you have use cases for this?

We are trying Kandelo as a new foundation for WordPress Playground which runs server-side WordPress entirely in the browser. Kandelo also looks promising as a sandbox for running agents in the the browser and on the command line. On the side, we've been playing with porting games and desktop environments and even compiling runnable programs within Kandelo.

Yet it feels like there are many possibilities we haven't considered.

How would you like to use something like this?

Demos:

Some notes: The demos have been tested in desktop browsers. Unfortunately, YMMV on mobile today. Some of the disk images are large (~50MB) and may take a while to boot initially.

Main set, with Shell (bash, vim, nethack, and more), Nginx, PHP, WordPress, and Doom: https://kandelo.dev/20260819-demo/

LÖVE game engine: https://kandelo.dev/20260819-demo-love/

SNKRX running under LÖVE: https://kandelo.dev/20260819-demo-love/?vfs=love-snkrx-abi44...

Commander Keen running in DOSBox: https://kandelo.dev/20260819-demo-dos/?demo=keen

LXDE desktop PoC: https://kandelo.dev/20260819-demo-lxde/?demo=desktop-lxde

Background

I wanted an authentic OS-level foundation for running systems software in the browser and started this as a vibe-coded exploration. I figured it would end up being too slow and that we would have to offer many different ways to compromise default POSIX behavior to get anything usable. But after weeks of fighting agents, insisting on genuine POSIX compatibility as the default, I was surprised at how well the system worked without those compromises.

Nginx, PHP, Python, Ruby, Redis, and even MariaDB were able to be built using the SDK with minimal hacks.

Then we started porting games, having fun, and playing to see how far we could push it.

Notes on architecture:

There is a central, single-worker kernel, aiming to provide all supportable POSIX syscalls. Each process is a dedicated worker with independent memory. Each process thread is a dedicated worker that shares memory with threads from the same process. Syscalls are done with the process SharedArrayBuffer and the Atomics API. fork() is supported. The system is centered around virtual file system (VFS) images, and the VFS can contain lazy references to programs that may or may not be used. Vim is such a reference in the shell demo.

On GitHub: https://github.com/Automattic/kandelo

Advertisement

⚡ Community Insights

Discussion Sentiment

100% Positive

Analyzed from 127 words in the discussion.

Trending Topics

#real#kind#trouble#escape#codes#idea#achieving#build#isolation#codemodding

Discussion (3 Comments)Read Original on HackerNews

grayrest19 minutes ago
I had the idea of achieving build isolation by codemodding the Rust implementations of bash and the GNU coreutils (brush+uutils) to use a VFS (wasmtime's cap-std) backed by the real FS and then disabling anything that remained problematic. It kind of works but I'm still not particularly confident in it and I think this is probably the better approach.

The some points of trouble I ran into were dead symlinks left behind on the FS pointing to real files and escape codes interacting with the terminal (e.g. escape codes reading from the clipboard).

faxmeyourcodeabout 2 hours ago
This is so cool! I'm having trouble thinking of all the different use cases and potential issues with this, but I don't think anyone has done something like this before. Great work
brandonpaytonabout 2 hours ago
Thanks for taking a look and for kind words!

We've also had a prototype running multiplayer DOOM between browsers via WebRTC. I wonder what kinds of network applications might be interesting here.