Dragon Wind - Dual-mode broadcast uploader with HTTP and UDP acceleration. Fast, reliable file transfer for professional broadcast workflows.
| chrome-extension | ||
| lib | ||
| public | ||
| udp-relay | ||
| .env.example | ||
| .gitignore | ||
| docker-compose.yml | ||
| Dockerfile | ||
| package.json | ||
| README.md | ||
| server.js | ||
| setup.sh | ||
🌪️ Dragon Wind
Fast, dual-mode broadcast file uploader with S3 integration, UDP acceleration, and a Chrome extension.
Features
- HTTP Upload — Direct S3 presigned uploads, 50–200 MB/s on LAN
- UDP Upload — Relay-accelerated transfers, 4–8× faster on WAN/lossy networks
- Admin Web UI — Configure S3, UDP relay, users, and folders — all from the browser
- S3 Test & Confirm — Test connection with a real upload/delete before saving
- Chrome Extension — Drag-and-drop uploads from any browser tab
- AMPP Monitor — Live Grass Valley AMPP job queue monitoring
- User Management — Admin and user roles, session auth
- Folder Tree — Configurable prefix hierarchy for S3 organization
- Dark/Light Mode — Persistent theme preference
Quick Start
# 1. Clone
git clone https://forge.wilddragon.net/zgaetano/DragonWind.git
cd DragonWind
# 2. Configure
cp .env.example .env
# Edit .env with your S3 credentials
# 3. Start
docker-compose up -d
# 4. Open
open http://localhost:3000
# Default login: Admin / DragonWind2026!
Services
| Service | Port | Protocol | Description |
|---|---|---|---|
dragon-wind |
3000 | TCP/HTTP | Main web app + API |
udp-relay |
3001 | TCP/HTTP | Relay control API |
udp-relay |
5000 | UDP | Data transfer — port-forward this |
Port Forwarding (Required for UDP Mode)
For UDP uploads to work from external clients:
| Router Port | Internal Host | Internal Port | Protocol |
|---|---|---|---|
| 5000 | Your relay server IP | 5000 | UDP |
| 3001 | Your relay server IP | 3001 | TCP |
See INFRASTRUCTURE.md for detailed setup instructions.
Chrome Extension
- Open
chrome://extensions/ - Enable Developer mode
- Click Load unpacked
- Select the
chrome-extension/folder - Click the 🌪️ icon → Settings → enter your Dragon Wind server URL + credentials
Admin Configuration
All settings are available via the web UI at http://localhost:3000 → Admin tab:
- S3 Storage — Set endpoint, bucket, credentials. Use "Test Connection" to verify with a live upload.
- UDP Relay — Set relay URL and UDP port. Use "Test Relay" to verify connectivity.
- Users — Create/delete users, assign admin/user roles.
- Folders — Manage the folder prefix tree.
API Reference
Upload (HTTP)
POST /api/presigned Get presigned S3 PUT URL
POST /api/upload Multipart form upload (server-side)
UDP Sessions
POST /api/udp/session Create UDP session
GET /api/udp/session/:id Get session status
POST /api/udp/session/:id/complete Mark session complete
GET /api/udp/relay/health Check relay health
Admin
GET /api/s3/config Get S3 config (admin)
PUT /api/s3/config Update S3 config (admin)
POST /api/s3/test Test S3 connection (admin)
GET /api/relay/config Get relay config (admin)
PUT /api/relay/config Update relay config (admin)
Auth / Users / Folders
POST /api/login
POST /api/logout
GET /api/users (admin)
POST /api/users (admin)
DELETE /api/users/:user (admin)
GET /api/folders
POST /api/folders/add (admin)
POST /api/folders/delete (admin)
UDP Relay Architecture
Client Browser ──[UDP chunks]──▶ Dragon Wind Relay ──[S3 Multipart]──▶ S3
◀──[TCP ACK]────── (port 5000 UDP) (port 3001 API)
The relay handles:
- UDP chunk reception with sequence numbers
- S3 multipart upload assembly
- Forward error correction via retransmission
- Session lifecycle management
Performance
| Scenario | HTTP | UDP | Improvement |
|---|---|---|---|
| LAN | 200 MB/s | 180 MB/s | — |
| WAN (stable) | 50 MB/s | 200+ MB/s | 4× |
| WAN (lossy) | 5 MB/s | 40 MB/s | 8× |
| 10 GB file | ~30 min | 5–10 min | 3–6× |
Built for Grass Valley AMPP / FramelightX broadcast workflows.