Lifo is a browser-based virtual machine and sandbox environment that emulates a Linux-like OS entirely in JavaScript. It provides a virtual filesystem (VFS), network stack, process management, shell, and an extensive Node.js compatibility layer that allows running real npm packages, dev servers (Vite, Expo, Express), and CLI tools inside the sandbox. The repository is a pnpm monorepo containing multiple packages: `@lifo-sh/core` (kernel, VFS, shell, node-compat), `@lifo-sh/ui` (React components for terminal, file explorer, preview), `lifo-sh` (CLI for daemon/session management), `apps/playground` (interactive web demo), `apps/desktop` (macOS-style web desktop), and many `lifo-pkg-*` command packages (git, ffmpeg, vi, etc.). The architecture is modular: the core kernel is framework-agnostic and can be embedded in Node.js or browser environments, while the UI and CLI are separate consumers. Key data flows involve user input through the shell, command execution against the VFS and network stack, and Node API calls intercepted by the compatibility layer. External dependencies include `acorn`, `browser-metro`, `ws`, and optional `esbuild`. The project is actively maintained with frequent releases, extensive tests, and a clear roadmap for expanding the sandbox capabilities.
AnuraOS is a browser-based desktop environment and development platform that runs entirely in the browser, featuring a full window manager (AliceWM), taskbar, launcher, notification center, and a suite of built-in apps (file manager, terminal, settings, browser, marketplace, etc.). It includes a complete x86 emulation subsystem via v86, allowing users to boot a custom Alpine Linux virtual machine with persistent disk storage, PTY multiplexing, and network relay through the Wisp protocol. The system is designed as a Progressive Web App (PWA) with offline support via service workers and uses IndexedDB for filesystem and settings persistence. The architecture is modular: core APIs (filesystem, networking, window management, settings, processes, notifications) are exposed through a global `anura` object. Apps are defined by manifests and can be either iframe-based or manual scripts, with support for versioned libraries imported via `anura.import()`. The filesystem uses an abstract provider pattern (`AFSProvider`) with multiple backends (Filer, LocalFS/OPFS). The x86 subsystem manages a v86 emulator with persistent disk images stored in IndexedDB, and integrates with the host OS through a custom mouse driver and network relay. While the codebase demonstrates strong engineering with clean abstractions (e.g., filesystem providers, window manager, notification service), it also exhibits some technical debt: large monolithic files (v86.tsx, Boot.tsx), use of `eval` in legacy handlers, memory leaks in the x86 disk cache, and race conditions in boot sequencing. The x86 image build process requires Linux, Docker, and specific toolchains, limiting portability. Overall, AnuraOS is a sophisticated and functional webOS with reusable components, but its complexity and some outdated patterns suggest moderate maintenance overhead.