Voice + Gesture Chrome Desktop Built Solo

SkyWatch Command

A satellite mission-control dashboard you run by voice and hand. No mouse. No keyboard.

5 days~8,600 lines24 live satellites3 input modes Mouse, voice, and gesture, unified in one command dispatcher
Intent Parser Claude · live
Heard
.
ParsedStructured command

01 // The Bet

Thesis

The pointer has run every screen for forty years. LLMs can now read messy human intent directly, so what happens if you delete the mouse entirely and drive a live, data-dense dashboard by talking to it and grabbing panels out of the air?

The bet underneath: the hard part of multimodal isn't adding inputs, it's making them all mean the same thing. Fast is easy. Coherent is hard.

02 // Why

Premise

Every AI product bolts a chat box onto the corner. That's a conversation, not an interface. I wanted to test whether AI could disappear into the plumbing, absorbing accents, synonyms, half-sentences, so I could operate a real interface at the speed of speech and gesture.

And there are real rooms where this matters: hands busy at another console, eyes on a second screen, gloves on, or a mouse simply out of reach. Ops rooms run on exactly that kind of divided attention.

03 // What It Does

Capability

01 / VOICETalk to it

Claude parses spoken intent into structured commands: sort, filter, summon panels, run a triage view, dispatch a repair crew. A local keyword parser catches everything offline, no API key needed.

02 / GESTUREGrab it

Pinch a panel out of the air (webcam hand-tracking) and drag it between slots, resize it, or scroll it. No mouse touched.

03 / INTENTReshape it

Say “give me the problems dashboard” and the whole board reconfigures on intent: reflows into a triage layout, filters to anomalies, raises the alert banner. One sentence redraws the entire screen.

04 / BOTHGrab-then-speak

Pinch the fleet list, say “sort this by strongest signal.” Hand and voice acting on the same object. The whole idea in one gesture.

Fun glitch · behind the scenes
I said something else entirely, the mic misheard me, and the system gamely answered a question I never asked:
“Satellites don't have mothers.”
The Meridian Ops fleet dashboard: live orbital map, fleet list, mission log, signal intelligence and ground-station passes

The fleet dashboard · Upcoming version 2.0

A single satellite detail view with telemetry, orbit and pass data

Satellite detail view · Upcoming version 2.0

04 // Watch

Demo

Recorded walkthrough. The live build uses a private API key. Best with sound on; spoken commands are captioned on screen.

05 // The Hard Part

Craft
A. Coherence

Mouse, gesture and voice all funnel into one command dispatcher. Every feature is input-agnostic by construction: add a behavior once, all three inputs inherit it. The architecture is the thesis.

B. The dumb-but-real bug

The app kept transcribing its own voice, it heard itself say “Done” and tried to run it as a command. Fix: hard-suspend the mic while speaking. The kind of problem you only find by building the thing, not speccing it.

C. The voice that fit the genre

I started with Claude Haiku driving the spoken responses, then switched to ElevenLabs because everyone said it was better. It is, and it was wrong for this. The voices were too dramatic, too "reading you a book," when a mission console needs clipped, neutral acknowledgment. I reverted. Lesson: "best" is genre-dependent; a control room and an audiobook are different products.

The biggest real performance win came later, retroactively, from AloInLaws: fixing the speech recognition language to English instead of auto-detect. I didn't know the option existed when I built SkyWatch. Auto-detect makes the system spend time guessing the language before parsing the command; a fixed language cuts that entirely. If I reopened this build, that's change number one.

D. Where gesture honestly breaks

Pinch-and-drag works decently in the conditions I built it in: one person, a clean background, decent light. Outside that, it degrades in predictable ways. Any second hand in the camera frame confuses the tracking. And in low light, the pinch, my equivalent of a mouse click, would get unreliable exactly when precision matters most. A real deployment would need either constrained mounting (a camera angled at a known operator position) or a confidence threshold that falls back to voice when tracking gets noisy. Knowing where an input modality fails is as much the product judgment as making it work.

System map of SkyWatch Command: voice and gesture input flowing through intent parsing into one shared command bus, then render and spoken reply, over real and simulated satellite data

The system map: voice and gesture flow through intent parsing into one shared command bus, then out as render and spoken reply, on top of a data layer mixing real satellite positions with simulated telemetry.

06 // Real vs Faked

Judgment
Real / Live

Real satellites (ISS, Hubble, Starlink) plotted at their true live positions, computed from CelesTrak orbital data via SGP4, updating every two seconds.

Faked / On Purpose

The 24-satellite “Meridian” constellation and all telemetry are invented, so nothing reads as a real-world claim. Real operators keep telemetry private.

Knowing what to fake and what to make real is the product judgment.

07 // What This Shows

Position

Built solo, with Claude Code as a pair: the design, the product calls, and the engineering.

I'm not handing a spec to a team here; I'm making the thing. The version of me that leads knows what “coherent” costs, because the version that builds just paid for it.

08 // Under The Hood

Stack
TanStack Start/React 19/TypeScript/Tailwind v4/Web Speech API/MediaPipe/satellite.js (SGP4)/Claude Haiku/Chrome desktop