-
Notifications
You must be signed in to change notification settings - Fork 21
Installation Guide
The easiest way to start Camera Lab is the launcher:
python scripts/launch.pyThe launcher checks your GPU, VRAM, ComfyUI connection, module readiness, and model visibility. It does not download models, install ComfyUI, or change your existing ComfyUI installation.

Use these safe commands first:
python scripts/launch.py --assess-only
python scripts/launch.py --dry-run--assess-only prints the hardware/module/model report. --dry-run prints the
commands it would run without starting Docker or Camera Lab.
Docker is an app that runs software in isolated containers. A container is like a small packaged environment for an app and its dependencies. Camera Lab can use Docker so ComfyUI and/or Camera Lab run without being mixed into your normal Python environment.
You do not need Docker if you already have ComfyUI installed and you are comfortable running Camera Lab directly with Python. In that case, choose:
Existing ComfyUI + native Camera Lab
You may want Docker if:
- You do not have ComfyUI installed yet.
- You want Camera Lab or ComfyUI isolated from your normal Python setup.
- You are comfortable installing Docker Desktop and letting Docker manage containers.
If Docker is new to you, the simplest path is usually:
- Install ComfyUI normally using the official ComfyUI instructions.
- Use Camera Lab's
Existing ComfyUI + native Camera Labmode.
Docker downloads:
- Windows/macOS: https://www.docker.com/products/docker-desktop/
- Linux Docker Engine: https://docs.docker.com/engine/install/
Warning
If you already have a working native ComfyUI setup, do not casually install
new custom nodes, replace Python packages, or rewrite model/workflow folders
inside that same ComfyUI just to try Camera Lab. A workflow that works today
can break when node versions, Python dependencies, model paths, or workflow
JSON expectations change. The safest first path for an existing ComfyUI user
is no-docker, which connects Camera Lab to your current ComfyUI without
trying to replace it.
Camera Lab supports four install paths:
| Your situation | What runs natively | What runs in Docker | Launcher mode |
|---|---|---|---|
| You already have ComfyUI and want the simplest setup | ComfyUI + Camera Lab | Nothing | no-docker |
| You already have ComfyUI but want Camera Lab isolated | ComfyUI | Camera Lab | cam-lab-only-docker |
| You do not have ComfyUI but want Camera Lab native | Camera Lab | ComfyUI | comfy-only-docker |
| You do not have ComfyUI and want everything isolated | Nothing | ComfyUI + Camera Lab | full-docker |
Beginner recommendations:
- If you already use ComfyUI, start with
no-docker. - If you do not have ComfyUI, start with
full-docker. - Use
comfy-only-dockeronly if you specifically want ComfyUI in Docker but Camera Lab running directly on your machine. - Use
cam-lab-only-dockeronly if your existing ComfyUI is reachable from Docker. Your ComfyUI must listen on0.0.0.0, usually by starting it with--listen.
Camera Lab is the web app and orchestration layer. ComfyUI is the generation engine. A normal run works like this:
- Your browser sends a generation request to Camera Lab.
- Camera Lab copies uploaded files into the ComfyUI input folder.
- Camera Lab patches a workflow prompt and sends it to the ComfyUI API.
- ComfyUI loads models and custom nodes, then runs the graph.
- ComfyUI writes generated media into its output folder.
- Camera Lab finds the output and shows it in the browser history.
This is why setup must get two things right:
-
COMFYUI_URL: where the ComfyUI API is listening. -
COMFYUI_ROOT: the folder whoseinputandoutputdirectories Camera Lab should use.
The ports in this guide are examples. If your ComfyUI is not running on 8000
or 8188, replace the example port with your actual ComfyUI port everywhere
you set COMFYUI_URL or COMFY_PORT.
Running ComfyUI in Docker can be convenient, but it is not a free upgrade. It gives you a more isolated, repeatable runtime, but it also adds a container layer between you and ComfyUI.
What you gain:
- Cleaner separation from your normal Python environment.
- A more repeatable ComfyUI runtime for Camera Lab.
- Easier cleanup because the service is containerized.
What you trade away:
- Docker GPU passthrough must be configured correctly.
- The first image build/start can take longer.
- File paths become Docker volume mounts, not normal local paths.
- Debugging custom nodes can be less direct than a native ComfyUI checkout.
- You still need models on the host; Docker mounts them, it does not magically provide them.
- If your native ComfyUI already works well, Docker may add more setup friction than value.
If you already have a stable ComfyUI install and Docker is unfamiliar, native ComfyUI plus native Camera Lab is usually the happiest first path.
Dockerized ComfyUI is isolated from your native ComfyUI, which helps protect a working local setup from dependency changes. The trade-off is that Dockerized ComfyUI is a separate environment with its own custom nodes and dependency versions, so it may behave differently from your native ComfyUI.
Run:
python scripts/launch.py --assess-onlyThe model guide uses these tags:
-
[ok]: ComfyUI can already see the model. -
[missing]: ComfyUI is running, but this model is missing. -
[needed]: ComfyUI was not detected, so Camera Lab can only show what will be needed later.
Model paths are relative to your ComfyUI models folder. For example:
models/checkpoints/ltx-2.3-22b-dev-fp8.safetensors
means:
<your ComfyUI folder>/models/checkpoints/ltx-2.3-22b-dev-fp8.safetensors
For Docker modes, MODELS_DIR is the host folder that contains those model
subfolders. Docker mounts it inside the ComfyUI container at:
/opt/ComfyUI/models

