Add OLAVA provider and local dev stack support

↗ view on GitHub · Nick Whitehouse · 2026-04-30 · b04c4213

- New OLAVA provider (vLLM/OpenAI-compatible) wired through types,
  models registry, llm/index router, and a streaming client. Handles
  reasoning-model output: drops `delta.reasoning` /
  `delta.reasoning_content` from emitted text, strips inline
  <think>...</think> blocks, defaults max_tokens to 16384 with
  OLAVA_MAX_TOKENS env override, and logs per-iteration content vs
  reasoning byte counts. Surfaced as "Olava Extract" in the tabular
  review model dropdown only (deliberately omitted from main chat).
- GET /user/server-keys reports which provider keys are present in
  .env (booleans only, placeholder values filtered) so the frontend
  can mark env-configured providers as available without requiring
  per-user keys. Threaded through UserProfileContext, ModelToggle,
  TabularModelDropdown, and the four call sites that build the
  apiKeys check.
- forcePathStyle on the S3Client in both backend and frontend so
  MinIO works as a local R2 substitute (R2 accepts path-style too).
- Frontend dev script binds to port 9000; backend reads PORT (9001).
- supabase/ config.toml + .gitignore from `supabase init` for the
  local Postgres+Auth+Storage stack.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Repository nwhitehouse/mike
Author Nick Whitehouse <nick.whitehouse@mccarthyfinch.com>
Authored
Parents d9690965
Stats 17 files changed , +702 , -26
Part of Olava (vLLM/Qwen) provider integration

Capture this commit into my fork

Download a Markdown prompt that tells Claude how to port this exact commit into your working tree. Run it via claude -p < capture-commit-b04c4213.md from inside the repo you want the change in.

⬇ Download capture-commit-b04c4213.md