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.
| # | Dimension | Exo platform | Infrastructure |
|---|---|---|---|
| 01 | Control plane | Exo | Hermes (agents) + FluidVoice (voice input, built in) |
| 02 | Development framework | Exo | Next.js + TypeScript + React (proposed) |
| 03 | Source control | Exo | Entire |
| 04 | App state & storage | Exo | Convex + Convex Storage |
| 05 | Identity | Exo Key | Convex Auth |
| 06 | Design system | Exo Design | shadcn/ui + Structured Liquidity + Construct (pages) |
| 07 | Deploy | Exo Deploy (exo-deploy) | Railway (web) + Expo (mobile) |
| 08 | Communications & support | Exo Broadcast | Bird + Twenty (CRM) |
| 09 | Payments | Exo Pay | Stripe + RevenueCat |
| 10 | Continuous integration | Exo Verify (exo-verify) | Vitest + Playwright |
| 11 | Observability | Exo Analyze (exo-analyze) | PostHog + RevenueCat |
| 12 | Artificial intelligence | Exo 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:
- What it is. The job this dimension does for an App.
- Platform. The platform, its catalog posture, and which system is authoritative.
- Boundary and replaceability. What sits behind an Exo-owned contract, and what a swap would touch.
- 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.
- 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.
| Platform | Replaced by | Why |
|---|---|---|
| Clerk | Exo Key on Convex Auth | Per-MAU pricing and a second identity system beside the data (ADR 0003) |
| Resend | Bird | One communications layer for email, SMS, and voice (roadmap) |
| GitHub | Entire | Entire is the primary forge; GitHub is a compatibility mirror |
| Payload + PostgreSQL | Convex | Removed from the code (October 2026); the old database is kept only until its data is exported (ADR 0003) |
Source: content/docs/stack/index.mdx