Quickstart
Install Helios on a CUDA machine, pre-warm the model weights, and open the live feed.
Helios runs as one local process: a FastAPI server that owns the camera, the detector, and the single-page UI.
Prerequisites
- A prepared machine with a CUDA-capable NVIDIA GPU and a current NVIDIA driver.
- Python ≥ 3.11 — the config loader uses the standard-library
tomllib. - A working Anthropic API key.
- A camera the OS sees as a webcam: built-in, USB, a phone via a virtual-camera app, or a mirrorless camera through an HDMI-to-USB capture card. See Configuration.
Install the CUDA PyTorch wheel separately and last
requirements.txt deliberately does not list torch / torchvision. A bare torch entry
re-resolves against the default PyPI index and installs the CPU-only wheel, which silently
breaks GPU inference (torch.cuda.is_available() returns False, and Helios then hard-fails with
MODEL_UNAVAILABLE). Install everything else first, then the matched CUDA build, so nothing
downgrades it.
1. Create the environment
# Create + activate a Python >=3.11 virtual environment
python -m venv .venv
.venv\Scripts\activate # Windows
# source .venv/bin/activate # Linux/macOS
# Install everything EXCEPT torch
pip install -r requirements.txt2. Install the matched CUDA torch build
Pick the CUDA version your driver supports (cu124 shown). Use --force-reinstall if a CPU build sneaked in through a transitive dependency.
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu124Verify CUDA is actually live before going further:
python -c "import torch; print(torch.cuda.is_available(), torch.cuda.get_device_name(0))"
# -> True <your NVIDIA GPU name>If this prints False, the CPU wheel is still installed — reinstall from the CUDA index above.
3. Configure the API key
Claude is a hard dependency for the chat, not an optional enhancer. Copy the example env file and set your key:
copy .env.example .env # then edit .env and set ANTHROPIC_API_KEYANTHROPIC_API_KEY=<your-anthropic-api-key>A missing or rejected key surfaces as API_KEY_INVALID: the feed still runs on the starter concepts, but chat is blocked. There is no literal-text fallback.
4. Pre-warm the model weights
On first use Ultralytics auto-downloads the detector weights (yoloe-*-seg.pt, tens of MB) and the MobileCLIP text encoder (mobileclip_blt.ts, ~572 MB) that powers open-vocabulary concept embedding — roughly 600 MB in total. On a slow connection this can take a long time, and an interrupted download leaves a corrupt cache (PytorchStreamReader: failed finding central directory on the next start).
Pre-warm the cache on the machine that will run the demo, while you have good bandwidth:
python -m app.vision --selftest # loads the model + binds concepts, triggering the downloadsIf a weight file got corrupted, delete it (yoloe-*-seg.pt, mobileclip_blt.ts in the working directory) and re-run to re-download cleanly. These files are git-ignored.
5. Run
uvicorn app.main:app --host 127.0.0.1 --port 8000Open http://localhost:8000. Type what you want detected in the chat pane; the live feed updates within about 1–2 s. For a projector, present the browser full-screen.
Helios has no authentication
Anyone who can reach the port can view the feed and change the mode, policy, or zone. Bind to
127.0.0.1 for local use. If you need it reachable from another device on the network (for a
projector, say), run it only on a trusted network you control — there is no login, no token, and
no authorization layer.
6. Pick a mode
Use the mode switch (Presence / PPE Compliance / Danger Zone) above the feed to choose a demo mode. The active mode is always drawn as a banner on the video frame itself, so it stays unambiguous on a projector even if the browser chrome is off-screen. See Demo modes.
Next steps
- Tuning — hit your FPS target with legible, stable boxes.
- Configuration — per-machine profiles in
helios.toml, camera selection. - Reference — endpoints, error states, and troubleshooting.
Introduction
Helios is a live open-vocabulary vision demo — a natural-language chat beside a live camera feed that draws real-time labeled boxes around whatever you ask for.
Modes
Presence, PPE compliance, and the mouse-drawn danger zone — how each mode is selected, what it draws, and the heuristics behind it.