Planning index only. Architecture and acceptance tests stay in spec.md. C4 views: c4.md. Do not put hostnames, LAN addresses, or SKUs here.
| Phase | Status | What it is |
|---|---|---|
| 1 — inference host | Done on the workstation lab | Ollama + starter tags on a private GPU |
| 2 — MCP bridge | Done | local-coding-slm stdio tools; Cursor / Copilot / Claude adapters |
| 3 — measure | Protocol + expanded corpus + harder multi-file suite + MCP apply gate + CI; live rates still informal | Layered scoring; scripted premium routing/review; no auto-classifier yet |
| T12 Part A second NVIDIA host | Blocked on host power | WSL GPU via SSH; see examples/downstairs-wsl-gpu.md |
| T12 Part B Copilot A8 / Claude A9 | Config ready; operator clicks pending | Same-machine only; docs/a8-a9-operator-checklist.md |
Finish Phase 3 measurement (layered live rates on the committed corpus) and the existing second-host checks before treating Halo as the next lab.
Use an AMD Ryzen AI Halo-class box as another private Ollama host. The MCP server stays on the workstation. Premium agents still plan and review.
This is not a second product. It is the same bridge with a different
OLLAMA_BASE_URL (or the same loopback URL behind ssh -L).
Public-safe notes: examples/halo-ryzen-ai.md.
- Stdio MCP on the workstation; no listening port
- Tools:
local_status,local_code,local_refactor,local_generate_tests,local_explain,local_review - Env contract:
OLLAMA_BASE_URL,OLLAMA_FAST_MODEL,OLLAMA_STRONG_MODEL,OLLAMA_NUM_CTX - Starter tags:
qwen3.5:9b/devstral-small-2 - No public tunnels; cloud agents out of scope
- Official Ollama library tags only; output treated as untrusted
- Deployment checker (
A12)
- Validate current Ollama on the Halo with its supported AMD backend; record whether ROCm or Vulkan is used. Confirm accelerated placement after a short chat before selecting larger models.
- Pull the starter pair. Leave larger coding tags for a later benchmark.
- Reach the API from the workstation. Prefer
ssh -N -T -o ExitOnForwardFailure=yes -L 127.0.0.1:11436:127.0.0.1:11434 user@<halo-host>and keep Ollama on Halo localhost. Use any unused workstation port in place of11436. A private-interface bind plus a workstation-only firewall is optional. - Point gitignored
.envathttp://127.0.0.1:11436. Reload desktop MCP. Re-runscripts/check_deployment_safety.py. - Repeat acceptance A1–A7 and A11–A12. Run A4 (the workstation succeeds through SSH; an unauthorized LAN client fails). A8/A9 only if those clients are in use.
- After the starter pair feels usable, record a Halo benchmark (model + quant, effective context, tok/s, time to first token, peak unified memory, whether output is reviewable). Do not treat a large advertised context window as a reason to send the whole repo.
- Do not rename tools to
write_code/ollama_status.local_*is the contract already in Cursor, Copilot, and Claude configs. - Do not add
SLM_*environment aliases unless a later consumer cannot useOLLAMA_*. - Do not expose Halo in Cursor's model picker.
- Do not implement an automatic task classifier (still Phase 3).
- Do not start Halo install or wrapper changes until this phase is claimed.
These are not required to start Phase 4. Schedule them if the Halo path needs them:
- Wrapper preflight: reject a non-private
OLLAMA_BASE_URLand fail clearly when/api/tagsis down (no public fallback). - Reject oversized tool payloads (
files+taskover a configured character cap). - Keep dual fast/strong timeouts; a single
SLM_TIMEOUT_SECONDSis unnecessary unless operators ask for one knob.
- Automatic routing / classifiers (only after Phase 3 numbers exist)
- Larger-than-starter models on Halo unified memory
- Application-level shared secret, only if Ollama can do it without breaking local IDE use
- OpenRouter or Cursor OpenAI-base-URL override
- Public Ollama, ngrok, Cloudflare Tunnel
- Cloud-agent access to the private GPU in this home-lab profile
- A second MCP server just for Halo