Skip to case study

Desktop receiver / Mobile companions / Local media system

FoneStream

For creators demonstrating a mobile app, a flat screen loses the movement of the hand holding it. We built a local capture system that brings the screen and its motion into a desktop composition, a recording or OBS.

Focus
Product design & engineering
Year
2026
01 / The cobalt hero · 6-second pointer-response loop · Play to viewView full-resolution still ↗

01 / Phone to production

Pair locally.
Compose on desktop.

Open the desktop receiver, scan its pairing offer with the companion, and approve screen capture on the phone. Choose a flat screen or 3D device, set the movement amount and calibrate a comfortable holding position. Compose the output, record it locally, or copy a private local source URL into OBS.

Aran Labs built the Electron receiver, Swift iOS app and ReplayKit extension, Kotlin Android companion, shared protocol and renderer, recording path and OBS integration. The screen travels over local WebRTC; motion travels as timestamped sensor data. No cloud relay or product account is required for that capture path.

The local architecture

Two streams.
One composed image.

Implemented capture path · local network and local outputs
  1. Phone companionScreen capture + motion sensors
  2. Trusted local connectionPairing → WebRTC video & motion data
  3. Desktop rendererScreen texture + calibrated pose → 2D or 3D composition
  4. OutputComposite MP4 · OBS Browser Source · native OBS source

Pairing creates revocable trust

A short-lived, one-use pairing offer carries a certificate fingerprint. The companions pin the receiver certificate and store credentials using platform secure storage. The receiver stores token hashes, checks returning devices and can revoke their connection.

Motion has its own timing

Screen frames and sensor samples arrive independently. The protocol normalizes orientation, estimates clock offset and buffers timestamped motion for interpolation. Calibration establishes a neutral pose; the movement control scales expression without changing the underlying screen.

Record the composition people see

Recording takes the final canvas, with received audio when available, into an H.264 MP4. The OBS output uses an authenticated loopback server; the native plugin wraps that local renderer. Private output URLs remain controls for access, not public stream links.

02 / The main interaction

Take it out
of the frame.

The same renderer supports a straightforward screen capture and a dimensional phone. The website introduces that choice with a branded sample screen: as the visitor scrolls, it gains a frame and turns into a 3D composition.

Manual 2D and 3D controls let the visitor take over. The change stays understandable because the screen artwork remains the same.

Scroll transition, then manual 2D / 3D switching · 7 seconds · Silent recordingView 3D still ↗
Compare the flat and dimensional stills
The actual website demo in 2D: branded screen artwork without a device frame
2D / The screen, on its own.
The same screen inside a tilted silver 3D phone, with layered composition guides
3D / A frame, an angle, a physical presence.

03 / One understandable control

How much
of you?

“Phone movement” spans a steady presentation through to full expression. At 0%, the pose holds. At 50%, the same turn is more restrained. At 100%, the demo uses its full range.

The comparison below repeats one simulated pointer path at all three settings, in sync. It demonstrates the control’s effect, not measured hardware motion or latency.

0%Steady
50%Measured movement
100%Full expression
Simulated motion · Same sample path and timing · 5-second loopView comparison still ↗

04 / Across the experience

One product.
Three surfaces.

Cobalt signals action. Silver gives controls room to breathe. Graphite puts the composition in focus. The bold typography carries the voice from the marketing website into the workspace and phone companion.

The website and desktop use the same renderer and branded sample screen. On mobile, that visual language becomes a focused pairing flow, with sharing waiting for the person’s approval.

Current FoneStream website with silver navigation and the cobalt Small screen. Big presence. hero
Website / Fresh browser capture · 6 September 2026
FoneStream desktop composition workspace with the branded silver phone, graphite stage and movement controls
Desktop / Fresh browser preview with a synthetic test phone. On-screen telemetry is test data.
FoneStream iPhone companion: scan the desktop QR code, then approve sharing; screen sharing is off
Mobile pairing / iOS simulator capture · 5 September 2026 · No physical phone connection

CobaltSilverGraphiteBold type / Shared screen artwork

05 / A small UX decision

Keep the choices.
Explain the next step.

The demo carries the selected rendering mode and movement percentage into copyable setup notes. Someone who chooses 3D and 50% leaves with those choices written into the instructions beside the pairing and OBS steps.

These are instructions containing selected settings. They do not import a preset, connect a phone, or confirm a broadcast.

The films use simulated pointer motion; the desktop capture uses a synthetic test phone, and the iOS capture comes from a simulator. These are software demonstrations rather than a physical phone-to-desktop trial. No on-screen test telemetry is presented as a hardware performance result.

FoneStream / Local capture, native companions,
product design and media engineering.

Back to selected work