Architecture

Two layers, one product path

Beagle OS has exactly two layers: the Beagle control plane on Proxmox and the Beagle thin-client operating system on the endpoint. The product path remains fixed: Sunshine in the target VM, Moonlight on the endpoint, managed through Proxmox.

The two-layer model

Layer one is the Beagle control plane on Proxmox. It integrates into the Proxmox UI, adds the Create Beagle VM workflow, generates VM-specific artifacts, exposes a local REST API, and manages USB control, egress policy, endpoint identity, and fingerprint awareness.

Layer two is the Beagle thin-client operating system. It is Debian-based, boots directly into Moonlight, and avoids the general-purpose desktop model.

System flow

AdminWorks in Proxmox and the Beagle UI extension.
Control PlaneGenerates artifacts, policies, identity state, and API responses.
Target VMRuns Sunshine as the streaming server.
EndpointBoots Beagle OS and launches Moonlight.

VM-centric instead of user-centric

The VM is the streaming target and the provisioning anchor. Beagle generates USB installers and runtime profiles for a specific VM, not for a generic user account that later chooses a target.

Why only Moonlight and Sunshine

Beagle deliberately chooses one protocol, one client, and one server. This reduces operational variance, improves latency-focused testing, and makes endpoint behavior reproducible.

REST API reference

MethodEndpointPurpose
GET/beagle/healthHealth status of the control plane
GET/beagle/inventoryFleet and endpoint inventory data
GET/beagle/vm/:id/profileVM-specific runtime profile
POST/beagle/vm/:id/artifactGenerate a VM-specific artifact
GET/beagle/usb/statusInspect USB control state
POST/beagle/usb/attachAttach a USB device to a VM
POST/beagle/usb/detachDetach a USB device from a VM