/ Design History ← Index
The Making Of

Relay, from the beginning.
Every version. Every era.

From GitHub markdown files and a Google Drive folder to a full agentic context platform. This is the complete design and product history — every version linked, every era annotated. The kind of record that matters when you're building something that might last.

8
Design eras
18
Months building
0→
Zero code to platform
Era 0 · Origin
Before the product
2024 — Early 2025

Relay existed before it was built. The first "version" was a GitHub repository of markdown files and a Google Drive folder of documents — briefs, decision logs, product specs, and context scattered across the exact tools the product would eventually solve.

The problem was lived before it was named. AI sessions were starting blank. Context was lost every time a session ended, a contractor finished, or a document moved. The only way to carry anything forward was copy-paste. Relay was the answer to a question being asked daily.

GitHub Markdown Google Drive Google Docs Zero code
“The earliest Relay was a README and a folder of docs. We were solving our own problem before we knew we were building a product. The irony wrote itself."
Screenshots to be added. Early GitHub READMEs, Google Docs briefs, and pre-product context documents — the raw material that became Relay.
No live prototype · pre-product era · 2024 Archive pending →
Era 4 · Launch Ready
Canonical Marketing Site
Apr 2026

Patent-reviewed. Full Loop program. Primer-aligned design tokens. Cloudflare Turnstile, consent-gated analytics, OTP email verification, access code flow, and a complete dark/light/auto theme system. The version that shipped on lawyer sign-off.

Every word reviewed. Every claim considered. The product is fully real here — real pricing, real architecture, real auth. The site and the product finally match each other.

Canonical marketing Primer tokens Turnstile OTP verify Dark / Light / Auto Patent-reviewed Dub Analytics
The shift from developer tool to platform. First version to show real pricing tiers and a commercial proposition with legal backing. The product earned this version.
concepts/current · canonical · Apr 2026 Open Current →
Era 5 · Concept
Warm Direction — V5
May 2026

A new door into the same product. The current site speaks fluently to developers — terminals, monospace, architecture diagrams. V5 speaks to anyone who loves using AI, regardless of technical background. Serif headlines. Warm off-white base. Human handoff metaphors instead of agent windows.

Guiding principle: the simplicity of a paperclip. Clean lines. Immediately understood. No instructions required. Beautiful in its clarity. The product doesn't change — the door does.

Cormorant serif Warm off-white Light-first Human metaphors No terminals In concept
First version designed for users who love AI but don't think of themselves as technical. The product has earned this audience. Time to meet them properly.
Prototype concept. Reviewed May 2026 — a parallel warm door, held while the neutral-first system lands. Lives at /marketing/web/v5/ in the index.
marketing/web/v5 · concept stage · May 2026 Open concept →
Era 6 · Canonical System · Superseded by v3.6
v3.5 — Neutral-First
Jul 2026 →

