Dolly

15 min read Original article ↗
Applications bhop Airtime: Foundry — strafe trials and scroll jumping. classicube Explore and build in a block world, with an optional agent. closed-source-agent runs Claude Code, downloaded from npm into the session after a notice of its terms. codex-agent Codex TUI with shell tools, ripgrep and fd. default A shell, its text tools, curl, ps, amy, which installs the rest, and nena, which enables the host modules they need. dollyfile-studio Create images with Pi, local models and Neovim. ghostty-x11 An application: Ghostty's window on Dolly's X server, with Slop and amy in its terminal. gnu-emacs an application that opens straight into Emacs. gpu-fluid Stir liquid ink and volumetric smoke. Requires WebGPU. mojo-gpu a shell that installs `mojo` in an image that declares `gpu@0`, where the kernels of its programs run. Requires WebGPU. neovim Neovim with Lua and syntax parsers. pi-agent Pi coding agent with JavaScript, shell tools, ripgrep and fd. pi-local Pi with the bundled Qwen3.5-2B; `/local` installs and switches models. Requires WebGPU. pi-phone Pi for a phone: say what it should do, and tap buttons for the rest. English. rts-arena Watch a Seven Kingdoms replay or start a vision-model match. slopyard Build machines, haul cargo and compete across a coastal scrapyard. Requires WebGPU. speech-to-text-mic Speak, and what the microphone hears is written as text. English. tmux-panes an application that opens into tmux with a shell in each of two panes. wine `/wine/` starts the desktop (`wine desktop`); Shut Down in its Start menu leaves a shell, where `wine hello`, `wine notepad`, `wine x86emu` and `wine desktop` run. x11-desktop an X session: the X server, twm, xclock, xeyes and xterm, with `imgui-x11` ([the SDL2 demo](../sdl2/README.md)) for xterm to start and amy to install packages. xonotic the client with the release's data, maps and font archives (946 MB) under `/usr/share/xonotic/data`; `/xonotic/` starts `xonotic`, the client in software at 1024×768, and leaves the shell when it quits. zero-ad 0 A.D. Release 28: Athens economy and combat scenarios, audio and replay. Requires WebGPU. Packages amy `amy`, the package installer, and `dollyfile`, the recipe engine it runs. base64 `base64` (Alfred Klomp's) and libbase64. bc the `bc` and `dc` calculators (Gavin Howard's). binaryen Binaryen's `wasm-opt`, for its function-pointer cast emulation (`--fpcast-emu`). boost-headers Boost's header-only libraries, for programs the `cc` package builds; it brings no compiler. box3d libbox3d, the Box3D physics library, for programs the `cc` package builds; it brings no compiler. bzip2 bzip2: `bzip2`, `bunzip2`, `bzcat` and libbz2. cargo `cargo`, built inside Dolly, with the `rust` package it compiles with. cbindgen `cbindgen`, which writes C headers for Rust libraries; SpiderMonkey's configure requires it. cc `cc` and `c++` with `ld`, `ar` and `make`, and the headers and libraries they compile against. cmake `cmake`, with the `cc` package it configures and builds with. codex `codex`, the Codex coding agent with its launcher, and the `ripgrep` and `fd` packages. core the shell `slop` and its core commands: `ls`, `cat`, `cp`, `mv`, `rm`, `mkdir`, `tar`, `man`, `help` and others. curl `curl` and libcurl, over the page's HTTP broker. display the terminal: the Ghostty display plugin, its font and the termcap entry. dolly-docs the platform's documents and machine contracts, in `/usr/share/doc/dolly`. dte dte, a small full-screen editor with the keys of a desktop one. emacs `emacs`, GNU Emacs for the terminal, and `etags`. esbuild `esbuild`, the JavaScript and TypeScript bundler, built by `go`. fd `fd`, which finds files by name. flex flex 2.5.4 as Thomas Dickey maintains it (reflex), which starts no m4, also as `lex`, with libfl and the `yacc` package. fmt {fmt}, a library for programs the `cc` package builds, by upstream's CMake; it brings no compiler. freetype FreeType with libpng and zlib, a library for programs the `cc` package builds, by upstream's CMake; it brings no compiler. ghostty-gtk Ghostty's GTK application, a package; it needs an X server. git `git` over the page's HTTP broker, with `diff` and `patch`. glib GLib, GObject and GIO, with their tools. gmqcc the QuakeC compiler, compiled from the same release source. go `go` and `gofmt`, the Go toolchain and standard library compiled again inside Dolly by the seed. gzip `gzip -dc`, which unpacks a `.gz` file to standard output; the `pigz` package writes them. icu ICU 68.2's common and i18n libraries with their data, for programs the `cc` package builds; it brings no compiler. imgui Dear ImGui with its SDL2 and SDL_Renderer backends, a library for programs the `cc` package builds, and `imgui-demo`, upstream's example. imgui-x11 upstream's ImGui example as an X client: SDL2 with its X11 video driver alone, drawing on the server `DISPLAY` names ([the X11 demo](../x11/README.md)). janis `janis`, QuickJS with a Node-compatible surface: `janis FILE.js` runs Node-style programs, and there is no `node`. janis-install installs npm packages and what they depend on from the npm registry, with a command for each program they name, run by Janis. jq jq, the JSON processor, with regular expressions. less `less`, the pager; Git and `man` page through it once it is installed. lfm2.5 Model package: LFM2.5-2.6B weights, description and license. libdolly-audio the `audio@0` module's header and client library, for programs the `cc` package builds. libdolly-gpu the `gpu@0` module's header and client library, for programs the `cc` package builds. libdolly-microphone the `microphone@0` module's header and client library, for programs the `cc` package builds. libdolly-sockets the `sockets@0` module's header and client library, for programs the `cc` package builds. libdolly-touch the `touch@0` module's header and client library, for programs the `cc` package builds. libevent libevent's core, the event loop with its buffers and listeners, a library for programs the `cc` package builds; it brings no compiler. libffi libffi with Dolly's target: calls and closures of signatures known at run time, through `dso@0`. libjpeg IJG libjpeg 9f, a library for programs the `cc` package builds; it brings no compiler. libogg Ogg 1.3.5 from upstream's CMake project, a library for programs the `cc` package builds. libpng libpng with zlib, a library for programs the `cc` package builds, by upstream's CMake; it brings no compiler. libsodium libsodium, a library for programs the `cc` package builds, its sources compiled as its `build.zig` does; it brings no compiler. libterminfo NetBSD's terminfo library with the terminal descriptions it holds, for programs the `cc` package builds; it brings no compiler. libuv the libuv port, built by [`libuv-dolly.mk`](libuv-dolly.mk), that CMake and Neovim are built on, a library for programs the `cc` package builds; it brings no compiler. libvorbis Vorbis 1.3.7 with vorbisfile and vorbisenc from upstream's CMake project, a library for programs the `cc` package builds; it brings `libogg`. libxkbfile X.Org's library of XKB keymap files. libxml2 libxml2 with zlib, a library for programs the `cc` package builds, by upstream's CMake; it brings no compiler. llama `dolly-llama`, linked on `llama-cpp`, serving a GGUF over stdin and stdout; it needs `gpu@0`. llama-cpp llama.cpp's libraries with ggml's WebGPU backend over the GPU interface, for programs the `cc` package builds; they need `gpu@0`. llvm LLVM's tools (`llvm-objdump`, `llvm-nm`, `llvm-ar`, `opt`, `llc` and others), its libraries, headers and `llvm-config`, from the tree whose archives the seed's compiler links. llvm21 LLVM 21 with every default target, Clang and LLD as libraries and headers, and `llvm-config`, in `/usr/lib/llvm21`: what Zig 0.16 links. lua `lua`, PUC Lua 5.1, with its library and headers and the LPeg and luv modules, also as static libraries. lz4 LZ4: `lz4`, `unlz4`, `lz4cat` and liblz4. make GNU `make` alone, for rules that compile nothing; `cc` brings it too. mandoc `mandoc`, which formats a manual page of man or mdoc macros as text, and `text-page`, with which a package formats upstream's pages when it is built. meson Meson, with the `python`, `cc` and `ninja` packages it runs on. minicpm5-2b Model package: MiniCPM5-2B weights, description and license. mojo the package that holds the compiler's build: compiled and linked from those archives with the target's patches, with the standard library and the package `gpu` that it precompiles, what a Mojo object links against (`libmojo-rt.a`, and `libmojo-gpu.a`, its `DeviceContext` over WebGPU) and the `cc` package: `mojo build NAME.mojo` makes a Dolly executable. naga `naga`, the wgpu project's shader translator; 0 A.D.'s shaders are translated to WGSL with it. nena `nena`, which lists a session's host modules and enables or disables them, where the image declares `nena@0`. ninja `ninja` (Samurai), which Meson and CMake's Ninja generator build with. nvim `nvim`, Neovim with its runtime and parsers. ocaml OCaml 5.5: the bytecode compiler `ocamlc`, the toplevel `ocaml`, `ocamllex`, `ocamlyacc`, `ocamldep`, and the standard, `unix`, `str` and threads libraries. openal OpenAL Soft's mixer through its loopback device, built for the 0 A.D. audio path, a library for programs the `cc` package builds; it brings no compiler. parakeet NVIDIA's Parakeet TDT-CTC 110M speech model (English, 135 MB), which `speech-to-text` and `voice` read. pcre2 PCRE2's 8-bit library, GLib's regular expressions. pi `pi`, the Pi coding agent as npm publishes it, with the `janis-install`, `ripgrep` and `fd` packages. pi-dolly Pi's Dolly extension: the prompt, the `dolly` skill, Slop for its shell tool, a download tool, settings, theme and `pi-key`, with the `pi`, `secretenv` and `dolly-docs` packages. pigz pigz, which writes the `.gz` files `gzip` here only reads, and `unpigz`. pixman the pixel library the X server draws with. pkgconf pkgconf, also as `pkg-config`, which reads the `.pc` files libraries install; built by its own recipe. posix `grep`, `sed`, `sort`, `find`, `xargs`, `awk`, `sh` and the other text and file tools. premake Premake 5.0.0-beta7 as 0 A.D. bundles it, which generates Makefiles from a project's scripts. protox `protox`, a protobuf compiler; Codex is built with it. ps `ps`, which lists the processes: PID, parent, state and command line. python `python3` and `pip` (CPython), with the `cc` package pip builds native packages with. quickjs `qjs` and the QuickJS-ng engine as a library (`-lquickjs`, `quickjs.h`): upstream's own command with its `std` and `os` modules, and nothing of Node. qwen3.5-2b Model package: Qwen3.5-2B weights, description and license. qwen3.5-4b Model package: Qwen3.5-4B weights, description and license. raylib raylib 6.0 with its software renderer and a Dolly platform backend: `InitWindow` shows the frames through `display@0`, keys, text and the pointer come from `input@0`, `GetTime` runs. A hidden window, or a program holding the display itself (``), renders to memory. For programs the `cc` package builds; it brings no compiler. ripgrep `rg`, which searches files by regular expression. rust `rustc` and the Rust standard library, built inside Dolly, with the `cc` package it links through. sbase the sbase commands the image leaves out: `yes`, `cal`, `sha1sum`, `sha512sum`, `sponge`, `cols`, `uuencode` and `uudecode`. sdl2 libSDL2, which draws in software into Dolly's display, for programs the `cc` and `cmake` packages build; it brings neither. sdl2-image SDL_image, which loads PNG, JPEG, GIF, BMP, SVG, QOI and more into SDL surfaces and saves PNG and JPEG, with `sdl2`. sdl2-mixer SDL_mixer, which mixes sound effects and plays music (WAV, Ogg Vorbis, MP3, FLAC, MIDI with Timidity) through `sdl2`'s audio, with `sdl2`. sdl2-ttf SDL_ttf, TrueType text into SDL surfaces through the `freetype` package, which it brings with `sdl2`. secretenv `secretenv NAME PROMPT COMMAND`, which reads a secret without showing it into one command's environment. session-recover `session-recover`, which copies the files of a saved session file into a new directory. speech-to-text `speech-to-text` with the Parakeet model and Silero VAD, for an image that declares `microphone@0`. spidermonkey SpiderMonkey 128.13.0, a library for programs the `cc` package builds, built inside Dolly with mozbuild, Python, Cargo and cbindgen, which it does not bring. sqlite SQLite: the `sqlite3` shell, and its library and headers for programs the `cc` package builds. tar sbase's `tar`, which writes archives and reads links and pax headers, in place of the one that only unpacks; `-z`, `-j` and `-J` run gzip, bzip2 and xz (pigz writes `.gz`). tmux tmux, the terminal multiplexer. toybox toybox's `grep` and `sed`, which have `grep -r` and `sed -i`, in place of the image's. transcribe the transcribe.cpp library and its ggml, built with CMake, which `speech-to-text` and `voice` link. transfer `download` and `upload`, the page's file exchange. tree tree, which draws a directory as a tree. twm twm, the Tab Window Manager. typescript TypeScript's `tsc`, run by Janis. unzip Info-ZIP's `unzip` and `zipinfo`. vendor-crates `vendor-crates`, which writes the crates.io crates a Cargo project depends on to `vendor/` for `cargo build --offline`: crates.io's index sends no CORS headers a page can use. vi Neatvi, a small `vi` and `ex` that needs no terminal database. voice `voice` with the Parakeet model, for an image that declares `microphone@0`, `touch@0` and `pty@0`. wabt the WebAssembly Binary Toolkit: `wat2wasm`, `wasm2wat`, `wasm-objdump`, `wasm-strip` and `wasm-validate`. xclock xclock, the Athena clock. xeyes xeyes, the eyes that follow the pointer. xkbcomp the XKB keymap compiler the X server runs. xkeyboard-config the keyboard descriptions xkbcomp reads, with the evdev rules. xonotic-shaders the engine's shader permutations of the normal preset as WGSL in `/usr/share/xonotic/shaders`, for the client's `gpu@0` path: `dpshaders.c` rewrites the engine's GLSL as naga's GLSL front end reads it and the `naga` package translates it, in the build. xorg-server Xsdl, the X server in Dolly's display, with xkbcomp and the keyboard descriptions. xterm xterm, the terminal emulator for X, with a shell on a pseudo-terminal. xxd xxd, the hex dump that also reads one back. xz XZ Utils: `xz`, `unxz`, `xzcat` and liblzma. yacc Berkeley Yacc, as `yacc` and `byacc`. zero-ad-data A build stage: 0 A.D.'s release data made into what the game reads, inside Dolly with Python, XZ and Naga. zig `zig` with its standard library, and the `cc` package: it emits C (`-ofmt=c`) that `cc` compiles. zig-llvm `zig` with its LLVM backend; the LLVM libraries are linked in, so it brings no LLVM. It brings `cc` for its links. zip Info-ZIP's `zip`, with the `unzip` package, which `zip -T` starts. zlib libz: zlib's headers and static library, for programs the `cc` package builds; it brings no compiler. zsh the Z shell, with its line editor, completion system and prompt themes, a package. zstd Zstandard: `zstd`, `unzstd`, `zstdcat` and libzstd. Toolchains classicube-build ClassiCube with the Dolly SDL2 software renderer. cmake-build CMake bootstrapped on the `libuv` package. gamedev-sdk the `raylib` and `box3d` packages, Box3D's sources (Slopyard compiles them again with threads and SIMD) and the float math functions. ghostty-build Ghostty terminal build with Zig and its SDK. go-build the seed with the `go` package installed over it; the base of every Go build. go-sdk the seed, staged: Go's GOROOT for dolly/wasm64, cross-built outside Dolly. go-tools interactive shell: `system` with the `go` and `esbuild` packages. gtk-build A build stage: GTK 4 with its X11 backend and the libraries under it (FreeType, FriBidi, HarfBuzz, fontconfig, cairo, pango, gdk-pixbuf, graphene, libepoxy and the rest), as static libraries. llvm-build a build stage: the seed compiler's libraries, compiled in Dolly. It configures the tree again with those tools and compiles the closure (Clang, LLD, the WebAssembly backend: 2,559 units) at four jobs. It keeps `/usr/lib/llvm-build`: the archives, Clang's resource directory and the configured and generated headers. Then, in the same tree, it builds the rest of LLVM and installs it under `/usr/lib/llvm` for the `llvm` package; the compiler's archives are kept before, so this leaves the compiler as it is. llvm-cc a shell whose `cc` and `c++` are the compiler built in Dolly. On `llvm-tablegen`, with `llvm-build`'s `/usr/lib/llvm-build` copied, it compiles the seed's driver (`src/compiler.cpp`), links the compiler from those archives without its names (`-Wl,--strip-all`), requires the same bytes from it as from the seed compiler for two programs and a sample of LLVM's sources, and installs it for `cc`, `c++`, `ld` and `ar`. llvm-tablegen a build stage. CMake configures the tree inside Dolly; Make builds `llvm-min-tblgen`, `llvm-tblgen` and `clang-tblgen` and runs the TableGen targets the seed compiler's libraries need. It keeps the three tools and `/usr/share/llvm-tablegen` (configured headers and TableGen outputs). llvm21-tablegen a build stage: LLVM 21 with every default target, configured by CMake inside Dolly, and its TableGen tools. mesa-build A build stage: Mesa's OpenGL with GLX over Xlib, drawing with softpipe, and libepoxy taking it from the program, over `gtk-build`. mojo-llvm a build stage: the LLVM, MLIR and Clang Basic libraries the compiler links, at the revision Mojo pins, with Mojo's one patch to LLVM's code generator, and Zstandard. WebAssembly is the only backend. It keeps `/opt/mojo-llvm`: `llvm-tblgen`, `mlir-tblgen`, the archives and the headers. pi-runtime Reusable Pi and Janis runtime. rts-build Seven Kingdoms and its local multiplayer adapter. rust-build rustc, the standard library and Cargo built from source, the kept rustc by the first one built here; the base of every Rust build. rust-llvm the LLVM 22 libraries rustc links, built by Dolly's `c++`. rust-sdk the seed, staged: its compiler and standard library, and its Cargo linked here. rust-tools interactive shell: `system` with the `rust` and `cargo` packages. system `system-tools` with saved sessions (`snapshot@0`, `session-recover`). system-build C/C++ compiler, headers and basic build tools. system-tools Shell, display, Git, curl, Make and POSIX tools. tools-build A build stage: `cmake-build` with the core's `mandoc`, what these packages are built on. wine-build the build. Wine's `widl`, `wrc`, `wmc` and `winebuild`, then 16 DLLs (`ntdll`, `kernel32`, `advapi32`, `gdi32`, `user32`, `version`, `usp10`, `imm32`, `comctl32`, `comdlg32`, `shell32`, `shlwapi`, `shcore`, `uxtheme`, `winspool.drv`, `msvcrt`), the display driver `winedolly.drv`, the programs and `wineserver`, linked as `/usr/bin/wine` on `system-tools` with the FreeType that `zero-ad-deps` built. Wine's source as built stays under `/usr/src/wine`, the port under `/usr/src/dolly/wine`. The build ends by running TinyCC's x86-64 compiler under `x86emu` to make the Start menu's x86-64 sample. x11-build A build stage: X's client libraries, from the protocol headers and libxcb to the Athena widgets, as static libraries. xonotic-build the dedicated server (`xonotic-dedicated`) and the SDL client (`xonotic-sdl`), compiled from the pinned release source with `cc`, `c++` and Make on `system-tools` with the `sdl2` and `gmqcc` packages; the engine and `qcsrc` stay under `/usr/src/xonotic`, and `make -f /usr/src/dolly/xonotic/Makefile qc` compiles `progs.dat`, `csprogs.dat` and `menu.dat` into `/tmp/xonotic/build/qc`. zero-ad-deps A build stage: the engine's libraries from their packages, ENet with Dolly's transport, pkgconf and SDL2. zero-ad-engine A build stage: the 0 A.D. engine built inside Dolly with Premake and Make. zig-build Zig built from source by the C/C++ compiler; emits C. zig-llvm-build build-only; zig1 compiles the compiler to C and `cc` compiles that.