Files
wifi-densepose/vendor/ruvector/examples/rvf/scripts/rvf-claude-appliance.ps1

67 lines
3.4 KiB
PowerShell

# rvf-claude-appliance.ps1 — Build & boot the Claude Code Appliance (Windows)
# Prerequisites: Docker Desktop, Rust 1.87+, WSL2 (for kernel build)
# Usage: .\scripts\rvf-claude-appliance.ps1
$ErrorActionPreference = "Stop"
$ScriptDir = Split-Path -Parent (Split-Path -Parent $MyInvocation.MyCommand.Path)
Write-Host "=== Claude Code Appliance Builder (Windows) ===" -ForegroundColor Cyan
# ── 1. Check prerequisites ──────────────────────────────────
Write-Host "[1/5] Checking prerequisites..." -ForegroundColor Yellow
try { $null = Get-Command cargo -ErrorAction Stop }
catch { Write-Error "Rust/cargo not found. Install from https://rustup.rs"; exit 1 }
try { $null = Get-Command docker -ErrorAction Stop }
catch { Write-Error "Docker Desktop not found. Install from https://docker.com"; exit 1 }
Write-Host " cargo: $(cargo --version)"
Write-Host " docker: $(docker --version)"
# ── 2. Build the appliance ──────────────────────────────────
Write-Host "[2/5] Building Claude Code Appliance (this builds a real Linux kernel via Docker)..." -ForegroundColor Yellow
Push-Location $ScriptDir
try {
cargo run --example claude_code_appliance
} finally {
Pop-Location
}
Write-Host " Built: output\claude_code_appliance.rvf"
# ── 3. Inspect the result ───────────────────────────────────
Write-Host "[3/5] Inspecting appliance segments..." -ForegroundColor Yellow
$Appliance = Join-Path $ScriptDir "output\claude_code_appliance.rvf"
Get-Item $Appliance | Select-Object Name, @{N="Size (MB)";E={[math]::Round($_.Length/1MB,1)}}
try { rvf inspect $Appliance } catch { Write-Host " (install rvf-cli for detailed inspection)" }
# ── 4. Query the embedded vector store ──────────────────────
Write-Host "[4/5] Querying package database..." -ForegroundColor Yellow
try {
rvf query $Appliance --vector "0.1,0.2,0.3" --k 3
} catch {
Write-Host " (install rvf-cli to query, or use the Rust API)"
}
# ── 5. Boot instructions ───────────────────────────────────
Write-Host "[5/5] Boot instructions:" -ForegroundColor Yellow
Write-Host ""
Write-Host " Windows requires WSL2 or Windows QEMU for the kernel launcher." -ForegroundColor DarkYellow
Write-Host ""
Write-Host " # Option A: WSL2 (recommended)"
Write-Host " wsl -d Ubuntu -- rvf launch $Appliance"
Write-Host ""
Write-Host " # Option B: Windows QEMU"
Write-Host " qemu-system-x86_64.exe -M microvm -kernel kernel.bin -append 'console=ttyS0' -nographic"
Write-Host ""
Write-Host " # Option C: Docker (no QEMU needed)"
Write-Host " docker run --rm -v ${Appliance}:/app.rvf -p 2222:22 -p 8080:8080 rvf-boot /app.rvf"
Write-Host ""
Write-Host " # Connect:"
Write-Host " ssh -p 2222 deploy@localhost"
Write-Host " Invoke-RestMethod -Uri http://localhost:8080/query -Method Post -Body '{`"vector`":[0.1,...],`"k`":5}'"
Write-Host ""
Write-Host "=== Claude Code Appliance ready ===" -ForegroundColor Green
$Size = [math]::Round((Get-Item $Appliance).Length / 1MB, 1)
Write-Host " File: $Appliance"
Write-Host " Size: ${Size} MB"
Write-Host " 5.1 MB single .rvf — boots Linux, serves queries, runs Claude Code."