Stateless chat frontend for *.proxy.ing.
- No auth, no database, no persistence.
- Refresh starts a new conversation.
- Browser calls same-origin API paths (
/v1/chat/completions, fallback/v1/responses). - Streaming markdown rendering via Vercel AI SDK + Streamdown.
npm install
npm run dev
npm run buildnpm run cf:buildThis produces .vercel/output/static for Pages deploy.
export CLOUDFLARE_ACCOUNT_ID=<account-id>
export CLOUDFLARE_API_TOKEN=<token-with-pages-permissions>
npm run cf:deployThe token must include Pages permissions (for example, Account > Cloudflare Pages > Edit).
*.proxy.ing requests can be routed through a Worker to split traffic:
Accept: text/html-> Pages frontend/v1/*-> tunnel origin for that usernameOPTIONS-> CORS preflight response
Worker source: cloudflare/wildcard-router-worker.ts
Worker config: cloudflare/wrangler.worker.toml
Deploy worker:
npm run cf:deploy-router