DocsHow-to guides
With Docker
Run decisio in a container on a GPU host, from the release image pinned by digest, with the weights in a volume and a restart policy.
One command starts it from the release image; it is ready when /health answers.
docker run -d --gpus all --shm-size 8g --restart unless-stopped \ -p 127.0.0.1:8000:8000 -v decisio-data:/data \ ghcr.io/aminry/decisio@sha256:5f758e5cfbf42892f42f62e037f26376154c3e77c5caf6afdd6ccc1a5cd9c4ee# answers once the first start has fetched the weightscurl -s http://127.0.0.1:8000/healthShown, not run: it needs a GPU host with the NVIDIA Container Toolkit, which this check does not have. Its comments are shown above their commands.
Figure · In a container
The image holds the server; the weights live in a volume.
Docker restarts the container when the server exits; the weights stay in the volume.
1. What you need
Section titled “1. What you need”- A Linux host with one NVIDIA card, sized as on a cloud GPU.
- Docker with the NVIDIA Container Toolkit, so the container can see the card.
2. Run it with Compose
Section titled “2. Run it with Compose”decisio’s compose file, from the release image:
name: decisio
services: decisio: image: ghcr.io/aminry/decisio@sha256:5f758e5cfbf42892f42f62e037f26376154c3e77c5caf6afdd6ccc1a5cd9c4ee environment: DECISIO_BASE: gemma-4-31b # the default (measured on 96 GB, runs on 80 GB); qwen3.6-35b-a3b or gemma-4-12b for the others ports: - "127.0.0.1:8000:8000" volumes: - decisio-data:/data shm_size: "8gb" deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu] restart: unless-stopped # also after a dead engine: the server exits with code 70
volumes: decisio-data:Shown, not run: decisio's compose.yaml, with the release image in place of its local build; not run at this release (an image built from decisio's main came up with the file on a card on 2026-10-01); run record.
Save it as compose.yaml and run docker compose up -d.
It is ready when /health answers 200, as a healthy server’s answer shows.
3. Choose what it serves
Section titled “3. Choose what it serves”| Setting | What it does |
|---|---|
DECISIO_BASE | the model: gemma-4-31b by default, or gemma-4-12b, qwen3.6-35b-a3b, or a decisio model repository |
DECISIO_MODEL | a checkpoint instead; it brings the model its config.json declares |
DECISIO_HOST, DECISIO_PORT | where the server listens inside the container |
Arguments after the image name go to the server, so every server flag works.
4. What to know
Section titled “4. What to know”- The first start downloads the weights into the
decisio-datavolume at/data. They are never part of the image, and a restart does not download them again. - The container runs as a non-root user, and the port is published on
127.0.0.1only. - It checks for an NVIDIA GPU first, and exits with an explanation when it cannot see one.
- When its engine dies, the server exits with code 70. Docker restarts a container when its process exits, not when its health check fails, so
restart: unless-stoppedbrings it back. - After upgrading the image, certify your tasks again (Upgrade).
5. Build the image yourself
Section titled “5. Build the image yourself”To build from source instead, from a clone of the release:
git clone --branch v0.18.1 https://github.com/aminry/decisiocd decisiouv build --wheeldocker compose up --buildShown, not run: it needs a GPU host with the NVIDIA Container Toolkit, which this check does not have.
This builds the image from decisio’s own Dockerfile and compose.yaml, with no image digest to set.
What next
Section titled “What next”- On a cloud GPU: the same server without a container, under systemd or Kubernetes.
- Requirements and limits: every machine, the context length and what was measured on what.
- Operate: health, monitoring and what to watch in production.