Desktop app

The open source the Alluno app on your computer is built with, from its window to the video and network work that moves each frame.

Section
33 / 35
Read
2 min
Updated

Foundations

Rustlanguage

Rust, the language the app is written in. Memory safety without a garbage collector suits code that handles a frame every few milliseconds.

Tauriapp framework

Tauri gives the app its window, its icon in the menu bar or the tray, and its updates.

Tokioruntime

Tokio runs its network and background work.

Nuxt and Vueinterface

The app's own window is built with Nuxt and Vue, like the website.

rustlsencryption

rustls for TLS.

Video and sound

FFmpegmedia engine

FFmpeg encodes the picture and the sound, with the graphics card's encoder where there is one: NVENC, Quick Sync, AMF, VA-API or VideoToolbox. H.264, H.265 and AV1 are used where the hardware and the browser both support them. FFmpeg is licensed under the LGPL, and the app ships it as separate libraries.

Opusaudio

Opus carries the sound with very little delay.

Network

WebRTCpeer to peer

WebRTC, through WebRTC for Rust, for one to one sessions. It finds the shortest path, encrypts it, and uses a relay only when the network refuses a direct route.

Media over QUICrelay

The Rust libraries of the open MoQ project. Built on QUIC, with TLS 1.3, the app sends once to a relay that serves every viewer, with no head of line blocking between them.

Why two transports

WhenPickReason
One person drivingWebRTCShortest possible path, direct where the network allows
Several people watchingMedia over QUICFan out through a relay, so a slow viewer stalls only their own picture
LAN or VPNMedia over QUIC directNo relay hop at all when the browser can reach the computer

On each system

windows-rsWindows

windows-rs reaches screen capture, sound and input on Windows.

core-graphicsmacOS

core-graphics reaches Core Graphics on macOS, for the screen and for input.

x11rbLinux

x11rb talks to X11 on Linux.

ViGEmBusWindows

ViGEmBus gives Windows a virtual Xbox or PlayStation controller when Alluno's own input drivers are not installed.

Service
    Analytics

    With your OK, we measure how pages load and record how the site is used, with anything you type hidden, so we can find and fix problems. Nothing is collected until you choose. What we collect