Use this path if you already have ComfyUI installed and running.
Tip
This is the least invasive path for an existing ComfyUI setup. It does not install another ComfyUI or change your custom nodes; it only connects Camera Lab to the ComfyUI URL and folders you configure.
-
Start ComfyUI.
-
Make sure it is reachable in your browser. Common examples are:
http://127.0.0.1:8188 http://127.0.0.1:8000If your ComfyUI uses another port, use that port instead.
-
Create
.envif it does not exist:Copy-Item .env.example .env -
Edit
.env:COMFYUI_ROOT=C:\path\to\your\ComfyUI COMFYUI_URL=http://127.0.0.1:<your-comfy-port>Example:
COMFYUI_URL=http://127.0.0.1:8188 -
Install repo dependencies and workflows:
python scripts/agent_setup.py python scripts/install_workflows.py python scripts/check_setup.py
-
Preview the launch:
python scripts/launch.py --dry-run --mode no-docker
-
Start Camera Lab:
python scripts/launch.py --mode no-docker

Use this path if you want Camera Lab in Docker but want to keep using your existing ComfyUI.
-
Start ComfyUI with network listening enabled. Replace
8188with your ComfyUI port if you use a different one:python main.py --listen 0.0.0.0 --port 8188
-
Copy the Camera Lab Docker env file:
Copy-Item docker\compose.camera-lab-only.env.example docker\compose.camera-lab-only.env
-
Edit
docker/compose.camera-lab-only.env. On Docker Desktop, the ComfyUI URL is often:COMFYUI_URL=http://host.docker.internal:<your-comfy-port>Example:
COMFYUI_URL=http://host.docker.internal:8188 -
Preview:
python scripts/launch.py --dry-run --mode cam-lab-only-docker
-
Start:
python scripts/launch.py --mode cam-lab-only-docker

Use this path if you do not have ComfyUI installed, but you want Camera Lab to run directly on your machine.
This path has the same ComfyUI-in-Docker trade-offs above: GPU passthrough,
volume mounts, and container debugging matter. If you already have a stable
native ComfyUI, prefer no-docker first.
-
Copy the ComfyUI Docker env file:
Copy-Item docker\compose.comfy-only.env.example docker\compose.comfy-only.env
-
Edit
docker/compose.comfy-only.env:MODELS_DIR=C:\path\to\your\ComfyUI\models COMFY_DATA_DIR=.\comfy-data COMFY_PORT=8188If port
8188is already in use, setCOMFY_PORTto another free host port, such as9199. Camera Lab will connect to that host port automatically in this mode.MODELS_DIRmust point to a host folder that contains ComfyUI model subfolders likecheckpoints,diffusion_models,text_encoders,vae, andloras.COMFY_DATA_DIRis where the containerized ComfyUI reads inputs and writes outputs:COMFY_DATA_DIR/input -> /opt/ComfyUI/input COMFY_DATA_DIR/output -> /opt/ComfyUI/outputThe launcher passes the same
COMFY_DATA_DIRto native Camera Lab asCOMFYUI_ROOT, so uploads land where the ComfyUI container can read them. -
Install native Camera Lab dependencies:
python scripts/agent_setup.py -
Preview:
python scripts/launch.py --dry-run --mode comfy-only-docker
-
Start:
python scripts/launch.py --mode comfy-only-docker

Use this path if you want the most isolated setup.
This is the most contained path, but also the most Docker-dependent path. It is best when you want isolation more than maximum simplicity.
-
Copy the full Docker env file:
Copy-Item docker\compose.env.example docker\compose.env -
Edit
docker/compose.env:MODELS_DIR=C:\path\to\your\ComfyUI\models -
Preview:
python scripts/launch.py --dry-run --mode full-docker
-
Start:
python scripts/launch.py --mode full-docker
-
Open Camera Lab:
http://127.0.0.1:8000
- Start ComfyUI first.
- Check that
COMFYUI_URLuses your actual ComfyUI port, such ashttp://127.0.0.1:8188. - For
cam-lab-only-docker, start ComfyUI with--listen 0.0.0.0and use a container-reachable URL such ashttp://host.docker.internal:<your-comfy-port>.
- Edit the relevant Docker env file.
- Set
MODELS_DIRto the host folder that contains your ComfyUI model subfolders. - Do not point it at one model file; point it at the whole
modelsfolder.
- Download or copy that model manually.
- Put it at the path shown by the model guide.
- Restart or refresh ComfyUI if it does not see the new model.
-
Start Docker Desktop on Windows or macOS.
-
On Linux, make sure the Docker daemon is running.
-
For NVIDIA GPUs in Docker, verify GPU passthrough:
docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi
For native Camera Lab:
python scripts/stop_camera_lab.pyFor Docker modes:
docker compose --env-file docker/compose.env down
docker compose -f docker-compose.comfy-only.yml --env-file docker/compose.comfy-only.env down
docker compose -f docker-compose.camera-lab-only.yml --env-file docker/compose.camera-lab-only.env down