Inspiration

Remote work still traps developers and sysadmins behind a flat laptop screen, even with a Meta Quest on the desk and infinite room around them. Farside started from a simple idea: the machines you manage — servers, desktops, cloud VMs — should float in your physical space, ready at a glance, instead of being squeezed into browser tabs.

What it does

Farside is a native Quest (Horizon OS) app that turns your AR workspace into a remote-systems command center. Open multiple freely placeable spatial windows — RDP remote desktops, SSH terminals, and VNC sessions (including macOS Screen Sharing), plus SFTP file transfers over SSH — in your Home environment or in passthrough, each independently movable, resizable, and pinnable. It's built for developers, system administrators, and IT professionals who want their machines within reach. Requires a host configured for the selected protocol and a working network connection.

What makes it different

Other apps were one client per type of connection — a Microsoft RDP client for RDP, something else for SSH, something else again for VNC — or they required installing software on the hosts. Farside is one client for all of them, and it generally works with what the host already provides, over industry-standard protocols: Windows RDP, standard SSH, macOS Screen Sharing, and standard VNC. No separate agent software to install on the host.

How we built it

Native Android (Kotlin, Jetpack Compose) with Meta's VR Layout SDK "Spatial Windows". RDP runs on FreeRDP 3.32.1 (Apache-2.0) compiled for arm64 through the NDK with custom JNI glue: in on-device testing on Quest 3, H.264 (AVC444v2) hardware-decoded through the Qualcomm low-latency MediaCodec decoder at 4–6 ms per frame, with ~1.5 ms render, inside the 16 ms frame budget, when Windows negotiated the H.264 path. We ship custom overrides for camera (rdpecam: avatar, passthrough, and headset-display capture), audio (rdpsnd/audin with spatial audio), drive redirection (rdpdr), and bidirectional clipboard (cliprdr) — all kept outside the FreeRDP submodule so version bumps stay clean. VNC runs on LibVNCServer, including macOS Screen Sharing with hardware H.264 and sound. SSH terminals use SSHJ over a Termux-based VT100/xterm emulator with 2000-line scrollback, saved SSH keys, SSH jump hosts, SFTP file transfers, an optional app-wide PIN, and a 5-minute in-memory unlock cache. Credentials are stored as randomized AES-256-GCM blobs via Android Keystore. A bundled arm64 cloudflared binary (2026.10.5 in rc8) gives per-session Cloudflare Tunnel and Cloudflare Access proxying.

Challenges we ran into

Horizon OS is not stock Android. Activity.setTitle() and TaskDescription do not rename the grey system Control Bar (it reads only manifest activity labels). On Quest, canAuthenticate(DEVICE_CREDENTIAL) can return success while the BiometricPrompt is denied by the platform allowlist, so credential gating needed custom fallback paths. Getting Windows to negotiate the low-latency H.264 path instead of the progressive codec, MediaCodec chroma subsampling requiring even frame heights, and keeping custom FreeRDP overrides outside the upstream submodule all took real on-device iteration.

Accomplishments that we're proud of

True hardware-accelerated RDP on Quest 3, observed at 4–6 ms decode in on-device testing; VNC including macOS Screen Sharing with sound; SFTP file transfers and SSH jump hosts; an independent multi-session launcher with favorites and drag-to-reorder; encrypted credential storage gated by a single app PIN; bundled Cloudflare tunneling; and per-session camera choice between the Meta Avatar virtual camera, outward passthrough room cameras, and a "Headset Display" capture of what you see — each verified on-device with thousands of decoded frames and ~5,100 lines of instrumentation tests. The full UI is localized into 22 locales covering all 25 languages Horizon OS supports (777 entries each), and v0.1.0-rc8 ships as a signed arm64 prerelease (25.8 MB, published 2026-10-28).

What we learned

On Horizon OS the device is the ground truth — documentation and framework APIs can both mislead, so every platform assumption gets an on-device empirical gate before it ships.

What's next

Bringing Farside to the Meta Horizon Store — the submission is in — and continuing to refine the multi-window workspace from real-world use.

Built With

Share this project:

Updates

Submission history