v2.0.0
SaaS LaunchAdded
- Multi-tenant SaaS architecture — every org gets isolated data, RLS-enforced at the database layer
- Better Auth v1.x with organization plugin — invite flow, RBAC (owner/admin/member), seat caps
- Stripe billing — Solo $79/mo, Team $249/mo, 14-day free trial, credit wallet with atomic deductions
- 45 AI pipelines with visual kanban editor, node-level cost tracking, and real-time SSE streaming
- Pipeline versioning — side-by-side diff, restore to any version, stable/testing tags
- Smart client memory — 3-layer system (facts, rules, learned observations) injected into pipeline prompts
- Output viewer — Tiptap rich-text editor, markdown roundtrip, auto-save, diff view, PDF export
- 16 integrations: Slack, Discord, Resend, Google Sheets/Calendar/Drive, HubSpot, Jira, Calendly, QuickBooks, Twilio, Linear, Zapier, Make, Generic Webhook, OpenAI, Ollama
- Onboarding checklist with 5-step guided setup and role selection
- Day 0/1/3/7/12/14 email sequence via Resend
- Analytics: spend by model/pipeline/period, revenue vs cost margin, CSV export
- Audit log with filterable DataTable, expandable rows, CSV export
- Real-time activity feed panel (SSE from activity_log)
- Settings: billing portal, credit history, team management, integration status, notification preferences
- Deployed to Vercel (dashboard) + Fly.io (pipeline server) + Neon (Postgres) + Upstash (Redis)
Security
- Row-level security on all 12 tenant tables — org_id isolation enforced at Postgres layer
- PyJWKClient JWKS verification on pipeline server with org_id header claim matching
- HKDF per-tenant encryption for OAuth tokens
- Opaque path_token webhook routing (no org IDs in URLs)
- Rate limiting keyed by org_id, Jinja2 SandboxedEnvironment for prompt templates
- Sentry error monitoring across all 3 services with alert rules
Removed
- Self-hosted distribution — GridWork HQ is SaaS-only from v2.0
- Docker bundle — replaced by Vercel + Fly.io managed deployment
- SQLite — replaced by Neon Postgres 16 with multi-tenant RLS


