Skip to content

Dependencies

Policy (ADR-0011): shipped artifacts may depend on permissive or LGPL (dynamically linked) components only — no GPL. Dev-only tools are unrestricted. Adding a dependency requires adding its row here in the same PR. The devcontainer Dockerfile mirrors these groups with comments.

DependencyVersion (noble)PurposeLicenseShips
GStreamer core + base/good/bad plugins1.24.2pipelines, RTP, WebRTCLGPL-2.1 (dynamic)yes
gstreamer1.0-nice (libnice)0.1.21ICE for webrtcbinLGPL-2.1/MPLyes
gstreamer1.0-pipewire1.0.5Wayland capture (pipewiresrc)MITyes
libva + intel-media-driver (iHD)2.20 / 24.1VA-API H.264 encodeMITyes (driver from distro)
libx11 / libxtst / libxfixes / libxrandr / libxinobleX11 backendMIT/X11yes
libei1.2.1Wayland input injectionMITyes
libpipewire1.0.5portal captureMITyes
libevdev1.13.1uinput helperMIT-ish (X11)yes (in fjarr-inputd)
libdbus / sd-busnobleportal negotiationAFL-2.1/GPL dual → use LGPL path; verify at M2yes
nlohmann-json3.11envelopes, configMITyes
libsoup-3 (+ glib-networking)3.4WS/HTTP signaling client (ADR-0017)LGPL-2.1 (dynamic)yes
Forbidden: gstreamer1.0-plugins-ugly (x264enc)GPLnever (doctor-enforced)

Signaling (fjarr-signaling / fjarr-server) — ships as sidecar/Cloud

Section titled “Signaling (fjarr-signaling / fjarr-server) — ships as sidecar/Cloud”
DependencyVersionPurposeLicenseShips
Rust toolchain1.89.0 (pinned)buildMIT/Apache-2.0build-only
tokio1.xasync runtimeMITyes
axum (+ ws)0.8HTTP + WebSocketMITyes
tracing / tracing-subscriber0.1/0.3structured logsMITyes
serde / serde_json1.xenvelopesMIT/Apache-2.0yes
futures-util0.3WS stream/sink combinatorsMIT/Apache-2.0yes
jsonwebtoken9session-grant verification (HS256 at M1)MITyes
hmac + sha1 + sha20.12/0.10TURN ephemeral creds (SHA1, coturn format), webhook signatures (SHA256)MIT/Apache-2.0yes
base640.22TURN credential encodingMIT/Apache-2.0yes
uuid (v7)1.xevent/session idsMIT/Apache-2.0yes
reqwest (rustls)0.12webhook deliveryMIT/Apache-2.0yes
tokio-tungstenite0.24e2e test WS clientMITdev-only

Web (@fjarr/core, @fjarr/react) — ships to customer bundles

Section titled “Web (@fjarr/core, @fjarr/react) — ships to customer bundles”
DependencyVersionPurposeLicenseShips
TypeScript^5.9buildApache-2.0build-only
React (peer dep)≥ 19@fjarr/react onlyMITpeer
(M2+) xterm.jsterminal viewMITyes
@fjarr/core runtime depsnone (design goal)keep the core dependency-free
DependencyVersionPurpose
Vite^8demo-dashboard dev/build
Astro + Starlight^7 / ^0.42website + docs rendering
pnpm (via corepack)10.xJS workspace
markdownlint-cli2, lycheelatestdocs gates
ajv^8protocol schema conformance gate (make protocol-check)
CMake/Ninja/ccache, clang-18 suitenobleC++ build/lint
GoogleTest (M1)C++ tests (BSD-3)
coturn (container)4.6dev/self-host TURN (BSD-3)
Xvfb/openbox/x11vnc/noVNC (robot-sim)noblefake robot desktop
Docker + Compose v2≥ 24the environment itself

Toolchains are pinned (rust-toolchain.toml, packageManager field, Dockerfile base images by tag). Distro libraries float within Ubuntu 24.04 LTS. Cargo.lock and pnpm-lock.yaml are committed. Upgrades are ordinary PRs with a dependencies-row diff; base-image bumps get a changelog note.