9a790e1211294fceda62a96077ec7d9a7bee9375
- README with project overview, architecture diagram, and quick start - CONTRIBUTING with development setup and code style guidelines - CHANGELOG starting at 0.1.0 (unreleased, under active development)
Pipely
High-concurrency, low-bandwidth OTA (Over-the-Air) update management and distribution server built in Go. Designed to distribute updates to thousands of devices under constrained network conditions (10 Mbps bandwidth ceiling).
Features
- Device Management — Registration, heartbeat tracking, and online/offline detection
- Artefact Versioning — Upload and manage update packages with SHA-256 integrity verification
- Delta Updates — BSDiff-style binary diffs for JAR files to minimise bandwidth
- Gated Rollout — Token-based concurrency control prevents network saturation
- Resumable Downloads — HTTP Range support (
206 Partial Content) for interrupted transfers - Per-Connection Throttling — Token-bucket rate limiting keeps total bandwidth under 10 Mbps
- JWT Authentication — Secure admin API with configurable token expiry
- Web Admin Panel — React-based dashboard for version uploads, deployment management, and user administration
Architecture
daemon (mcd) Pipely Server Admin Browser
│ │ │
├─ POST /devices/register ──────>│ │
├─ POST /devices/heartbeat ─────>│ │
├─ GET /devices/check-update ──>│ │
├─ GET /packages/download/:id ─>│ (rate-limited + gated) │
├─ POST /deployments/:id/status >│ │
│ │<── JWT login ────────────────┤
│ │<── CRUD artefacts/deployments┤
Quick Start
Prerequisites
- Go 1.26+
- PostgreSQL 16+
- pnpm (for building the admin panel)
Running
# Clone
git clone git@onixbyte.dev:onixbyte/pipely.git
cd pipely
# Configure (copy and edit)
cp .env.example .env
# Build the admin panel
cd web && pnpm install && pnpm build && cd ..
# Run
go run cmd/server/main.go
The server starts on :8080 by default. The admin panel is served at /.
Default login: admin / admin
Environment Variables
See .env.example for all configuration options with descriptions and examples.
API
The daemon-facing API is documented in docs/daemon-api.yaml (OpenAPI 3.0).
Licence
TBD
Description
Languages
Go
54.7%
TypeScript
44.2%
JavaScript
0.8%
HTML
0.3%