Add Windows (PowerShell) support

- scripts/setup.ps1, scripts/pull-models.ps1, run.ps1 — PowerShell equivalents
  of the bash setup/pull/run scripts
- README + docs/DEPLOY.md: Windows quickstart and Task Scheduler autostart

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Joseph Costa
2026-07-05 02:12:02 -05:00
co-authored by Claude Opus 4.8
parent 9938d46a67
commit 95da8fb38d
5 changed files with 131 additions and 0 deletions
+27
View File
@@ -0,0 +1,27 @@
# Pull a model fleet into Ollama on Windows. Edit $models to taste.
# Names must line up with the routing map in router.py (see docs/ROUTING.md).
# Run: powershell -ExecutionPolicy Bypass -File .\scripts\pull-models.ps1
$models = @(
# general / small
"qwen3:8b", "qwen3:14b",
# reasoning / agentic
"qwen3.6:35b-a3b", "gpt-oss:20b", "glm-4.7-flash",
# coding
"qwen3-coder:30b",
# vision / OCR
"qwen3-vl:8b", "qwen3-vl:30b-a3b-instruct",
# multimodal (vision + audio) — gemma4:e4b is the default ROUTER_AUDIO_MODEL
"gemma4:e4b", "gemma4:12b", "gemma4:26b"
# example HF GGUF: "hf.co/USER/REPO:Q4_K_M"
)
$ok = @(); $fail = @(); $i = 0
foreach ($m in $models) {
$i++
Write-Host "=== [$i/$($models.Count)] pulling $m ==="
ollama pull $m
if ($LASTEXITCODE -eq 0) { $ok += $m } else { Write-Host "!! failed: $m"; $fail += $m }
}
Write-Host ""
Write-Host "done. $($ok.Count)/$($models.Count) succeeded."
if ($fail.Count) { Write-Host "failed: $($fail -join ', ')" }
+37
View File
@@ -0,0 +1,37 @@
# One-time setup on Windows: create the Python 3.12 venv and install LiteLLM + Pillow.
# The router itself is stdlib-only; this is for the LiteLLM backend.
# Run: powershell -ExecutionPolicy Bypass -File .\scripts\setup.ps1
$ErrorActionPreference = "Stop"
Set-Location (Split-Path $PSScriptRoot -Parent) # repo root
function Find-Py312 {
if (Get-Command py -ErrorAction SilentlyContinue) {
try { if ((& py -3.12 --version 2>&1) -match "3\.12") { return @("py", "-3.12") } } catch {}
}
foreach ($c in @("python3.12", "python")) {
if (Get-Command $c -ErrorAction SilentlyContinue) {
try { if ((& $c --version 2>&1) -match "3\.12") { return @($c) } } catch {}
}
}
return $null
}
$py = Find-Py312
if (-not $py) {
Write-Error "Python 3.12 not found. Install it: winget install Python.Python.3.12 (or python.org)"
exit 1
}
$exe = $py[0]
$baseArgs = if ($py.Count -gt 1) { $py[1..($py.Count - 1)] } else { @() }
Write-Host ">> using Python 3.12 via '$($py -join ' ')'"
if (-not (Test-Path ".venv")) { & $exe @baseArgs -m venv .venv }
$vpy = ".\.venv\Scripts\python.exe"
& $vpy -m pip install -q --upgrade pip
& $vpy -m pip install -q -r requirements.txt
& $vpy -c "import litellm, PIL; print('>> deps OK (litellm, pillow)')"
Write-Host ""
Write-Host "Next:"
Write-Host " .\scripts\pull-models.ps1 # pull a model fleet (edit the list first)"
Write-Host " .\run.ps1 # start LiteLLM + router"