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.
Find a file
2026-04-08 22:26:27 -04:00
.forgejo/workflows ci: target self-hosted linux runner, comment out windows job until runner added 2026-04-06 23:28:25 -04:00
.github/workflows ci: fix — use npm install instead of npm ci (no lockfile) 2026-04-08 08:07:54 -04:00
docs feat: initial Dragon Wind Desktop scaffold 2026-04-06 23:17:07 -04:00
src fix: capture real S3 ETag from PUT response headers instead of placeholder 2026-04-08 22:25:11 -04:00
.gitignore feat: initial Dragon Wind Desktop scaffold 2026-04-06 23:17:07 -04:00
package.json fix: remove unused @aws-sdk deps — ESM incompatible, not needed (raw HTTP used instead) 2026-04-08 08:30:16 -04:00
README.md feat: initial Dragon Wind Desktop scaffold 2026-04-06 23:17:07 -04:00

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 URLs
  • POST /api/desktop/multipart/complete — completes the multipart upload
  • POST /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.