Skip to content

What this is

How the toolbox is built and how a call flows — including the substrate a reviewer asks about.

Shape

One Next.js (App Router) application, deployed as one Vercel project against one Supabase Postgres, exposing 19 live spokes. Each spoke is a self-contained microservice inside the monolith deploy: its own schema, contract, routes, and audit trail. This gives microservice isolation with monolith operational simplicity.

Components

  • Spokessrc/spokes/<slug>/ (logic + contracts) and src/app/api/spokes/<slug>/<verb>/route.ts (HTTP routes). 19 live; coming-soon ones gated in the registry.
  • Registrysrc/lib/contracts/registry.ts (source of truth: live status + contract versions); exposed at GET /api/registry.
  • Transports — HTTP (/api/spokes/<slug>/*) and MCP (<slug>.<method>), declared once, sharing the same spoke logic.
  • Tenant Platform ("the board") — shared identity + entitlement + governance fabric; spokes consume tenant context and ask the board for policy decisions.
  • Health — per-spoke GET /api/spokes/<slug>/health + aggregate GET /api/health (checkSpokeHealth() / src/lib/health/).
  • Audit — per-spoke persisted results keyed by tenant (× employee × cycle where relevant).

Data flow (a write)

consumer / agent
   → HTTP POST /api/spokes/<slug>/<verb>   (service key: requireServiceKey, first line)
        or MCP <slug>.<method>             (per-consumer scoped key → src/lib/mcp/auth.ts)
   → tenant context + entitlement check (the board)
   → spoke logic over its own Postgres schema (Drizzle)
   → result + audit record (keyed by tenant)

Substrate

  • Framework: Next.js (App Router); routes are the API.
  • Hosting: Vercel (Production reads public; Preview auth-protected).
  • Storage: Supabase Postgres, one schema per spoke. Drizzle schemaFilter / TOOLBOX_SCHEMAS scopes migrations to toolbox schemas only — devplane, performix, and other tenants in the same database are never touched.
  • Contracts: Zod-typed; vendored by consumers.
  • MCP: @modelcontextprotocol/sdk; per-consumer scoped keys.
  • Billing: Stripe.

Spoke clusters (the 19)

Psychometrics (reincarnation, preference-modeler) · stats + causal (calculus, forecasting, program-evaluation, causal-discovery) · latent-factor + performance (factor-models, performance-validity, performance-calibration, manager-effectiveness) · HRIS spine (segmentation-studio, data-anonymizer, job-family-agent, org-graph, worker-resolution, workforce-planning) · compensation (anycomp, wage-compliance, wage-benchmark) · plus the metrics-catalog registry. (Authoritative live list: the registry.)

Consumers

Performix, vela, and peopleanalyst-site vendor the typed contracts and call over HTTP/MCP. The algorithms are not duplicated downstream — they live here.

Honest scope

Some capabilities are coming-soon in the registry; trust the registry's status, not this page, for what's callable today.

See also

Concepts · Trust & Security · APIs