TryNix runs any Nix package in a browser tab
TryNix boots a Linux kernel compiled to WebAssembly and runs any of 310,083 nixpkgs versions in a tab. Python 3 takes 7.5 seconds on a first visit.
3 min read

You can now run any package from the entire history of nixpkgs without installing anything. Farid Zakaria published TryNix on September 4, 2026. It boots a Linux kernel compiled to WebAssembly inside a browser tab, then runs the package you asked for.
"You can browse the complete history of nixpkgs, over 310,083 package versions, and run any of them in a Linux machine that boots in your tab," Zakaria wrote.
Nixpkgs is the package collection behind Nix and NixOS. Its defining property is that every version ever published stays addressable, which is what makes a claim like this possible.
How it actually works
The pieces are all existing technology, assembled unusually.
A Linux kernel compiled to WebAssembly through QEMU-WASM provides the machine. Ghostty, a terminal emulator, provides the interface. An in-memory Nix store holds the package closure, which is the package plus everything it depends on.
The packages themselves come over plain HTTP from Nix binary caches. That part has one requirement, and Zakaria states it plainly: "The only requirement is that the cache is served with access-control-allow-origin: *."
That header is the whole trick. Nix caches are already public HTTP file servers, so with permissive cross-origin headers a browser can fetch from them directly, with no server in between.
What it costs to start
Cold starts are seconds, not minutes.
| Package | First visit | Return visit |
|---|---|---|
| hello | 4.2s | 1.5s |
| ripgrep | 4.3s | 1.7s |
| python3 | 7.5s | 3.5s |
The gap between the two columns is browser caching doing its job. A second run of the same package skips most of the download.
The limits are real
Three constraints decide whether this fits your use.
Closure size caps out around 1.5GB, against a hard WebAssembly ceiling of 4GB. Large toolchains and anything dragging in a big language runtime will not fit.
There is a serial console and nothing else, per the repository. No graphical applications, no windowing, no browser inside the browser.
And everything is translated from x86-64 to WebAssembly at runtime, which adds latency. This is a place to try a tool, not to benchmark one.
What this means for developers
The immediate use is reproduction. Zakaria puts it as a slogan worth stealing: "Works on my machine" is a URL now for reproduction. A bug report that includes a link booting the exact package version is a different quality of bug report from one that includes a version string.
For anyone maintaining docs or a teaching repo, this removes the worst step in every tutorial. "Install Nix first" loses readers. A link does not.
Check your own binary cache headers if you want this to work against your packages. The cross-origin header is the requirement, and most private caches will not have it set. That is a one-line change and a security decision worth making deliberately, since it opens the cache to any origin.
Do not plan around it for heavy work. Between the 1.5GB closure ceiling and the translation overhead, this is a demonstration surface, not a development environment. The Nix ecosystem has had a rough few months. The Nixpkgs core team disbanded, and a paper backdoored the NixOS bootstrap through strip. A project making the good part of Nix easier to show is welcome timing.
Sources
- Any Nix package, live in your browser - Farid Zakaria
- fzakaria/trynix - GitHub
Related articles

Asahi Linux now officially supports M3 series Macs
Asahi Linux has merged M3, M3 Pro and M3 Max support into its installer. Wi-Fi, USB 3 and AV1 decoding work. Sleep, HDMI and fast 3D do not.

Kubernetes 1.37 promotes rootless mode to beta
Kubernetes 1.37 moves KubeletInUserNamespace to beta. The kubelet, container runtimes, CNI plugins and kube-proxy can now all run as a non-root user.

Babashka 1.13.220 adds FFI for calling native libraries
Babashka 1.13.220 adds an FFI built on Java's Panama API, so a Clojure script can call a native library without writing a pod or any Java.
The daily brief
Three to five stories a day, and what each one means for the people who build software. Free, no spam.