Self-Hosted Path

Bring up LATCH on an Ubuntu GPU host with Docker.

Use this path when you control the Ubuntu machine directly. The steps below install the required Docker GPU runtime, log into the private CoDynamics registry, pull the image, and start a local LATCH room on port 8091.

Requirements

What you need before you start.

Step 1

Install Docker and the NVIDIA Container Toolkit.

Host bootstrap Run once on a fresh Ubuntu GPU host
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg docker.io
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \
  sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
  sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
  sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list >/dev/null
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo systemctl enable --now docker
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
Validation Confirm the host is actually GPU-ready
nvidia-smi
docker info
docker run --rm --gpus all nvidia/cuda:12.8.0-base-ubuntu22.04 nvidia-smi

Step 2

Log into the private registry and pull LATCH.

Private registry login Use the credentials from the fulfillment email
docker login codynamicslatch.azurecr.io \
  -u <acr username> \
  -p <acr password>

docker pull codynamicslatch.azurecr.io/latch/self-hosted:stable

The first image pull is large. Plan for a long initial download, especially on a fresh host.

Step 3

Create the runtime directory and token file.

Persistent host paths Recommended layout
sudo mkdir -p /srv/latch/runtime
sudo mkdir -p /srv/latch/secrets
sudo sh -c 'printf "%s\n" "<your CoDynamics runtime token>" > /srv/latch/secrets/license_token.txt'
sudo chmod 600 /srv/latch/secrets/license_token.txt

Step 4

Start the container.

docker run Supported customer startup path
docker run -d \
  --name latch \
  --gpus all \
  -p 8091:8091 \
  -e LATCH_LICENSE_TOKEN_FILE=/run/secrets/latch_license_token \
  -e LATCH_LICENSE_VALIDATION_MODE=codynamics_online \
  -e LATCH_LICENSE_VALIDATION_URL=https://cdlac-demo-api.azurewebsites.net/api/license/startup_validate \
  -v /srv/latch/secrets/license_token.txt:/run/secrets/latch_license_token:ro \
  -v /srv/latch/runtime:/opt/latch/runtime \
  codynamicslatch.azurecr.io/latch/self-hosted:stable

Step 5

Watch startup and verify readiness.

Startup logs Warmup still takes several minutes after container start
docker logs -f latch
Health check Use this as the source of truth
curl -s http://127.0.0.1:8091/health | jq '.status, .ready, .detail'

"ready"
true
"ready to accept files for processing"

Step 6

Run one compile and one query.

Smoke test Compile text, then query it
curl -s http://127.0.0.1:8091/compile_text \
  -H 'Content-Type: application/json' \
  -d '{"name":"acme.txt","text":"Acme Corp builds workflow software for manufacturing teams.","source_type":"text"}'

curl -s http://127.0.0.1:8091/query \
  -H 'Content-Type: application/json' \
  -d '{"query":"What does Acme Corp do?","doc_ids":["<doc_id from compile_text>"]}'

Next

Use the docs surface that matches your workflow.

Reference

Customer API Reference

Requests, response fields, and the supported local endpoint inventory.

Reference

Console Guide

Panel-by-panel operator documentation for the LATCH browser UI.