exoDocs

The stack

The stack

Twelve named dimensions, each with a preferred platform, a boundary, and a replacement path.

Exo names every dimension of an App's stack, the preferred platform for it, and the boundary that keeps that platform replaceable. The table mirrors the stack on exo.now, whose source of truth is the dimensions list in src/components/ExoShell/index.tsx. The platform facts on each page are rendered from the integration catalog in src/platform/integrations/catalog.ts, and a docs test checks every page against the landing page's numbers, names, and platforms, so the landing page, the catalog, and these docs cannot drift apart.

There are twelve dimensions. On 2026-10-05, Media moved into App state & storage, the CMS into Design system (as pages), and CRM into Communications & support; Analytics is now Observability.

#DimensionExo platformInfrastructure
01Control planeExoHermes (agents) + FluidVoice (voice input, built in)
02Development frameworkExoNext.js + TypeScript + React (proposed)
03Source controlExoEntire
04App state & storageExoConvex + Convex Storage
05IdentityExo KeyConvex Auth
06Design systemExo Designshadcn/ui + Structured Liquidity + Construct (pages)
07DeployExo Deploy (exo-deploy)Railway (web) + Expo (mobile)
08Communications & supportExo BroadcastBird + Twenty (CRM)
09PaymentsExo PayStripe + RevenueCat
10Continuous integrationExo Verify (exo-verify)Vitest + Playwright
11ObservabilityExo Analyze (exo-analyze)PostHog + RevenueCat
12Artificial intelligenceExo Router (exo-router)Convex AI Gateway + Artificial Analysis + Arch-Router

Each platform's catalog posture (core standard, ecosystem standard, optional adapter, or retiring compatibility) and authority are shown in the panel at the top of its dimension page.

How to read a dimension page

Each page answers the same five questions:

  1. What it is. The job this dimension does for an App.
  2. Platform. The platform, its catalog posture, and which system is authoritative.
  3. Boundary and replaceability. What sits behind an Exo-owned contract, and what a swap would touch.
  4. Cost notes. Only figures recorded in the ADRs and docs. Everything else is TBD. The cost and unit economics page collects every figure in one place.
  5. Status. What is live, what is in progress, and what is only planned, with the evidence.

Rule of thumb: who runs it, who remembers it

Railway runs services; Convex holds state. If a piece of infrastructure primarily runs something, it belongs on Railway. If it primarily remembers something, it belongs in Convex. — Infrastructure split

Retiring platforms

These stay in the catalog as compatibility entries until migration completes. They are not choices for new work.

PlatformReplaced byWhy
ClerkExo Key on Convex AuthPer-MAU pricing and a second identity system beside the data (ADR 0003)
ResendBirdOne communications layer for email, SMS, and voice (roadmap)
GitHubEntireEntire is the primary forge; GitHub is a compatibility mirror
Payload + PostgreSQLConvexRemoved from the code (October 2026); the old database is kept only until its data is exported (ADR 0003)

Source: content/docs/stack/index.mdx

On this page