Back to Case Studies

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

AI AgentKit Builder Services