How the platform fits together

Platform Architecture

How the applications, shared services, CI/CD, and AI model routing fit together

These aren't four independent applications. They share a common engineering platform for AI, security, deployment and operations - and this map answers one question: how does it all fit together?

Applications - Tourney, Runway and GetSeen (plus this portfolio site) are the products. Platform - everything else on the map is what they run on: the five-gate CI/CD pipeline across the top, Control Tower as the one mandatory checkpoint every deploy and promotion passes through (and the AIOps loop that investigates a failed one), the shared modules beneath the applications (login security, AI tool loop, AI worker boundary, grounded AI answers), and the three AI backends chosen per workload on cost, performance and data sovereignty.

Click any box for the mechanism behind it — including the three numbered circles, which are the audit checks.

DB CI/CD — AUTOMATIC THROUGH SIT, ONE HUMAN STEP BEFORE PROD environment step DEV (local) Commit 4 shared via fomx-ci + local test 5 gates SIT (auto) Human OK Prod (AWS) AUDIT TRAIL 1 2 append-only · run history · CONTROL_TOWER_LOG.jsonl read back as 5 audit reports history · live state · drift failures · by approver deploys start / stop · local only · from Control Tower deploy SIT · promote prod — Control Tower, all three apps + portfolio Tourney bracket scorer · prod ESPN → evals MCP ⇄ DuckDB warehouse Runway retirement sim · in POC MCP ⇄ evals GetSeen job search · prod on hold /compare job boards → tracker · findings Portfolio static site · prod 3 Control Tower deployment gatekeeper start/stop · deploy · audit reports approver = Windows user, on every record AI Worker Boundary Spark Worker Kit queue · poll-based AI Answers (RAG) RAG Pipeline chunk / embed / cite Login Security Auth Kit hashing + session tokens AI Tool Loop agentkit Tourney, GetSeen Shared Model Access model_kit · planned spec 2026-09-18 Backups nightly · restore-tested planned · spec 2026-09-29 status read by Control Tower workers: Ollama + claude -p clients Runway's providers Tourney, GetSeen: anthropic SDK, direct · markers = who Model routing chosen per app in config · Tourney, GetSeen: anthropic SDK · Runway: AI Answers (RAG) providers · workers: AI Worker Boundary · no shared seam yet T R G FOMX.ai Spark (DGX) open weight · Ollama · $0 · Tailscale T R G Runway's default Claude API frontier · metered per token T R G Runway: opt-in only (PROVIDER=claude) Claude CLI claude -p · flat cost on the subscription G GetSeen worker · Control Tower commit drafts
Solid lines are automatic and live. The dashed line is the one manual step (promote). The dotted boundary is local start/stop only. The accent-colored rail is the audit trail; ③ on Runway is a fourth kind of check — the app reruns its own math. Click anything for detail.

Nothing selected yet — click a box or a numbered circle above.

Line meaning

Automatic — deploys, imports, live calls
Manual — a person clicks (promote)
Local control — start/stop, never a gate
Would fit — same primitives, not migrated
Audit trail — append-only records along the flow

Auditing, at three altitudes

Pipeline — GitHub's own run history, per commit
Deploy — Control Tower's append-only promotion log
Domain — Runway reruns the sim and compares

Backend markers

T Tourney   R Runway   G GetSeen   R opt-in