# Command-Line Options for the ODS Installer: Complete Flag Reference

> Explore over 30 ODS installer command-line flags like --dry-run and --tier to customize installation hardware detection LLM integration and service deployment for your needs.

- Repository: [Osmantic/ODS](https://github.com/Osmantic/ODS)
- Tags: api-reference
- Published: 2026-08-30

---

**The ODS installer supports over 30 command-line flags—including `--dry-run`, `--tier`, `--cloud`, and service toggles like `--voice` and `--rag`—parsed in [`ods/install-core.sh`](https://github.com/Osmantic/ODS/blob/main/ods/install-core.sh) to customize hardware detection, external LLM integration, and optional service deployment.**

The ODS (Open Data Science) stack from the **Osmantic/ODS** repository provides a Bash-based installation orchestrator that transforms a bare-metal or cloud instance into a fully configured AI inference platform. All command-line options for the ODS installer are defined and processed in the main orchestration script, allowing you to automate deployments, force specific hardware tiers, or integrate existing external LLM endpoints without interactive prompts.

## How the Installer Parses Command-Line Arguments

According to the Osmantic/ODS source code, argument parsing is implemented in the **"Command Line Args"** section of [`ods/install-core.sh`](https://github.com/Osmantic/ODS/blob/main/ods/install-core.sh) (lines 49‑71). The script uses a standard `while` loop to iterate over `$@`, setting global environment variables that downstream installation phases consume.

Each flag updates a specific variable—for example, `--dry-run` sets `DRY_RUN=true`, while `--tier 3` assigns `TIER=3`. Later modular phases under `installers/phases/` (such as `05-docker` or [`09-offline.sh`](https://github.com/Osmantic/ODS/blob/main/09-offline.sh)) read these variables to determine which Docker images to pull and which configuration files to generate.

## General Behavior and System Configuration Flags

### Installation Control and Safety

These flags modify how the installer interacts with the host system:

- **`--dry-run`** – Simulates the entire installation without modifying the system. Sets `DRY_RUN=true`, causing subsequent phases to print actions rather than execute them.
- **`--skip-docker`** – Assumes Docker is pre-installed, bypassing the `05-docker` phase entirely.
- **`--force`** – Overwrites an existing ODS installation directory without prompting for confirmation.
- **`--no-bootstrap`** – Disables the fast-start bootstrap model download, forcing a full model download in the foreground instead.

### Hardware and Deployment Modes

Control hardware detection and network binding with these options:

- **`--tier N`** – Forces a specific hardware tier (1‑4) instead of auto-detecting via [`installers/lib/tier-map.sh`](https://github.com/Osmantic/ODS/blob/main/installers/lib/tier-map.sh).
- **`--cloud`** – Enables cloud mode (`ODS_MODE="cloud"`), which disables local GPU detection and configures LiteLLM with remote APIs.
- **`--offline`** – Activates fully offline mode for Apple Silicon (`OFFLINE_MODE=true`), disabling external downloads during model selection.
- **`--lan`** – Binds all services to `0.0.0.0` for LAN access by overriding `BIND_ADDRESS` and setting `BIND_ADDRESS_EXPLICIT`.

### Output and Interaction Management

- **`--summary-json <path>`** – Writes a machine-readable JSON summary of the installation to the specified file path, stored in `SUMMARY_JSON_FILE` for downstream automation.
- **`--non-interactive`** – Runs without user prompts, using defaults or supplied flags exclusively (`INTERACTIVE=false`).
- **`-h, --help`** – Displays the usage text and exits immediately.

## External LLM Integration Options

The installer can connect to existing OpenAI-compatible endpoints rather than deploying local inference engines. These flags populate variables consumed by the LiteLLM configuration phase:

- **`--external-llm-url <url>`** – Specifies the endpoint URL (e.g., `http://localhost:11434` for Ollama). Sets `EXTERNAL_LLM_URL`.
- **`--external-llm-provider <provider>`** – Declares the provider type: `auto`, `ollama`, or `lmstudio`. Sets `EXTERNAL_LLM_PROVIDER`.
- **`--external-llm-model <model>`** – Defines the exact model ID exposed by the external provider. Sets `EXTERNAL_LLM_MODEL`.
- **`--reuse-external-llm`** – Allows non-interactive reuse of a previously configured external model on subsequent runs (`EXTERNAL_LLM_AUTO_REUSE=true`).
- **`--no-external-llm`** – Explicitly disables any persisted external LLM selection for the current run (`EXTERNAL_LLM_DISABLE=true`).

## AMD Lemonade SDK Support

For AMD hardware deployments, the installer supports integration with the Lemonade SDK server:

- **`--use-existing-lemonade`** – Connects to a pre-existing Lemonade SDK server instead of installing one locally. Sets `LEMONADE_EXTERNAL=true` and forces `ODS_MODE="lemonade"`.
- **`--lemonade-url <url>`** – Specifies the Lemonade server URL (defaults to `localhost:13305` if omitted).
- **`--lemonade-api-key <key>`** – Provides an API key for LiteLLM to authenticate with the Lemonade server, exported as `LEMONADE_API_KEY`.

## Optional Service Toggles

The installer exposes granular flags for enabling or disabling specific microservices. Each flag controls a corresponding `ENABLE_*` variable:

- **`--voice` / `--no-voice`** – Toggles Whisper and Kokoro voice services (`ENABLE_VOICE`).
- **`--workflows` / `--no-workflows`** – Controls the n8n workflow automation service (`ENABLE_WORKFLOWS`).
- **`--rag` / `--no-rag`** – Enables or disables the Qdrant vector-database RAG pipeline (`ENABLE_RAG`).
- **`--recommended` / `--no-recommended`** – Activates the "recommended" service set: LiteLLM, SearXNG, and Token Spy (`ENABLE_RECOMMENDED`).
- **`--hermes` / `--no-hermes`** – Toggles the Hermes agent (enabled by default as of May 2026) (`ENABLE_HERMES`).
- **`--openclaw` / `--no-openclaw`** – Controls the deprecated OpenClaw agent (`ENABLE_OPENCLAW`).
- **`--comfyui` / `--no-comfyui`** – Enables or disables the ComfyUI image-generation service. Disabling this saves approximately 34 GB of storage (`ENABLE_COMFYUI`).
- **`--langfuse` / `--no-langfuse`** – Toggles the Langfuse observability stack (off by default) (`ENABLE_LANGFUSE`).

Use **`--all`** to enable every optional service simultaneously, including Langfuse. This sets the entire bundle of `ENABLE_*` flags in one operation (lines 64‑65 of [`install-core.sh`](https://github.com/Osmantic/ODS/blob/main/install-core.sh)). Deprecated flags like `--odsforge` are accepted for backward compatibility but emit warnings, as the ODSForge component was removed.

## Practical Usage Examples

```bash

# Basic interactive install with auto-detected hardware tier

./install-core.sh

# Force tier 2, enable voice services, assume Docker is pre-installed

./install-core.sh --tier 2 --voice --skip-docker

# Fully automated CI deployment with all services enabled

./install-core.sh --all --non-interactive

# Connect to existing AMD Lemonade SDK server

./install-core.sh --use-existing-lemonade \
  --lemonade-url http://localhost:13305 \
  --lemonade-api-key secret123

# Use remote Ollama endpoint instead of local inference

./install-core.sh --external-llm-url http://my-ollama:11434 \
  --external-llm-provider ollama \
  --external-llm-model phi4

# Generate JSON summary for downstream automation tools

./install-core.sh --summary-json /tmp/ods-install-summary.json

```

## Summary

- The installer script **[`ods/install-core.sh`](https://github.com/Osmantic/ODS/blob/main/ods/install-core.sh)** processes all command-line options between lines 49‑71, setting global variables consumed by modular phases in `installers/phases/`.
- **General flags** like `--dry-run`, `--tier`, and `--cloud` control installation safety, hardware detection, and deployment mode.
- **External LLM flags** (`--external-llm-url`, `--external-llm-provider`) allow integration with existing Ollama or LM Studio endpoints.
- **AMD-specific options** (`--use-existing-lemonade`, `--lemonade-url`) configure Lemonade SDK server connectivity.
- **Service toggles** (`--voice`, `--rag`, `--comfyui`, `--all`) selectively enable or disable microservices, with `--all` activating every optional component.
- The **`--summary-json`** and **`--non-interactive`** flags support automated, machine-readable deployments in CI/CD pipelines.

## Frequently Asked Questions

### What is the main script that handles ODS installer command-line options?

The file **[`ods/install-core.sh`](https://github.com/Osmantic/ODS/blob/main/ods/install-core.sh)** serves as the main orchestrator. It parses all flags in a `while` loop (lines 49‑71), sets corresponding environment variables, and then invokes modular installation phases located in `installers/phases/`. A thin wrapper script, [`ods/install.sh`](https://github.com/Osmantic/ODS/blob/main/ods/install.sh), simply forwards arguments to this core script.

### How do I run the ODS installer without any user interaction?

Use the **`--non-interactive`** flag to disable all prompts, combined with explicit flags for any choices you would normally make manually. For fully automated deployments, pair this with **`--all`** to enable all services or specific toggles like `--voice` or `--rag`, and specify hardware tier with `--tier N` to bypass auto-detection.

### Can I use an existing Ollama installation instead of deploying local models?

Yes. Pass **`--external-llm-url`** with your Ollama endpoint (e.g., `http://localhost:11434`), set **`--external-llm-provider ollama`**, and specify the model with **`--external-llm-model`**. The installer configures LiteLLM to route requests to this existing instance rather than pulling and running new containerized models.

### How do I enable every optional service at once?

The **`--all`** flag sets the complete bundle of `ENABLE_*` variables in [`install-core.sh`](https://github.com/Osmantic/ODS/blob/main/install-core.sh) (lines 64‑65), activating ComfyUI, voice services, RAG, Langfuse, workflows, and all other optional components in a single command. You can subsequently disable specific services by adding their negative flags (e.g., `--all --no-langfuse`).