Vitalii Kogogin
Software Engineer
Full-stack engineer focused on thoughtful interfaces and backend-for-frontend systems. DevOps and systems administration are where I go deepest.
- Frontend systems
- Backend for frontend
- Infrastructure
-
GitHub:
@obergodmar -
Telegram:
@oberg -
Email:
hey@obergodmar.tech
A real Linux guest
This terminal is not an animation or a remote shell. The page boots an i686 Linux guest in v86, an x86 emulator compiled to WebAssembly.
- Guest
- Linux 6.12, i686, 216 MiB
- Session
- BusyBox PID 1, tmux, zsh and eza
- Terminal
- xterm 6 with WebGL and a DOM fallback
- Network
- Disabled in the kernel and emulator
- Storage
- Immutable initramfs with no persistent disk
Runtime
The page loads SeaBIOS, a Linux bzImage, an initramfs and v86 Wasm. It creates the V86 instance in the page runtime. The CPU loop and Wasm do not run in a dedicated app worker. A small internal v86 Worker schedules emulator ticks.
Terminal I/O
xterm sends UTF-8 input and mouse sequences through UART0. Guest output returns through the same serial port. UART1 carries acknowledged terminal size and browser clock updates.
Build
Nix cross-builds the i686 kernel and userspace. It writes a sorted initramfs with fixed timestamps. Vite bundles the browser code. Nix places all public files under a revisioned release path.
Isolation
The guest has no network device, persistent disk, browser storage or host filesystem adapter. Reset destroys the emulator and starts a clean guest.
Sources and reproduction
The main repository is private. The public source package contains the exact third-party sources and the allowlisted VM build files required for the distributed binaries.
- Manifest
- Maps public files and guest store paths to sources
- Checksums
- SHA-256 for each file in the source package
- Recipes
- Kernel config, initramfs scripts and sanitized shell config
- Excluded
- CV data, secrets, databases and server topology
The stable source offer points to the package for this release. The release links below are enabled when the page knows its Nix release ID.
Guest commands: about, machine-info, sources