wish — the WishOS package manager
A transactional, rollback-capable package manager with generations, Bedrock-style layers, and bidirectional bundling (system → package, not just the other way around).
This page covers what's changed recently and how to use it. Pick a topic on the left, or see Packages for the live index and Releases for ISO images once published.
Latest updates
Ubuntu package mirror underway (aarch64 first)
A resumable pipeline now repackages upstream precompiled binaries (main component) into .wsh for both wish archs, uploading each finished package straight to the repo without waiting for the rest of the batch. aarch64 is being mirrored first; x86_64 follows once ready. Progress survives restarts, so this runs unattended across many sessions.
Package library and CDN launched
Packages now serve from cdn.wishpkgs.org (Backblaze B2 behind Cloudflare — free egress), and this site (lib.wishpkgs.org) went live as a browsable, live-refreshing package index.
wish gains generations, rollback, bundling, services, layer federation
Every install/remove now snapshots the full system (packages, plus managed config like /etc), and wish rollback <id> reverts all of it atomically. New: a service supervisor, Bedrock-style layers with OverlayFS/shares/snapshots, cross-layer command & library federation, and two-way bundling — repackage an installed system back into a .wsh, not just install one.
Guides
Getting started
Install a package, then explore from there.
# wish init # first-time system setup (mounts, dirs, databases) # wish install <pkg> # install with dependencies, transactional $ wish search <query> # search the package index $ wish list # list installed packages $ wish info # show repo url, arch, cache/lib paths $ wish help # full command reference
Package management
# wish install <pkg> # wish -I <pkg> # wish remove <pkg> # wish --remove <pkg> $ wish update # wish --update # wish upgrade # wish --upgrade $ wish pull <pkg> # download to cache only, don't install $ wish graph <pkg> # show dependency tree $ wish graph --history # show transaction history
Generations & rollback
Every install/remove snapshots the full system state — packages and managed config together.
$ wish generation list # list generations (* = current) # wish generation create # snapshot current state manually # wish rollback <id> # atomically revert to a generation
WISH_MANAGED_PATHS (defaults to /etc).Bundling — system → package, not just package → system
# wish bundle <pkg> # repackage an installed pkg + its config/overrides # wish bundle --system # snapshot the whole system into one .wsh # wish install <file.wsh> # install from a local bundle file # wish restore <file.wsh> # rehydrate a full system from a system bundle
Services
# wish service define <name> <cmd> [--restart=<policy>] [--enable] # wish service start|stop|status|enable|disable <name> $ wish service list
Layers (Bedrock-style)
Isolated filesystem roots sharing one kernel: chroot + a private mount namespace, with configurable shares, OverlayFS, and snapshots.
# wish layer add|remove <name> $ wish layer list|info <name> # wish layer share <name> <src> [target] [--ro] # wish layer overlay <name> add <lowerdir> | off # wish layer clone <src> <dst> # wish layer snapshot <name> [snap-name] # wish layer gui <name> on|off # share X11/Wayland/PipeWire/D-Bus # wish layer expose <name> <binary> [alias] # global wrapper on host PATH # wish run <layer> <cmd> [args]
Federation
# wish layer priority set <l1> <l2> ... # wish federate # expose every layer's commands + libraries globally # wish defederate
Peer networking (LAN)
# wish serve # share cached packages with peers on port 44449 $ wish peer scan # scan the LAN for other wish peers
Environment variables
WISH_REPO_URL WISH_CACHE_DIR WISH_LIB_DIR WISH_ROOT WISH_SERVICES_DIR WISH_RUN_DIR WISH_WRAPPERS_DIR WISH_MANAGED_PATHS
| Name | Version | Description |
|---|