The interface works in black & white first — neutral surfaces carry the structure, brand type joins, then teal arrives as touch points. The v3.4 teal-tinted light surfaces (#f5faf9 / #edf7f5) and teal-grey text were retired. Teal is a layer, not a foundation: icons, focus rings, the mark, buttons, Codes — and #00D9C8 reserved for motion only.

The accent-fill shipped at #0d9488, ratified under 7HZQAX alongside the interface direction. RCTX-240 was the follow-up against that pairing — white on #0d9488 is 3.74:1 and fails AA at button sizes — and it closed on 2026-08-12: the fill moved to #0f766e at 5.47:1 (AA). #0d9488 stays as --rly-accent-ui for non-text only (icons, rings, the mark), where 3.5:1 clears the 3:1 floor. relay-tokens-v35.css became the single source of truth across app, console, marketing, email, and errors. Syne retired — Outfit carries the wordmark and UI, Cormorant Garamond the editorial display, JetBrains Mono the Codes.

Since ratification the era has grown a written half — six composition guides carrying law v1, closing with voice in August — and a portable one: the asset pack, the mark in three inks with a full transparent-PNG matrix. It also raised the material question that ended it. The ink flip asked whether light mode could keep the bright teal and move the ink instead of darkening the fill — and underneath it sat a flatter finding: every light-mode semantic colour lands within half a point of every other, so none of them ranks. Both went into v3.6, where one was answered and one still stands.

Neutral-first #0f766e fill · RCTX-240 #0d9488 · accent-ui, non-text relay-tokens-v35.css Outfit Cormorant Garamond JetBrains Mono Syne retired AA-verified Composition law · v1 Asset pack v3.5.2 Ink flip · raised here
Black & white first, brand as a layer. The design system stopped tinting the room teal and let neutral structure do the work — one system across every surface.
Milestones · v3.5 neutral-first
Material & law · Aug 2026
Law v1 Composition law — six guides The patterns get written down: interface principles, list surfaces, mobile composition, harness surface and states & language (law v1, Aug 3), closing with voice (Aug 17) — the layer between which words and the words inside one UI state. Authorship was never the problem; adoption is, which is what v4.0 is about. Aug 2026 Open → Pack v3.5.2 The identity became portable The mark now ships in all three inks — spec teal, one-ink black #111111, white knockout — with a transparent-PNG matrix covering marks 128–1024, four lockup treatments, avatar, app icon, OG and favicons. 33 files, one command, real Outfit shaping. The cheat sheet puts the whole identity on one screen. A pack version, not a system version — v3.5 is still the design system. Aug 2026 Open → The question The ink flip — the bright teal Two bright teal buttons shipped; one was broken and one was correct, and the difference was the ink. #0d9488 under white is 3.74:1 and fails — under the dark-mode ink #0d1514 it is 4.94:1 and passes, and the ink flip was argued from a consent banner said to be shipping #0d9488 + #001311 (5.09:1) in light mode — a precedent that turned out not to exist (corrected 2026-08-26; the only shipping use of that ink is on #2dd4bf, in a dark bar). Underneath: every light-mode semantic colour lands within half a point of the others, so light mode has no hierarchy. Three questions raised — answered in v3.6, and not the way the numbers predicted. Aug 2026 Open → Naming v0.18 The rubric replaced; the fence at 41 “It’s not a handoff. It’s a session that you carry forward with Relay.” The frame moved and the rubric with it; the endorsement structure freed the product name from carrying the category; criterion 9 — does the name describe the work, or the relief? — closed Ponder. The commonplace-book vein opened. 41 names fenced across 13 fields. Aug 2026 Open → Organizing layer Files gains the pack-shelf layer The layer could browse a shelf but never provision one, so the claim it exists to make had no surface: adding an object to a provisioned shelf must not disclose it. Audience rows are grants; disclosure is a separate per-object act (Rule 0) that a shelf rule never performs — matches render to the curator as matched, undisclosed and reach nobody. New external-viewer floor; open spec calls drawn as open. Aug 2026 Open → Way in Org onboarding — the creation moment Required on every plan, drawn on both planes, with the account lens. The heaviest finding in the estate is that the way in is heavier than the product — every onboarding so far has needed a human on a call. This is the first surface drawn straight at it. Aug 2026 Open → Marketing Stealth v2 — Sharpened is the direction Three successors built and chosen between, live, rather than argued in the abstract. Sharpened is the ground — neutral, at Carried’s density, with a register page that matches it and keeps the production form contract exactly. Bold drops from candidate to alternate, kept intact as the cinematic reach-for; Signal stays the motion alternate. The copy default is variant B — “You are the router. You shouldn’t have to be.” — with the switcher left on the page while the final wording is open. Aug 2026 Open →
relay-tokens-v35.css · canonical system · Jul 2026 Open direction →
Era 7 · Proposal · Not ratified
v4.0 — The Coherence Release
Aug 2026 · proposed

The first version in this line that changes no material at all. v3.5 stays canon for every colour, family and radius; 4.0 versions the layer above — composition. The diagnosis behind it is that the same object wears different chrome, vocabulary and grammar depending on which surface you meet it on, and that incoherence, not depth, is what reads as overwhelming.

Five pillars: say the layer model out loud (hats are walls, lenses are windows) · one shell, one list, one card everywhere · make the way in as light as the product · depth behind a bounded door · two bodies, one user — the person on a phone and the agent in a harness.

The proposal has grown since it was drawn. It opened in August as a paired app + console concept; it is now three surfaces and a prototype you can drive — app, console and the native app — all dressed by one shared stylesheet, v40.css, which is the claim rather than a build convenience. Two things it left open have since closed. RCTX-240 was ratified, so the concepts no longer assume a pending decision: every value on every page resolves from /brand/relay-tokens-v35.css with no local override, which is what makes “changes no material” checkable rather than stated. And the console’s own comparison row — tables become cards at phone width — is now kept by the console’s own table, measured to zero overflow at 390px in both themes.

The material moved underneath it, and the claim survives. v3.6 shipped on 26 August — a new token source and one colour. The concepts still import /brand/relay-tokens-v35.css, so nothing on these pages changed; more to the point, 3.6 and 4.0 are on different axes. v3.6 moved material and took the minor digit; 4.0 moves none and takes the major one. A material release does not advance, delay, or partly ratify a composition one.

Composition only v3.5 material unchanged Three surfaces, one stylesheet v40.css Rail 24 → 6 Hats & lenses 390px-first RCTX-240 settled Not ratified
Version the experience, keep the material. If a 4.0 screen needs a new token, the composition is wrong.
Concepts · v4.0 proposal
Concept App — six places, one grammar Live v3.5 ↔ v4.0 switch over the same data: the shipped chrome stack against one control row and an honest count. Rail 24 → 6 with a stated destination for every removed item. Toggle to 390px to see the composition that produced “I don’t even know where to begin.” Aug 2026 Open → Concept Console — the same shell Dressed by the app concept’s own stylesheet: an operator learns one rail and one list and has learned both surfaces. Shared table across all twenty screens, preview-as-role named as a lens that never grants, blast-radius confirm as console grammar — and, since 08-17, dense tables folding into cards at ≤720px, the rule written twice because narrowness has two sources here. Aug 2026 Open → Concept Mobile — the third density The same stylesheet a third time, and here it carries the most weight: the native app as built is not a density of anything, it is a separate design system. Six jobs, and a live reachability counter over the fifteen destinations the mobile PRD scopes — the shipped five-tab bar reaches eight and strands seven with no route at all; the drawer reaches every one. Aug 2026 Open → Drivable Mobile — the shell you can drive The same shell with the argument removed and the screens left in. All fifteen destinations route; approvals resolve with undo and the tallies re-derive; the hat switcher seals with the nav order held constant. Both product verbs run end to end — relay a Code in (preview, then the seal spends) and hand off (the Code is minted at that moment, never before). Error states behind a toggle. Fixture data; nothing talks to the platform. Aug 2026 Drive it → Diagnosis 25 doors, three jobs The pillar-2 case, counted rather than asserted, against relay-app on 08-26: 33 routes, 25 rail destinations, 31 page panels, 73 modules, 30,633 lines. The count is the symptom — the navigation is organised by projection instead of by job, and it does not agree with itself about what the product’s own object is called: the rail says Transfers, the page it opens says 120 relays. It also finds the lever already built and barely pulled — streamlined gates only 9 of 33 screens. Aug 2026 Open → Reading The scope, mirrored read-only Relay Mobile v3 mirrored read-only next to the concepts, because the board sits behind Access and a designer should not need board credentials to read the scope. The source of record stays in relay-board; this is a projection of it, alongside the mobile v4.0 creative brief. Aug 2026 Open →
Proposed, and it names its gate. Nothing here is built product — these are concepts and one prototype on fixture data. v4.0 becomes canon when the Wave 0 ratifications land against relay-board/docs/product/experience-4-0.md; until then write v4.0 (proposed), never bare v4.0. Two live questions sit under it: the ink flip — a material decision, and so not 4.0’s to make — and v3.5.1 motion, still unratified. The version line is owned by VERSIONING.md; this page is its exhibit.
concepts/v40 · three surfaces + prototype · one stylesheet · proposed Open proposal →
Era 8 · Canonical System · Current
v3.6 — One Token Source
Aug 2026 →

The direction inverts. Until now relay-design-tokens.json was generated from a hand-edited stylesheet. Now the JSON is the file a human edits and everything else is emitted from it — six adapters, because a shared stylesheet cannot reach every surface: email clients and React Native have no CSS custom properties at all, so they need literal values written for them. What it replaced: 12 independent token files across 6 repos, one lone sync script, 379 files carrying a hardcoded teal, and three MkDocs sites each restating the whole palette by hand.

The inversion is proven lossless — all 50 colour tokens round-trip with exactly the intended deltas and nothing else, and the relay-app adapter is separately proven a drop-in: it preserves the seven app-only tokens and the values where app and estate legitimately differ, now declared in the generator rather than discovered later. Drift became checkable the same day — scripts/check_tokens.py joins the checker set on the vocabulary checker's baseline pattern, so only increases fail and the 169 concept prototypes carrying historical values are recorded rather than repainted.

One colour actually moved. --indigo went #6366f1 → #585fee — it was missing AA by 0.03 (4.467:1) while carrying 11–13px text, and the retired value was simultaneously live in relay-app and all three MkDocs themes. The other intended delta, the ink flip, was built and then rejected — the story below.

One token source Six generated adapters 50 tokens round-trip #585fee indigo · AA Ink flip rejected v3.5 fill pairing kept check_tokens.py 379 files, hardcoded teal
It measured fine and it had precedent. Rendered across the real screens it read wrong — and that is a judgement a ratio cannot make, which is the entire reason it was drawn before it was adopted.
The ink flip · built, looked at, reverted
The rejection is kept in the generator, not just in prose. The full record lives in scripts/build_tokens.py → V36_DELTAS, deliberately placed where the next person to compute contrast ratios will meet it — so the flip is not re-proposed from the numbers alone. Still open from that page: its third question, the light-mode semantic ramp. Every semantic colour lands between 4.83:1 and 5.47:1 on white, so nothing ranks, where dark runs 7.03–11.64 with real separation. --indigo was fixed; the ramp was not.
relay-design-tokens.json · one source, six adapters · Aug 2026 Open brand →
The public surface

The web, release by release

The eras above are the design system. This is what actually reached a URL, and which era it was running when it did. The two move at different speeds: a system version can be canon for weeks before any public page adopts it, and the apex has run a page older than the system since April. Projection, not source — the rows are drawn from marketing/CHANGELOG.md, MANIFEST.md and the deploy workflows. Change a release there first, then here.

Shipped
Apr 2026
relayctx.comCanonical marketing site. Patent-reviewed, full Loop program, Turnstile, OTP verification, consent-gated analytics, complete dark/light/auto. The version that shipped on lawyer sign-off. Era 4.
Superseded
Jul 2026
relayctx.com“Coming soon.” The stealth card that replaced it, saying nothing on purpose while the provisional stayed unfiled. Archived the day the stealth update shipped. Its token file predated RCTX-240, so its primary button failed AA for the whole of its run — which is what the stealth update fixes. Era 6.
Archived
19 Jul 2026
relay-creativeArea restructure. Site material nests under marketing/web/; the v1–v5, v3.4 and v3.5 generations become the record rather than the working set.
Structural
1 Jul 2026
backend/api/waitlist removed. Forces the single-door register: the soft “just get updates” path stops being an option, which later settles a copy question without anyone arguing it.
Constraint
10 Aug 2026
stealth registerInvite-code presentation synced to production, and the Code contract corrected to 2–32 characters — the old {4,10} pattern had been rejecting every real minted code.
Live
25 Aug 2026
creativeInterim stealth v2. Three concepts — Carried, Sharpened, Signal — then Sharpened chosen and the landing plus register promoted to canon. Era 6.
Live on creative
26 Aug 2026
creativeThe copy settles. Headline pair swaps between landing and register, the sub becomes “Sessions evolve. Workflows scale. Governance built-in.”, the footer strips to the imprint, and the register reorders so the form clears the fold on phones. Two custody lines were written and rejected on the way. Era 8.
Live on creative
26 Aug 2026
creativev3.6 sweep. 91 pages plus the Pages middleware repointed to the generated token set. Only visible change anywhere is indigo picking up contrast. Era 8.
Live on creative
Queued — built, not merged
27 Aug 2026
relayctx.comThe stealth update. The settled landing and register ported to web/relayctx/, plus the apex token file brought to the generated v3.6 set — which is what fixes the AA failure the “Coming soon.” row carries. Content-only, no new files, deploy list untouched, and the apex token file comes to the generated v3.6 set in the same change. Era 8.
Live
next
relay-creativeHub index-meta regeneration. The generated freshness regions fell behind disk, and it is the only step failing “Content checks” on main.
Blocks CI
Planned — gated
—
relayctx.comThe full marketing site. IA of record: Home · Product · Platform · Use cases · Pricing · Security · The Loop · Register · Login. Two candidates are built and live on creative (v35-neutral, v35-bold); the direction pick is the gate. Un-stealthing is additive, not a redesign — the interim page is a collapsed Home + Register of that same IA, on the same tokens and the same register flow.
Gated
—
infrastructureA staging target for the apex. There is none. deploy-staging.yml carries the console and the API service and contains zero references to web/relayctx/; relay-creative is Pages with main = production. Three routes: add the apex to the staging scp list, use a Pages preview branch as the review surface, or stand up the relay-web repo that REFERENCE.repo-strategy.md has proposed and never built.
Needs a call
—
design systemv4.0 — The Coherence Release. Moves no material; versions composition only. Would ship on v3.6 tokens rather than instead of them. Era 7, proposed.
Proposed