type: service
status: active
timestamp: 2026-06-20
tags: [ai, llm, browser, primary]

Puter.js

Browser-side AI inference — user-pays, free unlimited from our side

Puter.js

Role

The AI chat in oriz-me and any other client-side AI feature. Puter handles auth + billing on the user side, so the family pays nothing per request.

Free tier

Card / subscription required?

NO — not from us. End users may attach a card to their Puter account at their discretion; we never see it.

Why not OpenRouter directly?

Older notes in the codebase mention OpenRouter alongside Puter.js. That is a model-ID parity observation, not a direction to call OpenRouter. Puter.js exposes model IDs that mirror OpenRouter’s catalog (DeepSeek R1, Llama, Moonshot, etc.), so a Puter.js call may look like an OpenRouter call — but billing and quota route through Puter.js’s user-pays free tier, which is exactly why we picked it.

Calling OpenRouter directly would require:

  1. An account + eventual credit attachment.
  2. A server to hold the API key (we run no servers we don’t have to).
  3. Per-model rate-limit tracking on free routes.

Puter.js sidesteps all three. See services/business/ai/openrouter.md (status: rejected) for the long-form rationale.

Alternatives

Swap cost

Medium — Puter’s API shape is its own. Swap means re-wiring the chat client to OpenRouter (server-paid) or another browser SDK.

Why this is our pick

Lets us ship AI features without paying for inference. Browser-only keeps the no-server-needed property. Already in oriz-me.

Browser surface only — server side uses Workers AI

Puter.js is the browser-side AI provider. Server-side AI calls (inside the Hono Worker at api.oriz.in) go through Cloudflare Workers AI instead — native Worker binding, zero-egress, 10K neurons / day free, no card. The two services are not interchangeable: Puter.js needs the browser to host its auth flow; Workers AI binds at deploy time to a Worker. Split locked at decisions/architecture/ai-puter-plus-cf-workers-ai.md.

Cross-refs


Edit on GitHub · Back to index