One live stack for everything you build.

Based is the end-to-end platform for complete digital products built in TypeScript. Your apps, back office, data pipelines, API, MCP run on one live engine built for hyperscale.

One stack takes the friction out of getting things done. People and AI agents edit, test and verify the whole product, and keep iterating at day-one speed long after launch.

Coming soon.Built by the team behind Once.

Vision
01

The stack

A real platform is a site, multiple apps, an API, MCP, custom agents, a CMS, users, files, search and live analytics. Today that's a dozen services glued together. With Based it's one TypeScript codebase, one schema and one deploy.

02

The workplace

AI agents are on the team now. Based gives people and agents one place to shape and ship the whole product, on the same live data.

Built for agents

One stack is what makes agents actually work.

On a typical stack an agent works blind across a dozen services. On Based it can change anything and prove it works.

  1. 01

    Edit

    One TypeScript codebase, stored in the database.

  2. 02

    Run

    A real environment for every change.

  3. 03

    Test

    The whole product, browser included.

  4. 04

    Verify

    Live data, logs and analytics.

  5. 05

    Repeat

    Real-time updates, including database migrations.

Why AI needs this

AI needs this more than people.

An agent is only as good as its context and only as safe as its limits.

Custom agents · first-class

The context layer for your agents.

Defined, tested and deployed with your product. Shape each agent's context in one query: traverse, filter, full-text and vector search, and aggregate, in microseconds. No retrieval pipeline, no separate vector store.

Live context

The real state, always

Data, code, logs and analytics as they are right now, in one typed system.

MCP built in

Every environment speaks MCP

Connect Claude or any MCP client to the data, logs and analytics.

Hyperscale

Machine-scale traffic

Agents make far more calls than people. Based doesn't flinch.

Live analytics

Knows what to build next

See how the product is really used, then build what's next.

Code in the database

The live project, never a copy

The Based coding agent works on code in the database, not a file system.

Live collab · Coming

Same environment, branch and code

People and agents in one live session.

Platform

Everything a digital platform needs, built in.

01

Apps, sites & API

React apps, server-rendered sites and a typed API.

02

Back office

CMS and admin tools on the same live data.

03

Live data & migrations

A real-time subscription engine. Schema changes in one step, live.

04

Users & security

Auth, roles, secrets and a gate on every call.

05

Search in every language

Full-text search across all your languages, typo-tolerant and ranked, plus vector search. No search service.

06

Functions & files

TypeScript functions, uploads, media and streams.

07

Analytics & observability

Live analytics and logs next to your data. No warehouse.

08

Build, test, deploy

One CLI, built-in tests and browser, an environment per PR.

09

Agents

Custom agents, the Based coding agent and MCP everywhere.

What disappears

Less stack. Less friction. Better products.

A vendor for every layer and glue in between means friction at every step, and it compounds with every layer you add. Based removes it, so your time goes into the product, not the plumbing.

Data
SQL & ORMRedis cacheElasticsearchAlgoliaVector DBWarehouse & ETL
Real-time & events
KafkaQueuesCDC pipelineWebsocket servicePub/sub
Backend
API serverAuth serviceFile storageServerless functionsHeadless CMS
Build & ship
Bundler configHostingTerraformDocker & K8sPreview envsSecrets managerTest rig
Deployment

Every pull request is a live platform.

  1. 01

    Open a PR

    No tickets, no ops queue.

  2. 02

    Its own environment

    Its own machines, databases and seed data.

  3. 03

    Tested for real

    Tests and browser run against it.

  4. 04

    A preview link

    Posted on the PR for the team.

  5. 05

    Gone on merge

    Cleaned up automatically.

Security

Security built in, not bolted on.

Everything runs in one engine, so there are fewer places to attack and every request goes through the same checks.

01

A gate on every call

Every request is checked against your access rules before any of your code runs. Built-in rate limits stop abuse.

02

Everything has an identity

Every user, service, environment and agent has its own identity, and has to prove it before it can do anything.

03

Isolated by default

Each environment has its own data, secrets and access, so a preview or test can't touch your live product.

04

Your machines, your data

Run it on our cloud, your cloud, on-prem or fully air-gapped. Your data stays where you decide.

Hyperscale

Built for hyperscale.

Built from the ground up in Zig and C: our own database, storage, query engine and network stack. Engineered for the biggest live moments on the internet, and the machine-scale traffic AI brings.

1.2–4×

Faster than ClickHouse on filters.

Filters*
25–40×

Ahead of in-memory PostgreSQL on the same filter set.

vs Postgres*
~70M/s

Live writes a second on one machine. 6× ClickHouse, 120× Postgres.

Writes**
<5%

Of one CPU core for 1M live updates a second. Scales out to millions of users.

Network
2.9µs

Server cost per request, with nothing to invalidate.

Requests & live cache
Live

Every query is a subscription. Most databases only answer when asked.

Subscription engine
Battle-tested

Based powers the voting for the Eurovision Song Contest, the largest audience participation event in the world.

All benchmarks run on an M2 MacBook Pro. * 1M rows, identical data and match counts. ** Competitors measured at best case: Postgres UNLOGGED with fsync off, ClickHouse single-stream bulk ingest.

Code

Plain TypeScript. Live by default.

A schema, a query and a write. That's a live app.

// schema/player.ts
export const player = { name: 'string', score: 'uint32' }

// functions/leaderboard.ts
export const leaderboard: BasedQueryFunction = ({ based }) =>
  based.db.query('player').sort('score', 'desc').range(0, 10)

// functions/addPlayer.ts
export const addPlayer: BasedFunction<Player<'create'>> = ({ based, payload }) =>
  based.db.create('player', payload)

// apps/web/Leaderboard.tsx
export const Leaderboard = () => {
  const { data } = useQuery('leaderboard')
  const client = useClient()
  return (
    <>
      <ol>{data?.map((p) => <li key={p.id}>{p.name} · {p.score}</li>)}</ol>
      <button onClick={() => client.call('addPlayer', { name: 'Shadow', score: 25 })}>
        Join
      </button>
    </>
  )
}
// click Join and every open leaderboard updates, instantly
More examples
Roadmap

Engine and platform now. Workplace next.

01 — EngineNow

The fastest live core

Our own database, storage and network stack, built from the ground up in Zig and C.

02 — PlatformNow

The stack

Apps, back office, API, MCP, auth, analytics and deploys. Cloud or self-hosted.

03 — WorkplaceNext

Where products get made

Live collab sessions and first-class custom agents, building products together.