One-Line Installer Choices (Detailed Guide)¶
This guide explains how to choose the right one-line installer command and flags for your setup.
Default one-liner (most users)¶
Use this first unless you have a specific requirement.
macOS / Linux¶
curl -sSL https://raw.githubusercontent.com/healthonrails/annolid/main/install.sh | bash
Windows (PowerShell)¶
irm https://raw.githubusercontent.com/healthonrails/annolid/main/install.ps1 | iex
What the installer does:
- Clones Annolid.
- Creates an isolated environment (
.venvby default). - Installs dependencies and Annolid.
- Detects GPU and installs CUDA-enabled PyTorch when appropriate.
- Installs and validates ONNX Runtime providers.
- Prompts for optional extras and launch.
Quick decision table¶
Choose the flag set that matches your goal.
| Goal | macOS / Linux | Windows (PowerShell) |
|---|---|---|
| Default install | curl -sSL https://raw.githubusercontent.com/healthonrails/annolid/main/install.sh \| bash |
irm https://raw.githubusercontent.com/healthonrails/annolid/main/install.ps1 \| iex |
| Skip GPU detection | curl -sSL https://raw.githubusercontent.com/healthonrails/annolid/main/install.sh \| bash -s -- --no-gpu |
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/healthonrails/annolid/main/install.ps1))) -NoGpu |
| Non-interactive install | curl -sSL https://raw.githubusercontent.com/healthonrails/annolid/main/install.sh \| bash -s -- --no-interactive |
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/healthonrails/annolid/main/install.ps1))) -NoInteractive |
| Named profile | curl -sSL https://raw.githubusercontent.com/healthonrails/annolid/main/install.sh \| bash -s -- --profile workstation |
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/healthonrails/annolid/main/install.ps1))) -Profile workstation |
| Install to custom folder | curl -sSL https://raw.githubusercontent.com/healthonrails/annolid/main/install.sh \| bash -s -- --install-dir /path/to/annolid |
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/healthonrails/annolid/main/install.ps1))) -InstallDir C:\\path\\to\\annolid |
| Custom venv location | curl -sSL https://raw.githubusercontent.com/healthonrails/annolid/main/install.sh \| bash -s -- --venv-dir /path/to/.venv |
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/healthonrails/annolid/main/install.ps1))) -VenvDir C:\\path\\to\\.venv |
| Use Conda env | curl -sSL https://raw.githubusercontent.com/healthonrails/annolid/main/install.sh \| bash -s -- --use-conda |
Not supported in install.ps1 |
| Enable optional extras | curl -sSL https://raw.githubusercontent.com/healthonrails/annolid/main/install.sh \| bash -s -- --extras sam3,text_to_speech |
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/healthonrails/annolid/main/install.ps1))) -Extras sam3,text_to_speech |
Linux/macOS options in detail¶
install.sh supports:
--install-dir DIR--venv-dir DIR--profile minimal|gui|workstation|full--extras EXTRAS--no-gpu--use-conda--no-interactive--help
Examples:
# Non-interactive CPU-only install to a custom directory
curl -sSL https://raw.githubusercontent.com/healthonrails/annolid/main/install.sh | \
bash -s -- --install-dir ~/tools/annolid --no-gpu --no-interactive
# Use Conda instead of venv
curl -sSL https://raw.githubusercontent.com/healthonrails/annolid/main/install.sh | \
bash -s -- --use-conda
# Install with optional features
curl -sSL https://raw.githubusercontent.com/healthonrails/annolid/main/install.sh | \
bash -s -- --extras sam3,image_editing,text_to_speech
Windows options in detail¶
install.ps1 supports:
-InstallDir DIR-VenvDir DIR-Profile minimal|gui|workstation|full-Extras EXTRAS-NoGpu-NoInteractive-Help
For extra options, run:
.\install.ps1 -Help
Examples:
# Run installer from local script with explicit options
.\install.ps1 -InstallDir C:\annolid -NoGpu -NoInteractive
# Run remote installer with explicit options
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/healthonrails/annolid/main/install.ps1))) -NoGpu -NoInteractive
# Install optional features
.\install.ps1 -Extras sam3,image_editing,text_to_speech
Optional extras (--extras / -Extras)¶
gui is the default one-line installer profile. It installs GUI support plus the ml, tracking, and cutie extras so common model and tracking workflows are available immediately.
Named profiles provide stable defaults for common machines:
| Profile | Installed optional extras | Use this for |
|---|---|---|
minimal |
none beyond the required GUI extra | Fastest GUI/core annotation setup when model runtimes should be avoided. |
gui |
ml,tracking,cutie |
Default profile; same behavior as omitting --profile / -Profile. |
workstation |
tracking,sam3,training |
Maintained research workstations that need common tracking runtimes, promptable segmentation, and training dashboards. |
full |
all |
Fully provisioned lab machines where dependency size is less important than breadth. |
Explicit extras are merged with the selected profile. For example,
--profile workstation --extras ai_chat,text_to_speech installs
gui,tracking,sam3,training,ai_chat,text_to_speech.
Current supported extras:
audioai_chatmltrackingtrainingyolocutierealtimelarge_imageremote_videosam3image_editingtext_to_speechqwen3_embeddingannolid_botbotmemoryall
What each extra is for (with example use cases)¶
| Extra | Install this when you need... | Example use case |
|---|---|---|
audio |
audio decoding/playback helpers | You want waveform-derived behavior features, microphone recording, or sound playback without installing audio stacks in every lab workstation. |
ai_chat |
hosted OpenAI-compatible or Anthropic provider SDKs | You use GPT/OpenRouter/Claude-style providers instead of only local/Ollama-compatible paths. |
ml |
general ML/model runtime dependencies | You need PyTorch, Transformers, Hugging Face Hub, ONNX Runtime, Hydra/OmegaConf, and model tooling but do not want every optional workflow. |
tracking |
common tracking workstation dependencies | You need PyTorch, ONNX Runtime, Cutie-style config dependencies, and YOLO matching helpers on a maintained workstation. |
training |
TensorBoard dashboards and projector views | You train models from Annolid and want live training curves or embedding projector output. |
yolo |
Ultralytics YOLO/YOLOE workflows | You train YOLO models, run YOLOE prompt inference, or export YOLO detections to LabelMe JSON. |
cutie |
Cutie video object segmentation tracking runtime | You run Cutie tracking on minimal installs and want the required Python packages installed up front. Minimal/default installs can still auto-install missing Cutie packages on first use. |
realtime |
serial/ZMQ realtime hardware integrations | You use Bpod, realtime streams, or ZMQ control paths. |
large_image |
TIFF/OME-TIFF metadata and optional region-streaming backends | You want large TIFF, BigTIFF, OME-TIFF, or virtual-slide style viewing without forcing those native libraries into every install. Leave it out for the default GUI install. |
remote_video |
network/remote video decoding through ffpyplayer |
You receive frames from Annolid's remote video player path. Leave it out for normal local video files and Python 3.14 default installs. |
sam3 |
the SAM3-related segmentation workflow/features in Annolid | You want stronger promptable segmentation on difficult frames and plan to use SAM3 tools in the GUI/CLI pipeline. The installer also attempts the optional SAM-HQ dependency for this profile. |
image_editing |
diffusion-based image editing/generation dependencies | You are preparing augmented training images (inpainting/background edits) as part of annotation or data curation. |
text_to_speech |
built-in narration/read-aloud features | You want captions/notes read aloud during review, accessibility workflows, or hands-free labeling sessions. |
qwen3_embedding |
Qwen3-based embedding/multimodal utilities | You plan to run embedding-powered retrieval/comparison flows that rely on the Qwen3 stack. |
annolid_bot |
bundled Annolid Bot integrations (WhatsApp + Google Drive/Calendar + MCP) | You want background services/integrations without installing each Bot extra individually. |
bot |
Annolid Bot integrations plus memory dependencies | You want provider SDKs, channel integrations, MCP, browser automation, and LanceDB-backed memory in one extra. |
memory |
vector database dependencies for fast Annolid Bot memory | You want LanceDB-backed semantic memory rather than the lightweight lexical path. |
all |
full-feature workstation profile | You are setting up a maintained lab machine where install size is less important than having every optional integration ready. |
Practical install suggestions¶
- Minimal install (fastest, lowest dependency footprint): use
--profile minimal/-Profile minimal. - Most common research annotation and tracking setup: use the default installer profile.
- Common training workstation: add
yolo,training. - Hosted AI chat providers: add
ai_chat. - Accessibility or narrated review: add
text_to_speech. - Data augmentation/image synthesis workflows: add
image_editing. - Remote network video decoding: add
remote_video. - Realtime hardware/streaming workflows: add
realtime. - Only install
qwen3_embeddingif you explicitly use those embedding features. - If you use Annolid Bot integrations, add
annolid_bot.
Use comma-separated values with no spaces, for example:
--extras sam3,text_to_speech
large_image runtime note¶
The large_image extra installs the Python bindings, but pyvips and openslide-python may still require native system runtimes on your machine. This extra is optional; Annolid's normal GUI workflows do not depend on it.
If those runtimes are not available, Annolid will still open the file and will fall back to tifffile when available, but navigation can be slower on very large TIFF files.
remote_video runtime note¶
The remote_video extra installs ffpyplayer. On Python 3.14, ffpyplayer may need to build from source and require native FFmpeg development headers such as libpostproc. The default installer leaves this extra out so core GUI and local video workflows can install cleanly on Python 3.14.
SAM-HQ runtime note¶
The one-line installers no longer install SAM-HQ during the default GUI setup. SAM-HQ is attempted only when a SAM-related profile such as --extras sam3 / -Extras sam3 or all is selected. This keeps the default installer independent of an extra GitHub source install and makes locked-down lab workstations easier to bootstrap.
Cutie runtime note¶
The cutie extra installs the Python runtime packages used by Cutie tracking.
The default gui profile installs this extra up front. If a minimal install
tries to run Cutie tracking and one of those packages is missing, Annolid
attempts to install the missing packages into the active environment before
loading the tracker. Set ANNOLID_AUTO_INSTALL_CUTIE_DEPS=0 to disable that
automatic repair and show the exact install command instead.
Recommended patterns¶
- Stable workstation install: use default one-liner first, then rerun with flags only if needed.
- Headless or CI environment:
use
--no-interactive(and--no-gpuif GPU drivers are unavailable). - Shared lab server:
set explicit
--install-dirand--venv-dirto avoid confusion.
GPU and device suggestions¶
Use this as a practical hardware guide before choosing flags.
| Device / Platform | Recommendation | Suggested installer choice |
|---|---|---|
| NVIDIA GPU workstation (Linux/Windows) | Best performance for training + large-batch inference. Keep CUDA drivers current. | Use default installer (do not pass --no-gpu / -NoGpu). |
| Apple Silicon (M1/M2/M3) | Good local inference performance via MPS; stable for many annotation/tracking tasks. | Use default installer on macOS. |
| CPU-only laptop/VM | Works for annotation and light inference, but slower for heavy models. | Use --no-gpu (Linux/macOS) or -NoGpu (Windows). |
| Shared HPC/server node | Prefer reproducibility and explicit paths/env control. | Use --no-interactive, explicit --install-dir/--venv-dir, optionally --use-conda. |
ONNX Runtime CPU/GPU behavior¶
Annolid uses ONNX Runtime for several model paths. The one-line installers keep the provider choice explicit:
- Linux and Windows with an NVIDIA driver reporting CUDA 12.x or newer: install
onnxruntime-gpufrom the CUDA 12 package feed and validate thatCUDAExecutionProvideris available. - Linux and Windows with CUDA 13.x driver reports: use the same stable CUDA 12 ONNX Runtime GPU wheel because NVIDIA drivers are backward compatible with CUDA 12 runtimes.
- Linux and Windows without a CUDA 12-compatible NVIDIA driver: install CPU
onnxruntimefor compatibility. - macOS: install
onnxruntime; ONNX acceleration usesCoreMLExecutionProviderwhen the installed wheel and macOS runtime expose it. There is no CUDA ONNX Runtime wheel for macOS. --no-gpu/-NoGpu: skip GPU detection and install CPU ONNX Runtime.
If a CUDA 12-compatible NVIDIA driver is detected but CUDAExecutionProvider is missing after installation, the installer exits with a repair command instead of silently accepting a CPU-only ONNX Runtime install.
Manual repair inside the installer-created environment:
uv pip install --upgrade --force-reinstall onnxruntime-gpu --extra-index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/
python -c "import onnxruntime as ort; print(ort.get_available_providers())"
Device-specific tips¶
- If you have an NVIDIA GPU, verify drivers and CUDA runtime before install (
nvidia-smishould work). - If GPU install fails or is unstable, rerun in CPU mode first (
--no-gpu/-NoGpu) to get a working baseline quickly. - For remote servers without display, combine
--no-interactiveand CPU mode unless GPU runtime is already validated. - On Apple Silicon, use native arm64 Python/environment tools for best compatibility and speed.
Verify installation¶
After install:
annolid --help
Launch GUI:
annolid
If annolid is not found, activate the environment printed by the installer and retry.
Security note¶
Piping scripts from the internet is convenient but trust-based. For stricter security:
- download script first,
- inspect it,
- then run locally with explicit options.