Release channel: the install commands on this page fetch development
main, which is not signed. A signed-source path is staged in Verified Install Preview; it is not active until the first eligible immutable release is published, and historicalv3.0.0is not eligible.
One command to a running local AI stack. The installer detects your hardware,
chooses a model, writes the config, starts the services, and leaves you with a
chat UI plus the ods management command.
This quickstart covers Linux, macOS, and Windows. For deeper platform notes, see MACOS-QUICKSTART.md, WINDOWS-QUICKSTART.md, and SUPPORT-MATRIX.md.
Linux:
- Docker with Compose v2+
curlandgit- NVIDIA Container Toolkit for NVIDIA GPUs, the AMD GPU render node
(
/dev/dri; also/dev/kfdfor the optional ROCm image) for AMD, or Intel compute runtime for Arc - 40 GB+ free disk space for models and container images
macOS:
- Apple Silicon Mac
- Docker Desktop running
- 16 GB+ unified memory recommended
- 20 GB+ free disk space
Windows:
- Windows 10/11
- Docker Desktop with WSL2 backend enabled and running
- NVIDIA GPU or AMD Strix Halo recommended
- A normal user PowerShell session. Do not run the installer as Administrator unless you deliberately want admin-owned files under your user profile.
curl -fsSL https://install.osmantic.com/ods.sh | bashThe hosted endpoint proxies the current bootstrap from repository main.
Reviewed merges reach it automatically after edge-cache refresh. ODS_REF selects a compatible repository checkout. See
Installer Trust to inspect the script or install an
audited commit manually; no release has qualified for the verified channel yet.
Do not run this command from Windows PowerShell; use the Windows installer below.
git clone https://github.com/Osmantic/ODS.git ~/src/ODS
cd ~/src/ODS
./install.shOn macOS, keep the clone out of ~/ODS: the disk is case-insensitive, so that
is the same folder as the default install directory ~/ods.
& {
$ErrorActionPreference = 'Stop'
$ProgressPreference = 'SilentlyContinue'
$odsSrc = Join-Path $env:TEMP ('ods-install-' + [guid]::NewGuid().ToString('N'))
$odsZip = Join-Path $odsSrc 'ods-main.zip'
New-Item -ItemType Directory -Path $odsSrc | Out-Null
Invoke-WebRequest -UseBasicParsing 'https://github.com/Osmantic/ODS/archive/refs/heads/main.zip' -OutFile $odsZip
Expand-Archive -LiteralPath $odsZip -DestinationPath $odsSrc
$odsEntry = Join-Path $odsSrc 'ODS-main\install.ps1'
if (-not (Test-Path -LiteralPath $odsEntry -PathType Leaf)) { throw 'The downloaded archive does not contain the ODS installer.' }
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
& $odsEntry
}The Windows command guides Ubuntu/WSL2 preparation and requires Pixel, with no Hermes fallback. It installs missing WSL, Docker Desktop and Ubuntu after asking, continues by itself after the one restart, and opens Portal when done. See Windows Quickstart.
Useful install flags:
| Linux/macOS | Windows | Purpose |
|---|---|---|
--all |
-All |
Enable the recommended full stack |
--voice |
-Voice |
Enable Whisper STT and Kokoro TTS |
--workflows |
-Workflows |
Enable n8n workflows |
--rag |
-Rag |
Enable Qdrant and embeddings |
--pixel |
— | Require Pixel on a qualified Linux/systemd host |
--no-pixel |
— | Disable Pixel and use the configured fallback |
--no-hermes |
-NoHermes |
Disable the Hermes fallback agent |
--no-bootstrap |
-NoBootstrap |
Wait for the full model instead of fast-start |
--tier 3 |
-Tier 3 |
Force a hardware/model tier |
Linux/macOS, or inside Ubuntu for Windows/WSL:
cd ~/ods
./ods-uninstall.sh --forceLegacy native Windows installations only:
$installDir = "$env:USERPROFILE\ods"
cd $installDir
.\ods.ps1 uninstall --forceUse --keep-data or --keep-models to preserve local state. --keep-data
keeps only the data folder inside the install directory. It still deletes
.env (your settings and generated secrets) and config/, and on Linux and
macOS the backups in ~/.ods. If you plan to reinstall over the kept data,
copy those somewhere safe first and put .env back before running the
installer; without it, the installer generates new secrets.
If the Windows
runtime folder is partial and .\ods.ps1 is missing, run
.\ods\installers\windows\ods.ps1 uninstall --force from a source checkout.
Bootstrap mode is enabled by default when your selected full model is large. ODS downloads a small model first so you can start chatting quickly, then downloads and hot-swaps the full model in the background.
Pixel is installed automatically on qualified Ubuntu 24.04/26.04 or Debian 12
PID1-systemd hosts. The Windows entry point explicitly requires Pixel in WSL2 and stops on failure. Other Linux entry points without --pixel may use the
Hermes fallback on unsupported hosts. See docs/PIXEL.md. Hermes-enabled installs
keep the bootstrap model at a 64K context floor, then promote the full local
model target to 128K after the background swap.
Check progress:
ods status
tail -f ~/ods/logs/model-upgrade.logOn Windows:
cd $env:USERPROFILE\ods
.\ods.ps1 status
Get-Content .\logs\model-upgrade.log -Wait- Chat UI: http://localhost:3000
- Dashboard: http://localhost:3001
- OpenCode IDE, when enabled: http://localhost:3003
Loopback-only installs open the Chat UI directly without an account. A network-bound or ODS proxy install keeps authentication enabled and prompts the first user to create the admin account.
ods status
ods chat "Say exactly: ODS is ready."
ods doctorOn Windows:
cd $env:USERPROFILE\ods
.\ods.ps1 status
.\ods.ps1 logs llm
.\ods.ps1 reportFor a lower-level source-tree check on Linux/macOS, or inside Ubuntu for Windows/WSL:
cd ~/ods
./ods-preflight.sh
./scripts/ods-test.shUse the port written to .env. Linux Docker installs commonly expose
llama-server on OLLAMA_PORT=11434; macOS native Metal installs commonly use
8080.
cd ~/ods
LLM_PORT="$(grep -E '^OLLAMA_PORT=' .env | tail -n1 | cut -d= -f2 | tr -d '\"')"
LLM_MODEL="$(grep -E '^LLM_MODEL=' .env | tail -n1 | cut -d= -f2 | tr -d '\"')"
curl "http://localhost:${LLM_PORT:-11434}/health"
curl "http://localhost:${LLM_PORT:-11434}/v1/chat/completions" \
-H "Content-Type: application/json" \
-d "{
\"model\": \"${LLM_MODEL:-qwen3.5-2b}\",
\"messages\": [{\"role\": \"user\", \"content\": \"Hello from ODS\"}]
}"The installer auto-detects your GPU, memory, and platform, then picks an appropriate model and context window. The canonical tier tables live in:
Override detection only when you know the target tier:
./install.sh --tier 3.\install.ps1 -Tier 3Choose a lower tier and reinstall, or lower CTX_SIZE in .env. If Hermes is
enabled, keep context at least 65536 or disable Hermes during install.
The inference engine may still be loading or the full model may still be downloading. Check:
ods status
docker compose logs llama-serverEdit .env and restart:
WEBUI_PORT=3001
OLLAMA_PORT=11435If Ollama Desktop is already using 11434, stop Ollama Desktop or choose a
different OLLAMA_PORT.
Start Docker Desktop, wait until it reports ready, then rerun the installer.
Linux/macOS:
ods status
ods start
ods stop
ods restart
ods logs llm
ods update
./ods-uninstall.sh --forceWindows:
cd $env:USERPROFILE\ods
.\ods.ps1 status
.\ods.ps1 start
.\ods.ps1 stop
.\ods.ps1 restart
.\ods.ps1 logs llm
.\ods.ps1 update
.\ods.ps1 uninstall --force- Open the Dashboard at http://localhost:3001 to watch service health.
- Use Hermes for local agent workflows, or disable it if you only want chat.
- Enable n8n workflows when you want automations.
- Enable RAG when you want local document/vector search.
- Read MODEL-MANAGEMENT.md before swapping GGUFs.