buildmymcpserver/apps/web/app
Marco Sadjadi bc174c1302
All checks were successful
Deploy to Production / deploy (push) Successful in 53s
feat: tiered LLM (GLM free / Claude paid) + rate limits + quota enforcement
The free tier was hemorrhaging Anthropic cost with no abuse cap (no rate
limit on /preview, Opus default in the build worker, 5-min cache TTL that
made cache-miss the common case). This switches free users to GLM, paid
users to Claude tiers, and tightens every leak found in the audit.

Backend:
- @bmm/llm: GLM provider via Zhipu's OpenAI-compatible endpoint, pickPreviewModel
  + pickBuildModel helpers, plan-aware ModelChoice
- preview-cache TTL 5min -> 24h (kills the cache-miss path)
- /v1/servers/preview: picks model from caller's plan, returns model name to UI
- /v1/servers POST: enforces SERVER_LIMITS per plan (402), rate-limits builds
- daily rate-limit on preview (5/40/150/1000) and build (3/20/100/500)
- /v1/auth/me returns plan so the wizard can show the right model name
- generator worker: GLM default, Anthropic Sonnet fallback if GLM errors

Frontend:
- Wizard fetches plan, shows "<model> is drafting the tool spec" pre-emptively,
  upgrade hint for hobby users, friendly errors for 402 / 429
- Pricing page: AI-model line per tier (Open-tier / Haiku / Sonnet / Opus),
  Team €149 -> €199, Enterprise €499 -> €999, daily-preview limit per tier
- Privacy + Security: explicit subprocessor disclosure for Anthropic (US) /
  Zhipu (CN) and which tier uses which

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 23:50:00 +02:00
..
(dashboard) feat: tiered LLM (GLM free / Claude paid) + rate limits + quota enforcement 2026-05-23 23:50:00 +02:00
(marketing) feat: tiered LLM (GLM free / Claude paid) + rate limits + quota enforcement 2026-05-23 23:50:00 +02:00
admin feat(crypto): envelope encryption + key rotation via admin panel 2026-05-20 22:36:08 +02:00
docs fix(web): mobile-responsive hero, marketing site, docs and dashboard 2026-05-21 23:25:26 +02:00
login feat(web): country-code picker, auth-aware header, dedupe new-server CTA 2026-05-21 23:41:19 +02:00
templates feat(web): full SEO stack — metadata, JSON-LD, sitemap, robots, OG image 2026-05-21 19:16:40 +02:00
apple-icon.tsx feat(web): full SEO stack — metadata, JSON-LD, sitemap, robots, OG image 2026-05-21 19:16:40 +02:00
globals.css fix(preview): stop spec generation timing out behind the edge proxy 2026-05-21 23:52:48 +02:00
icon.svg fix(web): favicon matches nav-bar logo (monochrome outline, prefers-color-scheme) 2026-05-19 22:44:58 +02:00
layout.tsx feat(web): full SEO stack — metadata, JSON-LD, sitemap, robots, OG image 2026-05-21 19:16:40 +02:00
manifest.ts feat(web): full SEO stack — metadata, JSON-LD, sitemap, robots, OG image 2026-05-21 19:16:40 +02:00
opengraph-image.tsx feat(web): full SEO stack — metadata, JSON-LD, sitemap, robots, OG image 2026-05-21 19:16:40 +02:00
robots.ts feat(web): full SEO stack — metadata, JSON-LD, sitemap, robots, OG image 2026-05-21 19:16:40 +02:00
sitemap.ts feat(web): full SEO stack — metadata, JSON-LD, sitemap, robots, OG image 2026-05-21 19:16:40 +02:00