Reliable media ingest. Built for real workflows.
Wrangler is a Docker-based ingest system designed for production environments where data integrity matters.
Cards come in. Files get selected. Wrangler handles structured ingest, dual backups, and checksum verification automatically.
Ingest is one of the highest-risk parts of a shoot.
Manual copies fail. Drag-and-drop gets messy. Verifying footage is slow or skipped entirely.
Wrangler removes that risk.
- Every file is tracked
- Every copy is verified
- Every job is repeatable
-
Automatic media detection Detects mounted cards via a host-side helper
-
Project-based ingest Create structured project folders before copying begins
-
Manual or automatic ingest Run ingest manually by creating a project, selecting your source, and pressing ingest, or enable automatic ingest to trigger as soon as new media is detected
-
Selective file ingest Choose exactly what gets copied
-
Multi-destination backup Automatically mirrors to multiple locations
-
Checksum verification SHA-256 verification across all copies
-
Job tracking Full visibility of ingest status and results
-
Headless operation Runs independently of the UI, allowing ingest jobs to continue uninterrupted even if the browser is closed. Wrangler can run directly on the host machine or be operated from another device on the same network
- Insert media
- Wrangler detects the volume
- Create a project in the web UI
- Choose manual or automatic ingest
- Select source, and optionally choose specific files (manual)
- Wrangler copies to a project folder
- Wrangler mirrors to destination A - and if desired, B and C
- Wrangler verifies all copies
Simple on the surface. Solid underneath.
Wrangler is built as a set of small services:
-
API (
apps/api) Express + SQLite backend managing projects, jobs, and checksums -
Web UI (
apps/web) React interface for ingest control and monitoring -
Host Helper (macOS) (
apps/host-helper) Detects volumes via/Volumesanddiskutil -
Host Helper (Windows) (
apps/windows-host-helper) Native .NET helper exposing removable drives -
Shared Package (
packages/shared) Shared types and schemas
git clone https://github.com/Joshuaeal/wrangler
cd wrangler
cp .env.example .env
npm installmacOS and Windows:
npm run launchThis starts the correct host helper for your platform and brings the Docker stack up in the background, so you can close the terminal afterwards. Shut Wrangler down later from the Settings panel in the web UI.
http://<your-machine-ip>:5173
For external access through a reverse proxy or Cloudflare Tunnel, point the public hostname at the web service only. The web container proxies /api/* to the API internally, so the app works behind a single public origin without exposing port 4001.
- Node.js 20+
- npm 10+
- Docker Desktop
Platform-specific:
- macOS:
diskutil - Windows: .NET 8 SDK
git clone https://github.com/Joshuaeal/wrangler
cd wrangler
cp .env.example .env
npm installWe reccomend running Wrangler for the first time locally as you will need to grant it permissions. After initialising, the GUI can be accessed on any machine in your network.
Update .env to match your storage paths, destinations, and network setup.
You can start the entire system with a single command:
cd /path/to/wrangler
npm run launchThis will:
- build and start the host helper in the background
- bring Docker services up in detached mode
- allow you to close the terminal while Wrangler continues running
Wrangler can then be accessed from any device on your local network.
Wrangler can be stopped without touching the host machine:
- Use Stop Wrangler in the Settings panel to stop only Wrangler services
- Or return to the repository root and run
docker compose down
http://<your-machine-ip>:5173
For external access through a reverse proxy or Cloudflare Tunnel, point the public hostname at the web service only. The web container proxies /api/* to the API internally, so the app works behind a single public origin without exposing port 4001.
- Source media is mounted read-only
/Usersis mounted into containers for destination selection- SQLite database stored at
DATABASE_PATH - API runs on
4001, UI on5173 - Designed for LAN access across multiple machines
Wrangler has been developed with AI assistance and primarily tested on macOS.
Before production use, review and validate:
- file operations
- data integrity
- path handling
- platform-specific behaviour
Windows support exists but is not yet fully validated end-to-end.
Wrangler is for crews who don’t want ingest to be a liability.
It’s built for:
- DITs
- videographers
- small production teams
- live and event environments
Plug in. Select. Ingest. Verified. This is properly product-ready now.