Dressage Docker
July 4, 2026 ยท View on GitHub
This directory builds a local and remote blackbox environment on top of
slimerl/slime:nightly-dev-20260430b. The image installs bubblewrap, opencode, openclaw, Claude Code, Codex CLI,
Dressage, and the standalone dressage-blackbox-server package from
blackbox_server/.
Dressage's default dependencies include E2B support, Ray 2.55.1, and
transformers 5.3.0. The current default installer outputs are opencode
1.17.4, OpenClaw 2026.6.6, Claude Code 2.1.191, and Codex CLI
0.142.5.
Build
The scripts default to the Docker Hub repository huang3eng/dressage and use a
Slime-style UTC date tag: nightly-dev-YYYYMMDDa. For example, a build on
2026-07-04 defaults to huang3eng/dressage:nightly-dev-20260704a.
docker/build.sh
Override the generated date tag if needed:
IMAGE_TAG_DATE=20260704 IMAGE_TAG_SUFFIX=b docker/build.sh
IMAGE_TAG=nightly-dev-20260704b docker/build.sh
Override the full image name if needed:
IMAGE_NAME=my-dressage:dev docker/build.sh
VERSION remains available as a compatibility alias for older local workflows:
VERSION=v0.1.0 docker/build.sh
Push a local build to Docker Hub by setting PUSH=1. Add TAG_LATEST=1 to
also tag and push huang3eng/dressage:latest:
PUSH=1 docker/build.sh
PUSH=1 TAG_LATEST=1 docker/build.sh
The default build platform is linux/amd64, matching the published slime GPU
image. Override it only if you have a compatible base image:
DOCKER_PLATFORM=linux/amd64 docker/build.sh
Automatic Publishing
Docker publishing is owned by the canonical repository
Accio-Lab/Dressage. Merging a pull request into Accio-Lab/Dressage:main
creates the push event that builds and publishes the image. The workflow is
guarded with github.repository == 'Accio-Lab/Dressage', so the same workflow
file can exist in forks without publishing images from fork pushes or manual
runs.
The workflow publishes huang3eng/dressage:nightly-dev-YYYYMMDDa/b/c... and
updates huang3eng/dressage:latest. When multiple releases happen on the same
UTC day, it queries Docker Hub and uses the first unused suffix from a to z.
DOCKERHUB_USERNAME and DOCKERHUB_TOKEN must be configured as repository
secrets in Accio-Lab/Dressage, or as organization secrets available to that
repository.
Run
docker/run.sh
The run script uses the same image-name resolution as the build script. Use
IMAGE_TAG=latest docker/run.sh to run the latest published image, or pin a
dated tag with IMAGE_TAG=nightly-dev-20260704a.
The run script uses --gpus all --network host --ipc host --privileged by
default. --privileged is required for the containerized bubblewrap runner in
the default configuration.
The image includes this repository at /root/Dressage. The run script also
mounts the host repository at /root/Dressage. Model and checkpoint files are
mounted when HOST_CHECKPOINT_DIR or BASE_FOLDER points to an existing host
directory:
HOST_CHECKPOINT_DIR=/data/checkpoints docker/run.sh
Pass a command after the script to run it inside the container:
docker/run.sh bash
docker/run.sh python -m blackbox_server.main
Verify Tools
Inside the container:
bwrap --version
opencode --version
openclaw --version
claude --version
codex --version
python -c "import ray; print(ray.__version__)"
python -c "import transformers; print(transformers.__version__)"
python -c "import e2b; print('e2b ok')"
blackbox-server --help
The Docker image pins Codex CLI to 0.142.5.
The canonical blackbox backend entrypoints are all exposed under
/usr/local/bin: opencode, openclaw, claude, and codex.
The Codex blackbox backend runs with a sandbox-local CODEX_HOME created by
BlackboxServer. Do not mount host ~/.codex into blackbox slots; that directory
can contain real Codex authentication state.
Start BlackboxServer and check health:
BBS_HOST=127.0.0.1 BBS_PORT=23456 python -m blackbox_server.main
curl http://127.0.0.1:23456/health
Start a local blackbox bwrap pool after configuring Ray and Dressage environment variables:
dressage-local-bwrap-start
dressage-local-bwrap-status
dressage-local-bwrap-stop