En AI-chat som ikke ryker når API-nøkkelen går tom
·1 min lesing
#chat#claude#ollama#typescript#nextjs
De fleste porteføljesider med en AI-chat ryker i det øyeblikket API-nøkkelen går tom. Min gjør ikke det.
Jeg bygde furevikstrand.cloud med tre lag med graceful degradation:
- Claude (Haiku) — primær, streamet.
- Lokal Ollama — sekundær, også streamet, når den er self-hosted.
- Ren TypeScript-nøkkelordmatcher — alltid tilgjengelig. Levenshtein + vektede nøkler over en håndlaget kunnskapsbase. Ingen nettverk, ingen API-nøkler.

Hvert lag setter en X-Reply-Source-header på responsen, så klienten vet om den skal lese en stream eller en enkelt streng.
Hvorfor det betyr noe
Det vanlige feilmønsteret for en AI-chat er at "siden ser ødelagt ut". Når man faller tilbake til en deterministisk matcher fungerer samtalen fortsatt — selv om Anthropic-saldoen min treffer null eller LLM-serveren går ned.
Bonus: den samme matcheren driver slash-kommandoene (/about, /stack, /projects), så offline-veien er den samme koden som online-veien — ikke en degradert kopi.
Bygd på Next.js 16 + React 19 + TypeScript, deployet via Docker.