Docker & air-gapped deployment
Docker Compose
docker compose up -d --buildThen open the URL printed in docker compose logs -f computer, usually http://localhost:8000/?token=... (check docker-compose.yml if you've remapped the host port).
Build and run the image directly
docker build -t hridaai-computer:local --target default .
docker run --rm -it \
-p 8000:8000 \
-v cptr-data:/data \
-v "$PWD:/workspace" \
-w /workspace \
hridaai-computer:local- State lives in
/data. Mount your project at/workspaceso the app can reach it. - The default image includes Git and the GitHub CLI (
gh). - The image ships a
HEALTHCHECKagainst/api/health;docker-compose.ymlsets default memory and process limits.
Image targets / profiles
| Target | When to use |
|---|---|
--target default | Standard image. Git + gh included. |
--target browser | Adds Chromium so the agent's browser tools and browser tabs work. Also available as docker compose --profile browser up. |
If you bind-mount a host directory to /data, make sure it's writable by the container user — SQLite needs to create and update /data/app.db, and host directory permissions take precedence over the image's built-in ownership.
Continuous database backup
Set CPTR_BACKUP=1 (and mount ./backups) and the database streams continuously to a replica through Litestream, with automatic restore on a fresh volume. See Configuration and Observability.
Connecting a host OpenCode server from Docker
To reach a host-running OpenCode server from inside the container, start it on a reachable interface and point the OpenCode agent at the Docker host:
opencode serve --hostname 0.0.0.0 --port 4096Use http://host.docker.internal:4096 on Docker Desktop; on Linux add --add-host=host.docker.internal:host-gateway to docker run.
Air-gapped installation
AI Labs doesn't need internet access after it's installed — the Python wheel bundles the built frontend, and the Docker image is self-contained.
On a connected machine:
pip download --dest wheelhouse 'cptr[all]'
docker build -t hridaai-computer:local --target default .
docker save hridaai-computer:local -o cptr-image.tarTransfer the artifacts, then install or run offline:
pip install --no-index --find-links ./wheelhouse 'cptr[all]'
cptr run --host 0.0.0.0
# or, from the saved image:
docker load -i cptr-image.tar
docker run --rm -it --network=none -p 8000:8000 \
-v cptr-data:/data -v "$PWD:/workspace" -w /workspace \
hridaai-computer:localCore local features run entirely from local assets. External services — hosted model APIs, web search providers, messaging adapters, Git remotes, MCP/OpenAPI servers — still require reachable endpoints.