Skip to content

How Martori runs

Four layers, cleanly partitioned.

The page at the edge. The companion in its own function. The model a request away.

A constellation of light nodes suspended in a dark industrial atelier

The atelier · generated still

Atmosphere for the stack story. Not a product screenshot.

The stack

One request, four jobs, no overlap

Each layer owns one responsibility and hands off cleanly to the next.

Netlify

Edge + hosting

Serves the TanStack Start render straight from the edge, so the page arrives with no cold start to wait on.

Tap or hover a node to trace its role

01

Netlify

Edge + hosting

Every route renders through TanStack Start and ships from Netlify's global edge, git-connected from commit to atomic deploy.

Global edge networkGit-connected deploysAtomic, reversible shipsTLS by default
02

TanStack Start

React 19 + TypeScript

React 19 and the TanStack Router render each page, typed end to end in strict TypeScript and styled with Tailwind CSS 4.

React 19TanStack Router v1TypeScript (strict)Tailwind CSS 4
03

Netlify Functions

Serverless compute

Lark, the studio's on-page companion, runs through a Netlify Function so the model key and its instructions never reach the browser.

Serverless functionsRate limitedServer-side onlyNo client-side keys
04

Netlify AI Gateway

The model layer

The gateway routes every conversation to Anthropic's Claude, injecting credentials so no key is ever written into the code.

Netlify AI GatewayClaude SonnetClaude OpusManaged credentials

How we build

From commit to live, one clean pipeline

Nothing is uploaded by hand. Every change is built, previewed, and shipped through the same automated, Git-backed path, the way resilient modern software is meant to ship.

Commitgit pushBuildvite + ciPreviewdeploy previewShipatomic deployLiveglobal edge

Server-rendered

01

TanStack Start · Netlify

Meta tags, structured data, and page content are already correct when the browser paints the first frame, no client-side flash to wait out.

Typed end to end

02

TypeScript strict · typed routes

TypeScript in strict mode and a typed router catch broken links and mismatched data before a change ever reaches production.

Git-backed and secure

03

private · protected · audited

Every change moves through a private GitHub repository: protected branches, atomic deploys, and a signed, auditable history of every change.

Continuous delivery

04

preview · atomic · reversible

Each merge triggers an automated build and its own preview URL, then ships as an atomic deploy that can be rolled back to any prior version in seconds.

Request flow

Follow a single tap through the stack

01 Netlify serves the page

A TanStack Start render streams from the nearest edge node. Navigation feels instant because there is no server to wait on.

Why it is built this way

Fast by default

The page renders at the edge and the model is a single gateway hop away. Nothing here waits on a monolith.

Sovereign by design

No model key ever reaches the browser. The Netlify AI Gateway holds the credentials, so what talks to the model stays server-side, always.

Unshakeable

Each layer can fail, scale, or change on its own. No single point holds the whole studio hostage.