Vroot – Instant, daemonless root sandboxes from a single flag A developer tool called vroot launches instant, daemonless Linux root sandboxes from a single command-line flag, using unprivileged user namespaces and bubblewrap to give agents and developers a real uid 0 shell with no daemon, image registry or sudo. vroot stores each environment as a single compressed image mounted copy-on-write, with typical cold starts in tens of milliseconds, and offers JSON output via commands such as `vroot build -python --json`, `vroot ls --json` and `vroot envs --json`, plus atomic cache extraction so concurrent launches cannot corrupt each other. The project publishes a machine-facing contract in docs/AGENTS.md and lets users checkpoint a sandbox with `vroot save NAME golden.vroot` and fork it into multiple named sandboxes. Instant, isolated, single-file Linux development environments that boot in milliseconds — built from a flag. vroot gives you a throwaway or persistent root filesystem that starts in milliseconds, is fully isolated from your host, and contains exactly the tools you asked for: vroot banner + quick-start help vroot -base a root shell blank Alpine Linux vroot -python a root shell that has Python vroot -node -python compose flags freely vroot -sqlite -python db a persistent sandbox named "db" vroot -rust -- cargo build run one command instead of opening a shell Nothing from your host is visible inside unless you expose it with -v , and the sandbox disappears when you exit unless you give it a name . It is also the shortest path from an AI agent to a working toolchain: no daemon, no image registry, no sudo, no build queue. See docs/AGENTS.md https://github.com/gairxx/vroot/blob/main/docs/AGENTS.md for the machine-facing contract. Agents do not need a nicer terminal, they need resources on demand and no coordination overhead . vroot is built for that shape of work: - No daemon, no registry, no sudo. A toolchain is one flag away and starts in tens of milliseconds, so an agent can afford to spawn a fresh environment per step instead of reusing a fragile one. - JSON when you ask for it. vroot build -python --json , vroot ls --json , vroot envs --json , vroot info NAME --json — stdout is pure JSON, logs stay on stderr, exit codes are meaningful. - Parallel-safe. N agents asking for the same environment produce one image: the first builds, the rest wait and report "cached": true . Cache extraction is atomic, so concurrent launches cannot corrupt each other. - Checkpoint, then fork. vroot save NAME golden.vroot turns a good state into one file; boot it as many named sandboxes as you like and throw the failed ones away. The image is never modified. - Host stays hidden. Real uid 0 inside, but no host filesystem, no host processes, no host network surprises unless explicitly mounted. - Deterministic surface. Anonymous sandboxes are ephemeral, named ones persist, -offline cuts the network, and vroot doctor is an explicit preflight. bash $ vroot build -python --json {"env":"/home/u/.local/share/vroot/envs/python-84d0423ed3.sqfs","cached":false} $ vroot -python task1 -- pytest -q exit code is pytest's $ vroot save task1 task1.vroot && vroot task1.vroot retry -- pytest -q The full contract output shapes, locking, fork semantics, rules for agents lives in docs/AGENTS.md https://github.com/gairxx/vroot/blob/main/docs/AGENTS.md . vroot is a lightweight sandbox and container alternative for the common case where you just want a clean, disposable Linux shell with some language or tool installed — without images to build, a daemon to run, or a slow boot. - Instant. Environments are stored as single compressed images and mounted copy-on-write. Starting a shell is a mount + exec , not a container boot. Typical cold start is tens of milliseconds. - Isolated. Your real $HOME , files and processes are not visible by default. The sandbox has its own root, PID namespace, hostname and network disable networking with -offline . - Real root, no sudo. Inside you are uid 0 with full capabilities, using unprivileged user namespaces and bubblewrap. No daemon, no setuid helper, no root on the host. - Composable. -php -sqlite -git builds one environment containing all three. Every distinct combination is cached separately and reused. - Single file. Build once, then save a sandbox — including your changes — into one portable .vroot image you can boot anywhere, and register as a real file type on your desktop with vroot filetype install . - Extensible. Every flag is a small text recipe. Add your own language or tool in a few lines — see docs/BUILDING.md https://github.com/gairxx/vroot/blob/main/docs/BUILDING.md . | | vroot | Docker / Podman | chroot | proot | full VM | |---|---|---|---|---|---| | Boot time | ~10–50 ms | ~0.3–2 s | instant | ~0.1–1 s | seconds | | Requires root / daemon | no / no | no / yes or rootless setup | yes | no | no | | Host filesystem hidden | yes | yes | no | partial | yes | | Real uid 0 inside | yes | yes | yes | no faked | yes | | Storage per environment | one file | layered image + container | directory | directory | disk image | | Compose tools by flag | yes | Dockerfile / run args | manual | manual | manual | | Best for | root shells, language sandboxes, reproducible dev shells | services, images, orchestration | legacy sysadmin | emulation, odd arches | full isolation | - Linux with unprivileged user namespaces enabled default on modern distros; check with vroot doctor . - bubblewrap , util-linux unshare , squashfs-tools mksquashfs , unsquashfs . - curl or wget — only for the first build to fetch the base rootfs . - docker — only if you use a flag whose recipe targets the Debian base bun , clojure , groovy , julia , kotlin , scala , swift . sudo apt install bubblewrap util-linux squashfs-tools curl sudo dnf install bubblewrap util-linux squashfs-tools curl sudo pacman -S bubblewrap util-linux squashfs-tools curl Then verify your host: vroot doctor One line, no sudo, no daemon: curl -fsSL https://raw.githubusercontent.com/gairxx/vroot/main/install.sh | sh That installs the launcher to ~/.local/bin/vroot and the recipe catalogue to ~/.local/lib/vroot . Then check the host and start a shell: vroot doctor verify bubblewrap, namespaces, squashfs vroot -python a root shell with Python Prefer clicking? gairxx.github.io/vroot https://gairxx.github.io/vroot/ has copy buttons for every method. | Method | Command | |---|---| | One-line install | curl -fsSL https://raw.githubusercontent.com/gairxx/vroot/main/install.sh \| sh | | Clone and install | git clone https://github.com/gairxx/vroot && cd vroot && sh install.sh | | Source archive | main.tar.gz https://github.com/gairxx/vroot/archive/refs/heads/main.tar.gz → unpack → sh install.sh | | Custom prefix | curl -fsSL ... \| sh -s -- --prefix /opt/vroot | | Pin a ref | curl -fsSL ... \| sh -s -- --version