Vegaa: an agentic workspace that acts on the systems a business already runs
A multi-tenant workspace where agents do work against connected SaaS systems — built around an OAuth connector layer, an MCP worker and a versioned Postgres schema.
- Sector
- AI agents and SaaS integration
- Engagement
- March 2026 – August 2026, actively developed
- Next.js
- React
- TypeScript
- Supabase
- Python
- MCP
- Vercel AI SDK
Context
An agent that can only talk is a demo. To do work it needs authenticated access to the systems a business already runs on, permission boundaries that hold per workspace, somewhere durable for its output to live, and a surface that can show work in progress rather than a transcript. That makes the hard parts of an agentic product boring ones: an OAuth stack that refreshes and rate-limits correctly, a connector layer that can grow without rewriting the app, and a data model that survives being changed weekly.
What we built
Web OS
Application and API routes in one app, split into 30 subsystem modules under lib/.
Embeddable widget
The workspace rendered inside a host page.
MCP connector worker
One module per connected provider; the app reaches third-party systems only through it.
Architecture
The product and its API routes are one Next.js 16 / React 19 application on Supabase, with the model layer behind the Vercel AI SDK and Anthropic as a provider. Connectors live outside it: a separate Python worker speaking MCP, one module per provider, so adding an integration does not mean touching the app. Authentication to those providers is a real OAuth implementation rather than per-integration one-offs — PKCE, refresh, a provider registry, scope handling and rate limiting are each their own module under lib/integrations/. The schema is treated as code: 111 sequential SQL migrations, from core org/auth through to dashboard configuration. Application code is split into 30 subsystem modules under lib/ — agents, artifacts, chat, composer, dashboards, email, export, integrations, issues, jobs, KPI, library, MCP, observability, portfolio, widget, workflows and workspace among them — which is what keeps an 'operating system' framing from collapsing into one large chat route. Three agents ship in lib/agents/ (customer service, customer support and a dashboard builder), and an embeddable widget lets the workspace be dropped into a host page instead of only visited.
Stack
- Web OS
- Next.js 16.2.1
- React 19.2.4
- Vercel AI SDK
- Supabase
- Tailwind 4
- Embeddable widget
- TypeScript
- same repository (widget/ and lib/widget/)
- MCP connector worker
- Python
- MCP
- httpx
- uvicorn
- Integrations
- 11 MCP provider modules: Apollo, Gmail, Google Workspace, HeyReach, HubSpot, Instantly, Linear, Meta, Notion, Shopify and Slack
- Anthropic — model provider via the Vercel AI SDK
- Supabase — Postgres, auth and storage
- Resend — transactional email
- Puppeteer — headless browser work
Scale
Counts that can be re-derived from the same repositories. Nothing here is a business result — a repository cannot evidence one.
- 621 commits across two repositories.
- 111 sequential SQL migrations.
- 11 MCP provider modules and 30 subsystem modules under lib/.
- 5 OAuth modules — PKCE, refresh, provider registry, scopes, rate limiting.
Where the evidence stops
- No business outcome is claimed.
Evidence
Each statement above, and the artefact it was read from. The client cannot be named, so the sources are given instead.
621 commits across two repositories.
Sourcesum of history.totalCount on each repository's default branch (research sheet summary table)
The database schema is 111 sequential SQL migrations.
Sourcesupabase/migrations/ directory listing, 001_core_org_auth.sql onward
11 MCP provider modules.
Sourceworker/providers/ directory listing in the connector repository
30 subsystem modules under lib/.
Sourcelib/ tree listing in the web application repository
The OAuth implementation is 5 modules — PKCE, refresh, provider registry, scopes, rate limiting.
Sourcelib/integrations/ file listing
Framework versions: [email protected], [email protected], ai@^6.0.140, @ai-sdk/anthropic@^3.0.69.
Sourcepackage.json in the web application repository
Engagement span: 2026-03-31 → 2026-08-12, actively developed.
Sourcefirst and last commit dates on the default branch
Related capability