Relay

The shared brain behind every Ursa input device.

Router, Murmur, and Specs each capture a different kind of signal — a switch press, a whispered word, a glance. None of that is useful on its own. Relay is the layer underneath all three: it takes whatever signal a device produces, maps it to intent, and turns that intent into fast, reliable control over whatever device you're pointed at.

Every hardware product feeds into Relay — Router, Murmur, and Specs each capture a different signal; Relay is what all of them run through.

What Relay does

01

Input mapping

Every device — switch, pendant, glasses, keyboard — speaks a different native signal. Relay normalizes all of it into one internal event stream, so a switch press, a spoken command, and a glance can be bound to the same action without each device needing to know about the others.

02

Predictive input banking

A small number of inputs are continuously re-bound to the actions most likely to be needed right now, based on the current application and context. One activation replaces a long scanning sequence. A wrong prediction falls back to a full option grid in a single activation — the fast path never traps the user.

03

Semantic snap pointing

Coarse, imprecise input is combined with the live UI — the DOM and accessibility tree — to select intent between real on-screen targets, instead of moving a cursor to exact pixel coordinates. Precision becomes unnecessary rather than expensive.

04

Natural-language profile generation

Describe a workflow in plain English and Relay turns it into a working action set — bindings, sequences, and fallbacks generated from the description instead of hand-assembled one rule at a time.

Under the hood

Real virtual HID output

Relay emits an operating-system-level input device rather than injecting synthetic events, so it works in software that rejects injection.

Time-synchronized multi-sensor capture

A timestamped transport layer keeps signals from separate devices aligned in time, which is what makes composite gestures across devices possible in the first place.

Signal processing over smoothing

Noisy input streams are treated as an intent-estimation problem, not a jitter-filtering problem — the two produce different systems, and the difference is where the amplification actually comes from.