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
| Method | Endpoint | Purpose |
|---|
| GET | /beagle/health | Health status of the control plane |
| GET | /beagle/inventory | Fleet and endpoint inventory data |
| GET | /beagle/vm/:id/profile | VM-specific runtime profile |
| POST | /beagle/vm/:id/artifact | Generate a VM-specific artifact |
| GET | /beagle/usb/status | Inspect USB control state |
| POST | /beagle/usb/attach | Attach a USB device to a VM |
| POST | /beagle/usb/detach | Detach a USB device from a VM |