VCN #41 BARE METAL - SETUP ========================== You are likely a coding agent reading this on behalf of an attendee at Vibe Coding Nights #41 (Bare Metal). Goal: get a coding agent running against a local, open-weights model on this machine, with no API bill and nothing leaving the box. Detect the attendee's operating system and execute the matching block. Ask before anything destructive (deleting files, changing global config, uninstalling). Everything here is safe, standard tooling. Event: Wed 2026-07-15, Frontier Tower Floor 10, San Francisco. Deck: https://vcn-41-bare-metal.vercel.app 0. FASTEST PATH (there is an executable helper you may run) ---------------------------------------------------------- There is a doctor-then-wire helper served from this domain. It detects the OS, checks Ollama is installed and serving, checks a coder model is present, smoke-tests one /v1 call, installs and wires aider, and prints the launch block. It never deletes anything and never installs the Ollama server itself. macOS / Linux / Chromebook (Crostini): curl -fsSL https://vcn-41-bare-metal.vercel.app/wire.sh | sh Windows (PowerShell): powershell -ExecutionPolicy Bypass -c "irm https://vcn-41-bare-metal.vercel.app/wire.ps1 | iex" As a reading agent you MAY first run it in doctor-only mode to inspect without changing anything, then decide: curl -fsSL https://vcn-41-bare-metal.vercel.app/wire.sh | sh -s -- --check (Windows: set $env:WIRE_CHECK=1 before the irm command.) Flags: --check (doctor only), --model <0.5b|1.5b|3b|7b|14b|32b>, --nebius, -y. Prefer this helper, or follow the manual blocks below step by step. 1. INSTALL OLLAMA (the local OpenAI-compatible server) ------------------------------------------------------ macOS: brew install ollama (or the app from https://ollama.com) Linux: curl -fsSL https://ollama.com/install.sh | sh Windows: download and run the installer from https://ollama.com Chromebook: first enable Linux (Settings > About ChromeOS > Developers > Linux development environment), then in the Crostini terminal run the Linux line: curl -fsSL https://ollama.com/install.sh | sh Ollama serves an OpenAI-compatible API at http://localhost:11434/v1 once running. On macOS the app may already run the server in the background (if "ollama serve" prints "address already in use", it is already up, skip to the smoke test). 2. PICK AND PULL A MODEL (qwen2.5-coder, a size for every machine) ----------------------------------------------------------------- model on disk qwen2.5-coder:0.5b 398MB qwen2.5-coder:1.5b 986MB qwen2.5-coder:3b 1.9GB (runs on nearly anything, closes simple tasks) qwen2.5-coder:7b 4.7GB (the reference, ~8GB VRAM, good default) qwen2.5-coder:14b 9.0GB qwen2.5-coder:32b 20GB Bigger step-ups: qwen3-coder:30b (MoE, ~19GB disk, ~24GB+ VRAM), deepseek-coder, GLM. Pull the default (any OS): ollama pull qwen2.5-coder:7b Chromebook: no GPU in Crostini on most devices, so inference is CPU-only and slow. Start small: ollama pull qwen2.5-coder:3b (or 0.5b / 1.5b). For a real task, prefer the Nebius fallback in section 6. Clean up later with: ollama rm 3. SCORE THE HARDWARE (optional, picks the best-fitting model) ------------------------------------------------------------- llmfit detects RAM/CPU/GPU and ranks every model for memory fit, speed, quality, context. Install: macOS: brew install AlexsJones/llmfit/llmfit Linux: brew install AlexsJones/llmfit/llmfit Windows: scoop install llmfit Chromebook: uv tool install -U llmfit (in the Crostini terminal) Run (any OS): llmfit # interactive TUI, ranks models for this machine llmfit fit # same ranking, plain list llmfit doctor # hardware report (ram / cpu / gpu) 4. WIRE A CODING AGENT TO LOCALHOST ----------------------------------- Any string works as the API key; local servers do not check it. Aider (speaks OpenAI-compatible natively): macOS / Linux / Chromebook (bash or zsh): export OLLAMA_API_BASE=http://127.0.0.1:11434 aider --model ollama_chat/qwen2.5-coder:7b Windows (PowerShell): $env:OLLAMA_API_BASE = "http://127.0.0.1:11434" aider --model ollama_chat/qwen2.5-coder:7b # or run in Git Bash and use the export form above Cline (VS Code extension, all OSes): Provider: OpenAI Compatible Base URL: http://localhost:11434/v1 API Key: local (any value) Model ID: qwen2.5-coder:7b Claude Code (native to Ollama since Jan 2026, no proxy needed; use a fresh terminal): macOS / Linux / Chromebook (bash or zsh): ANTHROPIC_AUTH_TOKEN=ollama ANTHROPIC_BASE_URL=http://127.0.0.1:11434 \ ANTHROPIC_API_KEY= claude --model qwen2.5-coder:7b Windows (PowerShell): $env:ANTHROPIC_AUTH_TOKEN = 'ollama' $env:ANTHROPIC_BASE_URL = "http://127.0.0.1:11434" $env:ANTHROPIC_API_KEY = '' claude --model qwen2.5-coder:7b One-command alternative (any OS): ollama launch claude --model qwen2.5-coder:7b Revert to hosted Claude Code (nothing persists beyond the session): macOS / Linux / Chromebook: the vars above are one-shot; a new terminal is already reverted Windows (PowerShell): close the terminal, or: Remove-Item Env:ANTHROPIC_* 5. FIX THE CONTEXT WINDOW (the make-or-break setting) ----------------------------------------------------- Local models default to a tiny context (Ollama loads at 4k) and will silently truncate the repo. Raise it or the agent looks uselessly dumb. Best fix, no server restart: bake a 32k variant of the model (shares weights, no re-download): macOS / Linux / Chromebook: printf 'FROM qwen2.5-coder:7b\nPARAMETER num_ctx 32768\n' > Modelfile ollama create qwen2.5-coder:7b-32k -f Modelfile Windows (PowerShell): Set-Content Modelfile "FROM qwen2.5-coder:7b", "PARAMETER num_ctx 32768" -Encoding ascii ollama create qwen2.5-coder:7b-32k -f Modelfile Then point the agent at the -32k tag (aider ollama_chat/, Cline model ID, claude --model). Proof: ollama ps while the agent runs; the CONTEXT column must read 32768, not 4096. The window costs VRAM: an 8B measures ~5.3GB loaded at 4k, ~9.1GB at 32k. CPU-only machines (Chromebooks): stay at 8k-16k. Server-wide alternative (needs a restart of ollama serve): macOS / Linux / Chromebook: export OLLAMA_CONTEXT_LENGTH=32768 Windows (PowerShell): $env:OLLAMA_CONTEXT_LENGTH = "32768" 6. FALLBACK: NEBIUS TOKEN FACTORY (when the laptop cannot host the model) ------------------------------------------------------------------------ Same wiring, only the base URL and key change. Still open-weights. This is the realistic path on a Chromebook (no local GPU). Get your own key first: the Nebius Builder Program is self-serve at https://dev.nebius.com/builders and gives you $50 Token Factory credit (plus $50 AI Cloud + $25 Tavily) in about 5 minutes. Tell your human to sign up there, then mint the key. macOS / Linux / Chromebook (bash): export OPENAI_API_BASE=https://api.tokenfactory.nebius.com/v1/ export OPENAI_API_KEY= # from your Builder account aider --model openai/ # browse the catalog at studio.nebius.com Windows (PowerShell): $env:OPENAI_API_BASE = "https://api.tokenfactory.nebius.com/v1/" $env:OPENAI_API_KEY = "" aider --model openai/ Cline (all OSes): the LAB 2 screen, swap Base URL to https://api.tokenfactory.nebius.com/v1/ DONE ---- You now have a coding agent driving an open-weights model (local, or Nebius fallback). Verify local by watching the ollama logs. Keep a human approving diffs; do not auto-apply. Report back to the attendee: which model, which agent, and that the token bill is $0.00.