Guides
Machines
What a machine is, how to create and configure one, what happens when you power it on, and what the platform can and can't do today.
What a machine is
A machine is a repository whose contents are a bootable root filesystem. Like a git repository it has an owner, a page, forks, and access control; unlike one, its data is a content-addressed drive — every file is stored and de-duplicated by hash, which is what makes forks cheap and history durable. Launching a machine boots a real Linux 6.12 kernel, compiled to WebAssembly, against that drive — entirely inside your browser tab (see Linux in the browser for how).
brintOS hosts two repository types: machine images (this page) and ordinary git repositories. Only image repos can be launched.
Creating a machine
Go to brintos.io/new and pick the machine image type. Three starting points:
- From a template — fork one of our ready-to-boot template images.
- Fork an existing machine — any machine your account can read.
- From scratch — an empty drive you populate yourself.
You can also fork directly from any machine's page. A fork is a full writable copy under your account — content addressing means it shares storage with its parent rather than duplicating it.
The machine spec
Every image repo carries a machine spec — the hardware the kernel sees at boot. Owners edit it under Settings → Machine spec:
| Field | Meaning |
|---|---|
| CPU cores | 0–128. A value of N gives the machine exactly N process threads; the kernel's own thread is extra on top of that. 0 means "match this PC": the count is resolved at launch from the viewer's
browser (navigator.hardwareConcurrency), then clamped to 1–128. |
| Memory | Kernel RAM in MiB, 256–32768. |
| Devices | The device list the machine carries. The console and the virtio-fs root drive are the core of every machine today; the rest of the list tracks devices as they land. Real USB hardware can be plugged in from the launch surface — see USB devices. |
| Boot kernel | Path to the kernel image, read from the machine's own filesystem (default /boot/vmlinux.wasm). Replace the file — or point this at another path — to
boot a kernel you built yourself. |
| Init program | The program the kernel execs as PID 1 (a shell, on the stock bash/coreutils images). |
| Extra kernel cmdline | Tokens appended verbatim to the kernel boot command line (for example wasm_user_pin). Leave empty for defaults. |
Launching
Launch machine on the repo page opens the launch surface; Power on boots it. The machine's drive is mounted as the root filesystem over virtio-fs — your browser serves file blobs out of cloud storage on demand, verified by hash on read — and the spec's kernel boots against it in a dedicated worker. The surface shows:
- The screen — a canvas displaying the machine's real framebuffer. Its mode is measured from the window at power-on and follows the window: resizing re-modes the guest display (up to your screen's pixel capacity, max 3840×2160) and the console reflows. Keyboard and pointer events over the screen are delivered to the guest as Linux input events.
- The serial console — a terminal bridged to the guest's console. Every kernel
log line (
dmesg) appears verbatim, so what you see during boot is the actual kernel trace, panic messages included. - Telemetry — machine, storage, and network dials while it runs.
A repo setting can also mark a machine power-on-open, so it boots as soon as the launch page loads.
Persistence and snapshots
Writes made by the running machine go back to its cloud drive — power off, reload, boot again, and your files are there. Owners manage point-in-time copies under Settings → Snapshots:
- Each snapshot is a complete drive state.
liveis the working drive and always exists; the machine boots from whichever snapshot is marked active. - Capture from active makes a new snapshot of the current active state; snapshots can be renamed, deleted, or made active (booting an older snapshot is how you roll back).
Working with the drive from your computer
brintos-fs mounts a machine's drive as a local directory over FUSE:
brintos login
brintos mount <owner>/<repo> /tmp/mymachine
# --snapshot NAME mounts a specific snapshot instead of the active one Mounts are read-write when your account has write access to the repo, read-only otherwise. Writes
are write-back — they complete at local speed and drain to the server in the background; sync/fsync or unmounting are the durable barriers. The end-to-end
developer loop (build a binary locally, drop it onto a machine, run it in the browser) is Build locally, run on brintOS.
Sharing
Make a machine public and send the URL — anyone who opens it can launch the same root filesystem. Recipients who want to keep changes fork it; the running instance in each visitor's tab is their own.
Current limitations
- No network interface in the guest yet. Machines today boot without an
eth0— programs inside the machine can't open sockets to the outside world. Network-as-a-service describes the virtual NIC this is building toward. - Machines are single-operator. A running machine lives in one browser tab; there is no shared live session — sharing a machine shares the filesystem, and each visitor boots their own instance.
- Machine binaries must come from the brintOS toolchain. The kernel runs executables produced by hwjs-cc; Emscripten or WASI binaries won't run. See the developer guide.