Nine claims, and the command that proves each one. Tap a chip to see the method.
Checks run 2026-08-24. No download, user, revenue, or rating figure appears anywhere on this site — none of it is independently verifiable, so none of it is claimed.
01Live on the App Store · v1.0 · released 2026-07-22
Esque Agent
Plan a project on your phone; it drives the coding agent on your own laptop.
Esque Agent turns an iPhone into the planning surface for a terminal coding agent. You describe a project, a planner writes the next instruction, and it POSTs over a QR-paired tunnel to esque-bridge — an open-source Node CLI that runs the work through your existing Claude Code, Codex, or Aider subscription. Replies, live previews, token spend, and typecheck results come back to the phone.
React Native
Expo SDK 56
Reanimated
Skia + SkSL
Node CLI
Express
Postgres
Esque Agent · the green-proof gate
Habit tracker with streaks
Finished
Step 5/5Polish & shipAnimations, error handling, and a release build.
You
Start "Polish & ship"
Prompt sent to your agent
Work on "Polish & ship". Animations, error handling, and a release build. Report back when complete or blocked.
Claude Code
✓ Polished: entrance animations, haptics, empty/error states, and a universal error boundary. Ran the test suite — all green. The build is release-ready.
Verifiably done · double-checked
typecheckpassingtestspassing
≈ $0.040
runVerify() rannpm run typecheck --silentCI=1 npm test
VERIFY_SIGNALS (objective — the bridge actually ran these): typecheck=passing; tests=passing→judge: done
Esque Agent’s proof receipt, rebuilt in HTML from the app’s own components — not a screenshot. The judge cannot return done until runVerify() reports typecheck and tests passing, so only the last of the five steps can earn a green receipt: on step 3 the typecheck comes back red, on step 4 the tests do, and both return continue instead. Walk the run with the buttons, or the ←→ keys.
01
Green Proof: build signals gate the verdict
Before a completion judge is asked anything, the bridge runs the project’s own checks in the workdir — npm run typecheck, then CI=1 npm test — and returns {ran, passed, tail}. A failing line forces continue. If the judge still says done, an independent adversarial reviewer runs with its own schema and never sees the judge’s answer. The judge’s prompt is ordered head-first because the backend clamps content at 24,000 characters: putting the verify signals last meant the one thing the judge must see was the first thing deleted.
02
A lane pool with sticky failover
A lane is one credential context with its own CLI config dir; the bridge records only the path, never a credential. Sessions pin stickily because a cold lane re-pays the entire cached-prefix cost. Failure classification is anchored deliberately — an earlier version matched a bare 401 and the word authentication, which fired on ordinary agent output like the stack frame session.ts:401:12 and retired a perfectly healthy subscription.
03
SHA-256, vendored by hand, to survive a sleeping laptop
Quick-tunnel URLs rotate every time the laptop sleeps, so the phone’s stored URL dies; the pairing secret does not. The bridge heartbeats its live URL keyed by sha256(secret), the backend persists only the hash, and the phone recomputes the key to re-resolve. React Native has no crypto, and adding expo-crypto meant re-linking pods in a prebuilt iOS project — so FIPS 180-4 SHA-256 is a zero-dependency pure-JS file, verified byte-for-byte against Node.
Pair once by QR. The bridge runs the agent on your own machine, against your own subscription.
lines of application code across 142 files
31,378
npm releases of esque-bridge, latest 0.7.0
25
lines in the bridge CLI — one file
2,663
additional lines of Remotion render pipeline
11,987
expo-haptics call sites across 26 files
77
blueprints, pinned against the live npm registry
14
02Live on the App Store · v2.4 · first released 2026-04-24
MockMe
A live AI interviewer that hears your answer and presses on the weak part.
MockMe runs a spoken mock interview over a WebSocket state machine rather than a question queue, so the interviewer can follow up, escalate pressure, and wrap on a time budget — then returns a scored report with filler-word, pacing, and body-language analysis. It ships as a native iOS app backed by a Node service on Railway, with a self-hosted neural TTS voice.
React 18
Vite
Capacitor
Express
WebSocket
Supabase
Kokoro ONNX
MediaPipe
One exchange · the follow-up is the product
LIVE SESSION
Investment Banking Interview · Topic 1
04:12REC
AI Interviewer
Prof. Alloy
Career Strategist
Investment Banking›Bulge Bracket›Goldman Sachs
server statephase core · follow-up 1 of 2
AI
Walk me through how you would build a DCF from scratch.
You
So, um, we project unlevered free cash flows, then, uh, discount them back at WACC…
Filler words
Taking notes...
AI
Walk me through the math. Not the framework — the actual numbers.
targetsthe number they didn’t source
banking:technical-finance
listeningListening — tap mic to send
4 of 4
MockMe’s live interview surface, rebuilt in HTML from the app’s own components — not a screenshot. The question is entry tf-dcf-001 from the question bank; the follow-up is a real line from the curated banking:technical-finance pool. The interviewer is one of 8 fields × 28 firm tiers × 42 named-firm overlays. Phase and follow-up count are server state, shown here because they are the mechanism — the app itself never renders them.
01
A phase machine that grades the half everyone drops
Sessions run opening → intro → intro_followup → core → closing. The core phase tracks topics, not questions, allowing one to two follow-ups each; closing is triggered by elapsed time crossing roughly 80% of the budget, with topic limits only able to end it after 60%. The closing phase then records the questions the candidate asks back and grades those too, folding a ±10 adjustment into the final score.
02
Sentence-incremental LLM → TTS → gapless audio
An incremental splitter emits segments the moment they complete, with a deliberately tiny 8-character minimum on segment one and a clause-boundary cut at 70 characters, because first-audio latency is just the synth time of the first sentence. Each segment ships as its own ≤256KB base64 frame so the client decodes each independently and schedules them back-to-back at max(currentTime + lead, tail). Barge-in aborts through AbortController, and message-end always fires so captions complete even when audio dies.
03
Deck grading where the model never emits a number
PPTX decks are unzipped and walked as Open XML with ordering recovered from the relationships manifest; both PPTX and PDF render to per-slide PNGs via LibreOffice headless and pdftoppm inside the server’s Docker image. The model is then restricted to per-claim booleans and short quotes — coverage percentage and headline score are arithmetic over those flags. The module documents why: on hiring-type judgments every general model tested fell below the 0.80 four-fifths adverse-impact threshold while a task-specific model held 0.906.
Session state · scroll to run it
opening
intro
intro_followup
core
closing
Time budget100%
80%
Elapsed time crossed 80% — closing fires, and the questions the candidate asks back get graded too.
Walk me through a DCF
Why this firm
Accretion / dilution
The whole product on one screen — the iPad layout
lines of application code across 331 files
73,113
additional lines of Remotion render pipeline
28,052
interview questions, counted at runtime
1,196
REST endpoints across 16 route modules
75
Postgres tables
29
persona layers: fields × firm tiers × overlays
8×28×42
03Uploaded to internal TestFlight · bridge published on npm
Omnibus
Speak an idea into your phone; a local model audits it against your project’s memory.
Omnibus pairs an iPhone to a laptop with a one-time QR code, then runs a local Ollama auditor over a bounded, privacy-filtered map of your workspace plus a persistent Second Brain — a bi-temporal knowledge graph built by ambient git watchers — and returns a decision-ready brief. It is memory and review wrapped around the Codex CLI: recorded decisions and an anti-pattern registry go in before Codex edits, and Codex’s diff is audited against those same anti-patterns after.
TypeScript
Node 22
Express + ws
zod
Mastra
Ollama
React Native
Swift CoreHaptics
Pre-commit gate · omnibus-bridge hook check
HP-DRAWER — omnibus-bridge hook/tmp/gate-demo
> git commit -m 'quick fix'Pre-commit gate: 1 staged file(s) checked, 1 blocking violation(s), 0 warning(s).server.ts:2 [BLOCK] Binding a listener to all interfaces matched: server.listen(8787, "0.0.0.0"); why: Omnibus is local-first; the only public surface is the supervised tunnel, so a wildcard bind silently widens the attack surface. Wrong: // Wrong: the bridge becomes reachable from every network interface. const server = http.createServer(handler); server.listen(8787, "0.0.0.0"); Correct: // Correct: loopback only; remote access goes through the supervised tunnel. const server = http.createServer(handler); server.listen(8787, "127.0.0.1");Commit blocked: 1 anti-pattern violation in 1 staged file. Fix them (or run `omnibus-bridge hook check --fix`) and try again.> omnibus-bridge hook check --fixPre-commit gate: 1 staged file(s) checked, 0 blocking violation(s), 0 warning(s).FIXED server.ts: 1 auto-correction(s) written to the working tree. Review the change, then re-stage the file.Auto-corrected 1 file in the working tree. Review the changes, then re-stage them.Staged changes pass the anti-pattern gate (1 file, 0 advisory warnings).> git add -u && git commit -m 'loopback only'Pre-commit gate: 1 staged file(s) checked, 0 blocking violation(s), 0 warning(s).Staged changes pass the anti-pattern gate (1 file, 0 advisory warnings).
Omnibus’s pre-commit gate, rebuilt in HTML from the bridge’s own source — live text, not a screenshot. Every line is a string emitted by runPreCommitCheck and formatViolation in bridge/src/second-brain/precommit.ts, or by the hook check branch of bridge/src/cli.ts. The rule, its rationale and both code examples are the seeded “Binding a listener to all interfaces” anti-pattern in anti-patterns.ts, where patterns are data: a detector, a Wrong example, a Correct example, and the find/replace auto-fix that --fix applies. The three commands are the repo’s own capture script, docs/demo-assets/_scout/gate.tape. Git’s own commit summary is omitted rather than invent a commit hash.
01
A bi-temporal graph with order-independent merge
Every fact records both valid time and transaction time, so a superseded decision is invalidated rather than overwritten and 'what did we believe on date X' stays answerable. Node ids hash (kind, normalized name), fact ids hash (contentHash, txCreatedAt), and merges apply in a total sort on (txCreatedAt, text hash) — peer reviews and ambient events arriving in any order converge to byte-identical journal state with no coordination protocol. Compaction moves only old invalidated records to a never-loaded cold archive, so RAM stays bounded while history survives.
02
Personalized PageRank, written from scratch
Entities are extracted from the idea, seeded onto matching nodes, and PPR runs over the undirected current-facts adjacency with edge weight equal to fact confidence — damping 0.85, 60 iterations max, 1e-9 L1 tolerance. Seed mass is weighted 1/log(2+degree) so a rare specific entity steers harder than a hub; dangling mass returns to the personalization vector to conserve L1; node ids iterate sorted so results are bit-deterministic. No graph library.
03
The privacy boundary is a type, not a paragraph
One exported predicate defines which executors may ever receive locally-derived knowledge — loopback Ollama and the on-host Codex CLI, never the cloud route — and it is the only gate. The auditor’s workspace snippets, the orchestrator’s recall, and the capture path all call it, each combined with a loopback-endpoint check. The workspace scanner behind it refuses symlinks, hidden files, VCS and dependency dirs, and secret-shaped filenames — .pem, .p8, .key, api_key, .env — before anything can be read.
Omnibus system architecture, in four parts.
Phone. An iPhone takes a spoken idea. It pairs to the bridge with a one-time QR token, then holds an authenticated WebSocket to it.
Bridge. Runs on the laptop, bound to 127.0.0.1. An auditor runs first and a developer runs second, both on local Ollama.
Second Brain. The bridge recalls from and captures into a bi-temporal knowledge graph over an append-only NDJSON journal; retrieval is HippoRAG with Personalized PageRank.
Home fleet. The bridge also fans work out to worker laptops on a private LAN, over HMAC-signed calls.
Zero cloud on the reasoning path.
~22 hours
14 commits, 2026-07-20 22:47 to 2026-07-21 20:25. 29,098 lines, 199 passing tests, and a bridge published to npm.
14 commits, 2026-07-20 22:47 → 07-21 20:25
~22 hours
lines of source — 23,115 production, 5,983 test
29,098
automated tests passing, across 34 files
199
omnibus-bridge on npm, 3 versions
0.2.2
HMAC-signed private-LAN fleet endpoints
7
WebSocket client / bridge message types
9/10
04Production backend live on Railway · iOS app archived and release-gated, pre-submission
AlphaTrainer
Write an investment thesis at a real historical cutoff. Get graded on process, not luck.
AlphaTrainer reconstructs a public company’s entire information set as of a specific historical date — the last filing before it, price history, fundamentals, macro, and only news published before the cutoff — then asks you to write up to three ranked theses and grades them on catalyst identification, evidence usage, reasoning quality, and prioritization. Directional accuracy is deliberately down-weighted: a wrong call with sound reasoning still scores.
Python 3.12
FastAPI
SQLAlchemy async
Postgres 16
React 19
Capacitor
SEC EDGAR
Polygon
AlphaTrainer · the Council’s verdict
Verdict reached
A
Grade A, 8.7 / 10 composite
Clean, defensible work.
The Council’s verdict
4 specialists · weighted
score.catalyst · catalyst_identification
Three things together: naming the right expectations gap, picking a coherent direction (long / short / neutral) for that gap, and committing to a horizon over which the gap closes. A real catalyst read with the wrong direction is partial credit, not a match.
Scoring anchors
9
At least one user thesis is a match to the PRIMARY reference, and its horizon and direction are consistent with the primary’s.
5
The user catches part of the primary story — partial to primary, or a match with mismatched direction / horizon, or a match to secondary/tertiary only.
2
No match or partial anywhere. Claims are novel or contradict the reference, or direction is inverted on the only matching claim.
guardrailno user claim matched any reference thesis → capped at 4
Event-driven. He spots the trigger inside the noise.
prompts/score_catalyst_v1.txt
score.evidence · evidence_usage
Only how well the user grounded claims in source material — not whether the claims are correct. Every extracted claim arrives already labelled verified, paraphrased, fabricated or no_evidence by the grounding stage.
Scoring anchors
9
Most claims (≥70%) cite specific filing sections, news articles or macro data, and the citations are verified or paraphrased. Zero fabrications.
5
About half of claims are grounded; the rest hand-wave. Or claims cite sources but at least one is fabricated / no_evidence.
2
Few or no claims cite anything specific. Vague references to “the filing” or “the market” without pointing to passages.
guardrailat least one citation flagged as fabricated → capped at 5
Footnote-deep. She wants the cite, not the conclusion.
prompts/score_evidence_v1.txt
score.reasoning · reasoning_quality
Logical structure alone: does the evidence lead to the conclusion coherently? The rubric explicitly forbids penalising a wrong direction here — that is scored elsewhere.
Scoring anchors
9
Clear chain from evidence → intermediate inference → conclusion. Claims compound into a thesis rather than sit as disconnected observations.
5
Individual claims are reasonable but the chain is loose — the conclusion does not clearly follow, or a key inferential step is missing.
2
Claims are vague assertions, non-sequiturs or tautologies. No discernible argument structure.
guardrailall theses under 30 words → capped at 6
If the logic has a hole, he is already through it.
prompts/score_reasoning_v1.txt
score.prioritization · thesis_prioritization
Whether the theses are ranked correctly by importance, across direction and horizon. A thesis with the right insight but the wrong rank is the classic failure mode; splitting one good idea across multiple ranks is the lazy one.
Scoring anchors
9
The user’s PRIMARY thesis is a match (or close partial) to the PRIMARY reference, with consistent direction. Lower ranks pick up secondary references.
5
The user caught the primary insight but ranked it second or third — right idea, wrong priority.
2
The primary is novel or contradicts while a lower-ranked thesis matches the primary reference — inverted priorities. Or all theses repeat one idea.
guardrailonly primary thesis submitted; no priority signal → capped at 7
Sizes positions. She cares which thesis you led with.
prompts/score_prioritization_v1.txt
Catalyst Hunter — Prof. Henrik Bauer. catalyst_identification, weight 30%, scored 9.2 of 10.
AlphaTrainer’s Council verdict, rebuilt in HTML from the app’s own components — not a screenshot. Each specialist is a separate prompt stage, sampled N=3 in parallel and reduced with statistics.median_low, then clamped by a deterministic guardrail. The composite is the weighted reduction of those four independent results — not one model call returning four numbers.
01
A six-stage grader with self-consistency sampling
Grading is not one prompt. Claims are extracted per thesis in parallel, aligned against ranked reference theses, grounded against filing text, then each of four dimensions is scored N times independently and reduced with statistics.median_low for a deterministic tie-break — so the median sample’s own justification is what gets surfaced, and the score and the explanation always agree. Grounding is cheap-first: substring, then difflib.SequenceMatcher; at or above 0.85 is verified at zero token cost, below 0.15 is fabricated, and only the ambiguous middle band pays for an LLM fact-check.
02
Deterministic guardrails clamp the model’s own scores
Post-LLM rules encode facts the grader has no authority to override: any citation flagged fabricated caps evidence usage at 5 out of 10, all theses under 30 words caps reasoning at 6, zero alignment matches caps catalyst identification at 4. Each cap is returned as a human-readable applied-caps string rather than silently swallowed.
03
An anti-recognition universe, enforced at import
The scenario pool is 90 hand-picked sub-mega-caps — AGCO, HWKN, RYAM, ATKR — chosen because low retail recognition forces genuine primary-source analysis. A 66-name excluded-household-names set and an assert_universe_clean() call that runs on module import make it structurally impossible to ship an AAPL scenario by accident.
Evidence usage · one dimension of four
5.0/ 10
cap 5.0
proposed 8.7
applied_caps fabricated citation → evidence usage capped at 5
Scenarios at real historical cutoffs — every stage of the pipeline takes the cutoff date as an argument
live API operations across 22 paths
26
lines of Python across 75 files
9,559
curated tickers, assert-checked at import
90
Postgres tables, 8 Alembic migrations
18
versioned LLM prompt templates on disk
10
scenario IDs assembled in pipeline run logs
206
05TestFlight lane completed 2026-07-06 · signed App Store IPA on disk
Epitome
A journal that maps your notes in 300-D and shows you where you contradict yourself.
Epitome splits each journal entry into atomic claims, embeds them with Apple’s on-device NLEmbedding, projects them onto a fixed 300-dimensional unit hypersphere, and lays them out as a force-directed constellation you navigate by pinch-zooming between three altitudes. A psychology engine then reads the geometry — low-similarity pairs that share vocabulary become dissonance, isolated notes become shadow material, and waypoints between distant thoughts become syntheses you implied but never stated.
Swift 6
SwiftUI
Accelerate / vDSP
Metal
SpriteKit
CoreHaptics
StoreKit 2
260 points · k-nearest 6 · cosine threshold 0.45 · Barnes–Hut θ 0.85 — the shipped parameters, in 48 dimensions instead of 300, drawn in 3.
Epitome embeds on a fixed 300-dimensional unit hypersphere; this is the same pipeline at 48 dimensions, drawn through its projection onto 3. Seeded with 0x5DEECE66D through SplitMix64 and Box–Muller, exactly as the app seeds its JL projection — so it is the same constellation on every reload. 745 links, mean degree 5.7. The force simulation stops after 400 frames; only the rotation continues. 2 notes had no candidate clear the threshold at all and sit unlinked — the app calls that shadow material.
link
dissonance — linked, but far apart
The visualization depicts 260 simulated notes as points spread evenly over the surface of a sphere, turning slowly about its vertical axis. Each note is a 48-dimensional unit vector; because the vectors are unit length, cosine similarity is their dot product. A line joins two notes when one is among the other’s 6 most similar and their similarity is at least 0.45. Points repel one another through a Barnes–Hut quadtree opened at θ = 0.85, links pull like springs, and a weak gravity holds the whole field centred. The 9 accent-coloured lines are dissonance: pairs the geometry linked that nonetheless sit 54 to 64 degrees apart on the sphere.
Parameters running in the Hypersphere visualization
Points
260
Embedding dimensions
48 here, 300 in the shipped app
Display dimensions
3
Nearest neighbours (k)
6
Cosine similarity threshold
0.45
Barnes–Hut opening angle (θ)
0.85
Links drawn
745
Mean degree
5.73
Dissonant pairs marked
9
Unlinked notes
2
Random seed
0x5DEECE66D, SplitMix64
01
Whole-corpus similarity as a single BLAS GEMM
Because every embedding is unit-normalized, cosine similarity is the raw dot product — so the full n×n similarity matrix is exactly the Gram matrix M·Mᵀ, issued as one cblas_sgemm instead of n² scalar products. It is stored as a packed upper triangle indexed i*count − i*(i−1)/2 + (j−i), halving memory, behind a subscript that orders its arguments so callers never have to think about symmetry.
02
SLERP with both singularities handled
Novel implied thoughts walk the great-circle arc between two distant notes, so every intermediate is a unit-length, on-manifold vector rather than an off-sphere average. Both degenerate cases are explicit: cos θ above 0.9995 falls back to normalized lerp, and cos θ below −0.9995 — antipodal, where infinitely many shortest arcs exist — builds an orthonormal vector from whichever basis axis is least aligned and rotates through it. Arbitrary, but the same arbitrary answer every launch.
03
Barnes–Hut, pinned against brute force in a test
The O(n log n) quadtree collapses a distant cell into a single pseudo-body when s/d is below θ, shipped at 0.85. Rather than asserting the approximation is fine, a unit test builds a deterministic 200-point cloud, runs the tree at θ = 0.5 against an exact O(n²) reference, and requires relative error under 0.2. The SpriteKit scene then reuses that same Core quadtree inside its own per-frame integrator with physicsWorld.speed pinned to zero.
Epitome · provocation card · four lenses
The engine reads geometry and returns psychology. Each lens below names the geometric condition that produced it.
Four provocation types — Double-Loop (most-linked note), Shadow (least-linked note), Dissonance (a low-similarity pair sharing vocabulary) and Synthesis (a SLERP waypoint between two distant notes). Stepping between them needs JavaScript; the dissonance card is shown.
← → to step
Skin
DISSONANCEintensity0.646
SimilarityMatrix.pairs(below:) — cosine under dissonanceThreshold, tension amplified by shared vocabulary
both notes on the unit hypersphere; the arc is the angle between them
A · note 02 · degree 7
Rest feels like cheating.
rest
feels
like
cheating
B · note 03 · degree 6
Rest is sacred
rest
sacred
shared salient token: rest — tokens of 4+ letters, stopwords removed, Jaccard over the union
These two thoughts are mine, written at different times:
A: "Rest feels like cheating."
B: "Rest is sacred"
They cannot both be fully true in the way I seem to believe them. Ask me the question that exposes what I am avoiding by keeping them apart.
systemPrompt · the interlocutor this installs
You are the Epitome — an uncompromising Socratic interlocutor inside the user's own mind. You have detected that two of their sincerely-held thoughts contradict each other. Do not soften this. Do not resolve it for them. Your single job is to hold both thoughts in front of them at once and ask the one question that makes the contradiction impossible to ignore. Be precise, be calm, be relentless. Never exceed three sentences.
✦ Tap to hear the Epitome
The detector admits a pair only below dissonanceThreshold −0.15, and no pair in this eight-note fixture gets there — mean-pooled word vectors stay in a positive cone; the fixture's lowest cosine is +0.393. This is its highest-tension vocabulary-sharing pair, with the numbers the detector computes for it.
Rebuilt in HTML from Epitome’s own SwiftUI provocation card (LeafView.swift) — a rebuild, not a screenshot. The eight example notes are the fixture paragraphs in ThoughtSplitterTests.swift, split by the repo’s own ThoughtSplitter; nobody’s journal. Every cosine, overlap, degree, gap and intensity was measured by compiling EpitomeCore and running its real pipeline over those notes on macOS. Both skins are the shipped ones, persisted in the app to UserDefaults under epitome.theme.
The app arms a haptic here too: the rail plays ResolveDissonance.ahap — a sharp recognition strike, then a 1.1 s settling swell — when a card appears above intensity 0.8. None of these four clears it; the highest is 0.700.
unit tests in 9 suites, all passing
35
lines of Swift across 54 files
7,558
lines in EpitomeCore — no UIKit dependency
2,191
stitchable Metal shader entry points
6
latent dimensions · θ 0.85 · k 6
300
JSON files. No database.
2
08 — How this all works
The model never gets the last word.
Every one of these five systems puts a language model in front of a decision it is not allowed to make. The model drafts, scores, or suggests; a deterministic gate — a typecheck, a clamp, a predicate, a geometry — is what actually decides. That is not a philosophy I applied afterward. It is the same structure five times, because it is the only structure I trust to ship.
Esque Agent
Proposes
“the task is done”
Gate
runVerify()
Decides
continue, or stop
MockMe
Proposes
per-claim booleans
Gate
arithmetic over flags
Decides
coverage % and score
Omnibus
Proposes
an auditor brief
Gate
isLocalExecutorProvider()
Decides
who sees local context
AlphaTrainer
Proposes
four dimension scores
Gate
apply_guardrails()
Decides
the capped score
Epitome
Proposes
a provocation
Gate
on-device geometry
Decides
what to surface
09 — Rendering the marketing in code
The ads are a React app.
Every App Store preview, TikTok cut and store screenshot across four of these five projects is a Remotion composition — React components rendered frame by frame, not a timeline in an editor. That makes a brand change a prop change, and a new locale a re-render.
The technique worth stealing is the timing. Scene durations aren't guessed: each voiceover is measured with ffprobe, the durations become a scene table, and durationInFrames is exported back into the composition registry. The video is exactly as long as the audio, and it stays that way when the script changes.
MockMe
28,052
Esque Agent
11,987
AlphaTrainer
8,011
Omnibus
2,364
Total render pipeline
50,414
hookproofeloturncta
0.00s/22.25sframe 0 / 1,335tail
Scene timing table for the rendered reel. Durations were measured from the recorded voiceover with ffprobe and exported into the composition registry as durationInFrames. The five scored scenes run to frame 1,240 of the 1,335 rendered; the scenes themselves total 1,178 frames, and the remaining 95 are the tail after the last line finishes.
Scene
Frames
Starts
Ends
hook
277
0.07s
4.68s
proof
261
4.92s
9.27s
elo
204
9.50s
12.90s
turn
204
13.17s
16.57s
cta
232
16.80s
20.67s
22.25s · 1080×1920 composition, served at 720×1280 · 60fps · 1,335 frames generated in React. Scene boundaries derived from ffprobed voiceover durations — the timing table is computed from the audio, then exported back into the composition registry as durationInFrames. The clip embedded here is the silent cut.
reading the rail
Drag it. The hairlines are not decoration and not evenly spaced — they sit at frames 281, 556, 774, 994, 1,240. Those are the composition's own offsets, not the running sum of the line durations: the schedule opens with a four-frame lead-in and leaves fourteen to sixteen frames between scenes, so adding the durations up lands the last boundary a full second early.
The 5 scored scenes run to frame 1,240 of the 1,335 rendered; the remaining 95 are the tail after the last line finishes. The scenes themselves are 1,178 frames — the difference is the lead-in and the gaps.
and this page's own title cardWritten for this site in remotion/src/Title.tsx and rendered the same way — 320 frames at 30fps, 1920×1080, no timeline and no editor. The dither behind the type is the same idea as the field at the top of this page, computed per frame instead of per pixel.
10 — The numbers
Measured, with the method attached.
Nothing here is a projection or an estimate. Where a number is a poor proxy for the thing it appears to measure, the chart says so.
Externally re-verifiable
Ship log
Eleven release events across five projects, Mar 25, 2026 to Aug 24, 2026. Shape is the kind of artifact; colour is the project.
MarAprMayJunJulAugEsque Agentesque-bridge first publish — May 28, 2026App Store v1.0 — Jul 22, 2026esque-bridge 0.7.0 — Aug 9, 2026TestFlight lane — Aug 9, 2026MockMeFirst App Store release — Apr 24, 2026v2.4 released — Aug 10, 2026Omnibusomnibus-bridge 0.1.0 — Jul 17, 2026TestFlight lane — Jul 21, 2026omnibus-bridge 0.2.2 — Jul 22, 2026AlphaTrainerSigned App Store archive — May 30, 2026EpitomeSigned archive + TestFlight — Jul 6, 2026
npm publish
App Store release
Signed archive
TestFlight build
Ship log: every externally verifiable release event, 2026-03-25 to 2026-08-24
Project
Date
Kind
Event
MockMe
Apr 24, 2026
App Store release
First App Store release
Esque Agent
May 28, 2026
npm publish
esque-bridge first publish
AlphaTrainer
May 30, 2026
Signed archive
Signed App Store archive
Epitome
Jul 6, 2026
Signed archive
Signed archive + TestFlight
Omnibus
Jul 17, 2026
npm publish
omnibus-bridge 0.1.0
Omnibus
Jul 21, 2026
TestFlight build
TestFlight lane
Esque Agent
Jul 22, 2026
App Store release
App Store v1.0
Omnibus
Jul 22, 2026
npm publish
omnibus-bridge 0.2.2
Esque Agent
Aug 9, 2026
npm publish
esque-bridge 0.7.0
Esque Agent
Aug 9, 2026
TestFlight build
TestFlight lane
MockMe
Aug 10, 2026
App Store release
v2.4 released
Every point is externally re-verifiable: npm registry timestamps, App Store release dates, and signed archive dates on disk.
Two measurements, one frame
Commit events
Bars are commit events per month, March to August 2026. The dots are a second, unrelated axis: total lines of code per repository, placed at that repository’s last commit.
commit eventslines of code01020050k100kMarAprMayJunJulAugMockMe 101,165Esque Agent 43,365Omnibus 29,098AlphaTrainer 28,561Epitome 7,7711231501422
Commit events per month, March to August 2026
Month
Commit events
2026-03
1
2026-04
23
2026-05
15
2026-06
0
2026-07
14
2026-08
22
Lines of code and commit count per repository, with the date of the last commit
Repository
Lines of code
Commits
Last commit
MockMe
101,165
38
2026-08-17
Esque Agent
43,365
19
2026-08-09
Omnibus
29,098
14
2026-07-21
AlphaTrainer
28,561
2
2026-08-19
Epitome
7,771
2
2026-08-17
Commit count is a bad proxy for work here. AlphaTrainer is 2 commits for 28,561 lines; Epitome is 2 commits for 7,771. Bars are commit events. The dots are lines of code by repository, placed at each repository’s last commit.
Composition
209,960 lines, and what was excluded
209,960 first-party lines across 947 files and 11 languages, counted after vendored code was removed.
Authored lines of code and file count by language, 209,960 lines total across 947 files
Language
Lines
Share
Files
TypeScript (.tsx)
103,199
49.2%
368
TypeScript (.ts)
70,805
33.7%
292
Python
10,593
5.0%
80
JavaScript
9,248
4.4%
56
Swift
8,392
4.0%
65
HTML
3,240
1.5%
23
SQL
2,031
1.0%
36
CSS
1,080
0.5%
7
Shell
915
0.4%
11
C headers
331
0.2%
8
Metal
126
0.06%
1
An unfiltered count reports 125,298 lines of JavaScript across 456 files. Almost none of it was written: it is build output plus vendored payloads — server/dist, three separate copies of MediaPipe’s vision_wasm_internal.js, andcordova-plugin-purchase/store.js shipped inside iOS app bundles. The 10,544 above is first-party source only. The largest JavaScript file that was actually written is esque-bridge/index.js, at 2,663 lines.
This is a wc-style count, so 16,248 blank lines and 20,229 comment lines are inside the total above — 173,483 of it is non-blank, non-comment. Every figure here comes from scripts/measure.mjs, which is in the repository.
One bar, 11 languages, no “other” bucket. Metal is a single 126-line file — 0.06% of the total, and the only reason the Epitome constellation renders on the GPU.
The five-question grid
Five projects, the same five questions
Every project answers the same five questions, including the two that answer one of them with a zero. Bar length is lines of code relative to the largest project; a hollow dot means no test suite exists.
Project
Lines
Tests
Shipped where
External artifact
Live endpoint
Esque Agent
31,378
none
App Store v1.0
esque-bridge@0.7.0
—
MockMe
73,113
88 defined
App Store v2.4
id 6761743834
/api/health ok
Omnibus
26,734
199 passing
TestFlight
omnibus-bridge@0.2.2
—
AlphaTrainer
20,550
none
pre-submission
signed IPA
26 operations
Epitome
7,771
35 passing
TestFlight
signed IPA
—
Two of the five have no tests at all. That column is in the grid because leaving it out would make the other three worth less.
11 — Who
Aaryan Chava
I build the unglamorous half of an AI product: the part that decides whether to trust the model. Founder and lead engineer at Esque Technologies LLC since April 2026, where two of these five apps shipped to the App Store. Before that, a software engineering intern at Nurish Digital from August 2024 to June 2025.
I'm at NYU studying computer science and economics, expected May 2029. I write the marketing pipelines in code too — four of these five projects render their own video in React, which is either a good instinct or a tell, depending on who you ask.