Dragon Wind Desktop — Native Electron uploader for Grass Valley AMPP/Dragon Wind. High-speed parallel file transfers to S3 via the Dragon Wind server. MASV/Aspera-style tray app.
| .forgejo/workflows | ||
| .github/workflows | ||
| assets | ||
| docs | ||
| src | ||
| .gitignore | ||
| package.json | ||
| README.md | ||
Dragon Wind Desktop
Native Electron desktop uploader for Dragon Wind / Grass Valley AMPP.
High-speed parallel file transfers to S3 — same approach as MASV and Aspera. No browser, no extension, no UDP firewall headaches.
How it works
Files are split into chunks and uploaded concurrently via presigned S3 PUT URLs. The Dragon Wind server orchestrates multipart uploads; the desktop app drives the data plane directly to S3.
User drops file
→ Dragon Wind server: POST /api/desktop/multipart/init
← uploadId + N presigned S3 PUT URLs
→ S3: PUT each chunk in parallel (N workers)
→ Dragon Wind server: POST /api/desktop/multipart/complete
← done ✅
Requirements
- Node.js 18+
- A running Dragon Wind server (v0.x or later with desktop API endpoints)
- Electron 30+
Dev
npm install
npm run dev
Build
npm run build:mac # DMG for macOS (x64 + arm64)
npm run build:win # NSIS installer for Windows
npm run build:linux # AppImage for Linux
Server-side additions needed
Add these endpoints to the Dragon Wind server.js:
POST /api/desktop/multipart/init— creates S3 multipart upload, returns presigned part URLsPOST /api/desktop/multipart/complete— completes the multipart uploadPOST /api/desktop/multipart/abort— aborts on cancel/error
See docs/server-api.md for full spec.
Settings
| Setting | Default | Description |
|---|---|---|
| Workers | 6 | Concurrent chunk uploads |
| Chunk size | 16 MB | Per-part size (min 5 MB, S3 limit) |
Tune workers up on high-bandwidth links (50+ Mbps). Tune chunk size up for high-latency WAN to reduce round trips.