Client Registry
Server publishes client binaries bundled with current deployment. Registry endpoints are public and use lowercase client, kernel, and architecture names.
Current printer target is printer-linux-armv7:
GET /api/clients/printer/linux/armv7/latest
GET /api/clients/printer/linux/armv7/latest/download
Metadata response:
{
"name": "printer",
"kernel": "linux",
"architecture": "armv7",
"filename": "printer-linux-armv7",
"sha256": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
"size": 1234567,
"download_url": "/api/clients/printer/linux/armv7/latest/download"
}
Download and verify:
curl --fail --output printer "https://example.com/api/clients/printer/linux/armv7/latest/download"
sha256sum printer
chmod +x printer
Compare sha256sum output with metadata sha256. Latest URLs require cache revalidation and support HTTP range requests.
Build Registry
Build all configured clients locally:
just clients
Artifacts are written to clients/ as <client>-<kernel>-<architecture> plus exact .sha256 sidecars. Deployment rebuilds this directory inside server image. Server indexes file metadata at startup and streams binary from disk; binaries are not embedded in server executable or loaded into memory.