type: decision
status: active
timestamp: 2026-06-20
tags: [ai, puter, cloudflare-workers-ai, surface-split, llm]

AI split — Puter.js (browser) + Cloudflare Workers AI (server)

Two AI providers picked by surface. Puter.js for browser, CF Workers AI for server (user-pays, no API key client-side). Cloudflare Workers AI for server-side calls inside the Hono Worker (10K neurons/day, zero-egress, native binding). Different surfaces, different reasons.

AI split — Puter.js (browser) + Cloudflare Workers AI (server)

Decision

The family ships two AI providers, picked by surface:

SurfaceServiceWhy this surface
Browser (chat in oriz-me, on-page assistants, any client-side AI feature)Puter.jsUser-pays free tier; we ship no API key, the family pays nothing per request
Server (inside the umbrella Hono Worker at api.oriz.in)Cloudflare Workers AINative Worker binding, zero-egress within Cloudflare, 10K neurons / day free, no card

OpenRouter remains rejected (already locked); Firebase AI Logic (Gemini) is available via the Firebase basics skill if a feature truly needs Google’s specific model, but is not the default.

Why

A single AI provider can’t cover both surfaces well:

Splitting by surface keeps each free tier reserved for its intended workload, so neither cliff hits prematurely. Cloudflare Workers AI also fits the family’s stack-cohesion posture (same as queue-cloudflare-native.md — same account, same wrangler.toml, same no-card billing surface).

Implications

Cross-refs


Edit on GitHub · Back to index