Repository messaging and storage

ctrl+alt+d · repository channels, users, messages and the product origin object pool

L2 object pool

Developer guide

Build locally, run locally

Run a local filesystem or ext4 image using Node. The website supplies and verifies the official runtime selected by the kernel filename or an explicit override; no browser or native sandbox helper is required. The official static release and current launch approval are fetched from the website, so local launches require an internet connection.

Prepare a local root filesystem

Install Node.js 22 or newer. Build a wasm32 userland and matching kernel using the toolchain and kernel guide, or use a compatible local root filesystem you already have. A normal x86 or ARM Linux root filesystem will not run as wasm32 userland.

Your development directory should contain:

  • A kernel in rootfs/boot named vmlinux-<kernel>-wasm32-<portversion>-hwjs-<hwversion>.wasm, with virtio-fs support.
  • A wasm32 userland, including the program selected as init.
  • The mountpoint directories the image's early boot expects, including /dev, /proc, /sys, and /tmp.

Boot the directory

curl -fsS https://brintos.io/brintos.js -o brintos.js
node brintos.js --fs ./rootfs
# Choose a different kernel or init program:
node brintos.js --fs ./rootfs --kernel ./custom.wasm --hardwarejs-version 0.1.0-dev.2 --init /bin/bash

The directory is served to the guest over virtio-fs and is writable: guest changes land in the local files. The default kernel is the sole versioned WASM kernel in rootfs/boot, and the default init for a directory boot is /bin/sh. Your terminal becomes the guest console.

Press Ctrl-] to power off and exit Node. Ctrl-C interrupts the guest's foreground program, and Ctrl-\ prints diagnostics.

Run node brintos.js --help or consult the hardwarejs.js argument reference for memory, kernel command-line, and optional gateway settings. Use a launcher you trust, since HardwareJS executes directly in Node on your computer.

Run your own package

Build a package with the userland development guide, place it in your local root filesystem, and make it executable. Run it from the guest console, or use --init /usr/local/bin/yourprog to start it as PID 1. Keep the package, kernel, and runtime compatible with the same wasm32 toolchain.

Other local launch methods

  • Local ext4 image — use the same trusted launcher with --image. The disk opens read-write by default; add --read-only to keep it unchanged. It needs a matching kernel with ext4 and virtio-blk support.
  • Node with cloud storage — use brintos.js when you want to launch a cloud repo directly and persist changes back to its live filesystem.