Install
Clean machine to a running stack
Linux or WSL2 on x86-64 (amd64). The v0.2.0 prebuilt images are validated for this architecture; ARM64 images are not included in this release. The source preview is available now. Prebuilt image uploads are pending, so the commands below build the images locally; allow several gigabytes for dependencies and bundled model assets.
Prerequisites
git, rootless Podman, and a compose provider. No Python, Node or uv on the host.
# Debian 13 sudo apt-get update && sudo apt-get install -y git podman docker-compose # Ubuntu 24.04 sudo apt-get update && sudo apt-get install -y git podman podman-compose
Prefer Compose v2 (packaged as docker-compose) and fall back to podman-compose only where v2 is not packaged. Installing docker-compose does not install a Docker daemon; Podman still runs the containers.
podman-compose 1.3.x fails podman compose up with Error: invalid port format and silently passes unexpanded ${VAR:-default} values into the containers. Install docker-compose and run podman compose up -d again.Rootless Podman (the tested path)
curl -fLO https://github.com/Dyluhn/disco-releases/releases/download/v0.2.0/disco-source-v0.2.0.tar.gz
curl -fLO https://github.com/Dyluhn/disco-releases/releases/download/v0.2.0/SHA256SUMS
sha256sum --ignore-missing -c SHA256SUMS
tar -xzf disco-source-v0.2.0.tar.gz
cd disco-v0.2.0
systemctl --user daemon-reload
systemctl --user start dbus.socket
loginctl enable-linger "$USER"
systemctl --user enable --now podman.socket
export DISCO_SANDBOX_SOCKET=$XDG_RUNTIME_DIR/podman/podman.sock
podman compose -f compose.yaml -f compose.build.yaml up -d --build
podman compose logs app-server # prints the UI URL and the pairing token
The two systemctl --user lines set up the per-user services Podman just added; skipping them is the usual cause of sd-bus call: Interactive authentication required part-way through a run. enable-linger keeps the stack up after you log out. The export points the Build sandbox at your rootless socket; keep it exported for every later podman compose command in the same shell.
Rootless Docker
Do not run the Podman lines. Rootless Docker comes from Docker’s installer, not a distribution package:
sudo apt-get update && sudo apt-get install -y git curl uidmap dbus-user-session docker-compose-v2 sudo systemctl disable --now docker.service docker.socket systemctl --user daemon-reload && systemctl --user start dbus.socket loginctl enable-linger "$USER" curl -fsSL https://get.docker.com/rootless | sh export PATH="$HOME/bin:$PATH" export DOCKER_HOST="unix://$XDG_RUNTIME_DIR/docker.sock" curl -fLO https://github.com/Dyluhn/disco-releases/releases/download/v0.2.0/disco-source-v0.2.0.tar.gz curl -fLO https://github.com/Dyluhn/disco-releases/releases/download/v0.2.0/SHA256SUMS sha256sum --ignore-missing -c SHA256SUMS tar -xzf disco-source-v0.2.0.tar.gz cd disco-v0.2.0 DISCO_LOCAL_ENGINE=docker DISCO_SANDBOX_SOCKET=$XDG_RUNTIME_DIR/docker.sock docker compose -f compose.yaml -f compose.build.yaml up -d --build
On Ubuntu 23.10 and later the installer stops at RootlessKit failed because unprivileged user namespaces are restricted; the reference has the AppArmor exception to finish the install. A build from a checkout that dies within 20 seconds on a dns error is rootless Docker’s network namespace, not Disco: give the daemon explicit resolvers in ~/.config/docker/daemon.json.
Windows
Use WSL2 with a Debian or Ubuntu distribution and follow the Podman path inside it. Docker Desktop works too; then host.docker.internal reaches services on the Windows side.
Confirm it is up
podman ps --format '{{.Names}} {{.Status}}' # or: docker ps --format ...
Expect three containers Up … (healthy): app-server, agent-server, frontend. A fourth, sandbox-image, is expected to be Exited (0); it pulls the sandbox image and stops. Check with podman ps, not compose ps: the compose providers print different things and one never prints health at all.
Open http://localhost:8088. A browser on the same machine pairs itself. Next: connect a model.
Update
cd disco-v0.2.0 # download and review the new source archive before upgrading
podman compose pull && podman compose up -d
Your data lives in the disco-data volume and survives updates. Before a major version, take a backup: the reference covers backup and restore, starting at boot and upgrade and uninstall.
Hardware
- 8 GB RAM works with
DISCO_ENCODER_TIER=lite(about 0.15 GB of encoder weights); 16 GB for the full local retrieval tier (about 4 GB). - A useful local driver is a 24–32B-class instruction model with a 32k+ context window. Smaller CPU-only models are for smoke tests.
- Real Build runs want Podman or Docker isolation; the
processsandbox is for local development only.
Reference: docs/self-host.md in the repository is the complete, versioned version of this guide. When the two disagree, the repository is right.