PDL PLATFORM TOOL

PDL Deploy

USB-C device update server for PDL-produced hardware. Connect, scan, and push firmware, trained models, and applications to your entire edge fleet — all from one dashboard, powered by the DGX Spark training pipeline.

4
Target Devices
1-Click
Deploy Workflow
USB-C
Direct Connect
DGX
Pipeline Source

Download Builds

Latest signed builds for the PDL sensor line. Tap to download and install.

📱
NEW · Uploaded Jul 30, 2026

Android App — PDL Tactical

v2.0.0-alpha (build 2) · ~163 MB · Android 9+ · 30 Jul 2026
Counter-UAS operator console for the PDL Tier-1/Tier-2 RID sensor line. Pairs directly with a sensor over BLE, or works standalone against OpenForge C2.
• New this build: BLE tasking fixes and a Sensors-screen C2 map-button fix, plus a dedicated CmdPacketCodec for the command-packet wire format (8/8 unit tests passing) so tasking sent to a paired T1 sensor encodes/decodes correctly.
• Live map of your position, paired sensors, and incoming Remote ID detections.
• BLE pairing straight to a T1 sensor (e.g. Spencer01) — relays every detection it hears on to OpenForge C2 with retry, even without a T2 gateway on the network.
• Detections & sensors screens for triage without leaving the field.
Debug build — installs directly, no Play Store needed. Grant Bluetooth + location permissions on first launch to pair. Unit-tested; not yet re-verified on a physical handset this session (device unreachable over wireless ADB) — install fresh rather than assuming parity with a device already running the prior build.
⬇ Download APK v2.0.0-alpha
📱
Previous · Jul 29

Android App — PDL Tactical

v2.0.0-alpha (build 1) · ~163 MB · Android 9+
Prior build. Same feature set, without the BLE tasking / C2 map-button / command-codec fixes above — new installs should use the build above.
⬇ Download APK (previous)
📡
PINNED FLEET BUILD

RID Sensor — Firmware

Build b26431347bc4 · Heltec V4 16 MB · one-click install · self-updating
Every fielded sensor pulls this build from here on its own, with A/B rollback if an image fails to come up. This is the build with the most field evidence behind it — 283 recorded sensor-hours, roughly double the next-best, with units running 59 hours unattended.

This is the only RID build PDL Deploy serves. Older versions are no longer hosted: whatever you flash from here is current, and every fielded unit converges on the same id.
• Remote ID: WiFi Beacon/NAN and Bluetooth Legacy/LR drone broadcasts, DJI DroneID, operator position.
• RF threats: deauth and disassoc floods, evil-twin and KARMA, rogue beacon spam, Pineapple/Pwnagotchi/Marauder signatures, WPA3 downgrade, PMKID capture, CSI carrier detection.
• BLE: Find My and AirTag follower detection gated on real platform motion, Tile and SmartTag, Flipper, advertisement spam — scored against recorded field days rather than a simulated benign one, which is what took BLE false positives from 484/day to 0.
• Sub-GHz and mesh: LoRaWAN join-flood and DevNonce replay, Meshtastic/MeshCore decode, three-transport mesh interop with peer relay so one sensor carries another's detections out.

Honest status. All six fielded units run this build. A reset fault is fixed and measured: the health guard used to reboot a unit after 10 consecutive loop cycles under its heap floor, which is a cycle count rather than a duration, so which unit rebooted came down to timing alignment — the whole fleet dips below that floor and five of six were never restarted for it. It now requires the floor to be breached for 2 minutes of wall clock. Gateway01 has since held 9 hours through a dip to 1928 bytes free, a tenth of the floor, without restarting. Not closed: a second and larger reset cause remains — an interrupt-watchdog (INT_WDT) reset, historically ~1 per unit per 20 h, each costing ~20 s of darkness. A mitigation exists but is currently enabled on one unit only, so expect occasional unexplained ~20 s gaps. Recall against a live BLE spam tool remains unproven. 1310/1310 native tests, clean twice. Do not expose a unit to an untrusted network.
RID sensor details →
📱
NEW · EdgePilot

Android App — EdgePilot_GCS Operator

v1.0 · 3.1 MB · Android 7.0+
The field operator’s handset for the EdgePilot_GCS ground station. You give intent; the ground station flies the aircraft. No flight logic and no drone SDK run on the phone — it carries intent and status only.
• Tell it what to do in plain language — “survey 100 m north at 20 m, and tell me when you see a person” — typed or spoken.
• Three detail levels in one screen: Guided for a first-time flyer (setup → test hover → guided first flight), Standard for manual tasking and diagnostics, Expert for fault drills, tuning, black-box replay and area import/export. Nothing is removed at lower levels, only disclosed progressively.
• Live map + vitals — battery, altitude, satellites and link at a glance, with launch-readiness advisories and camera sightings.
• Always-reachable native ABORT that hits the ground station directly, so it works even if the page is still loading.
Needs an EdgePilot_GCS ground station reachable on the same network; enter its host on first launch.
⬇ Download APK v1.0
🖥
NEW · Ground Station

EdgePilot_GCS — No-Pilot Ground Station

v1.0 · 138 MB full / 367 KB source · Jetson Orin Nano / Linux · Python 3.10+
A ground station that flies the aircraft for you. The operator states intent; the station plans, supervises and executes it, with a deterministic safety layer that holds a veto every cycle.
• 17 drone link types — MAVLink, CRSF, FrSky PPM, SBUS, MSP, iBUS, SUMD, SRXL2, F.Port, DJI (incl. OSDK), Tello, Parrot ANAFI, and simulators for training with no hardware.
• Failsafe ladder — formal RTL → land → terminate escalation on link loss, GPS loss, battery floor, tumbling and geofence breach; terminate is disarmed by default.
• ASTM F3411 Remote ID broadcast for regulatory compliance.
• Hash-chained black box of arm/mode/failsafe/abort events, with CSV/GPX export and flight replay.
• Guided first-flight harness — an auto-aborting state machine (preflight → hover → box → RTL) so a novice’s first flight is bounded.
• Trained detector weights included — four YOLOv8-family ONNX detectors (COCO-80 generic plus VisDrone 640/1280 and a distilled 1280 student), so the on-board object detector capability works out of the box instead of asking you to supply a model.
• Browser UI plus the Android operator app above. 445 automated tests and a 49-check field pre-flight script (tools/preflight_check.py).
Unpack, pip install -r requirements.txt, then python -m ui.server --link sim to try it with no aircraft attached.
🔒 Full deliverable — 138 MB (with weights) · sign-in required Source only — 367 KB
🤖
NEW · Autonomy Box

EdgePilot — Onboard Autonomy Box

v1.0 · 140 MB full / 236 KB source · Jetson Orin · Python 3.10+
An edge AI box that takes master control of, and flies, a wide variety of drones. One intelligence over many airframes, driven through a single normalized command and telemetry interface.
• The safety split is non-negotiable: the AI is the pilot/supervisor, never the inner stabilization loop. A real flight controller (ArduPilot / PX4) keeps the hard real-time loop; the box commands it over MAVLink.
• Deterministic safety supervisor — geofence, battery, link and command clamps — holds a hard veto over the AI every cycle. The learned/LLM stack never drives motors directly.
• Per-airframe profiles — a YAML drone library so the same intelligence adapts to each aircraft it is flown on.
• Runs against ArduCopter/PX4 SITL out of the box, so the full stack can be exercised before it ever touches an airframe.
• Trained detectors included — the full models/ set: det_v1 (YOLOv8n, COCO-80, 640), det_v2/det_v3 (VisDrone 640 / 1280) and det_v4 (distilled student, 1280), as ONNX plus the source .pt checkpoints for re-export or fine-tuning.
See docs/ARCHITECTURE.md for the design, models/README.md for weight provenance and retrain commands, and python -m edgepilot.cli profiles for the airframe library.
🔒 Full deliverable — 140 MB (with weights) · sign-in required Source only — 236 KB
🗣
NEW · v1.0.58

PDL Translator — Android App

v1.0.58 · 85 MB (arm64) · Android 7.0+ · 28 Sep 2026
Sit across from someone and talk — with no connection at all.
• Face-to-face mode — lay the phone flat on the table between you. The far half is rotated 180° so each person reads their own language the right way up and taps their own side to talk. The screen now stays on while it lies there.
• Works offline. Each language downloads once (~30 MB, over Wi-Fi) and then translation runs entirely on the phone — airplane mode included.
• Fifteen languages, any pair: English, Italiano, Български, Ελληνικά, Português, Deutsch (Germany, Austria, Switzerland), Tagalog, and eight languages of India — हिन्दी (Hindi), বাংলা (Bengali), मराठी (Marathi), ગુજરાતી (Gujarati), தமிழ் (Tamil), తెలుగు (Telugu), ಕನ್ನಡ (Kannada) and اردو (Urdu).
• Translate a photo — point the camera at a menu or a sign. Read and translated on the phone; the photo is never uploaded. Latin-script languages plus Hindi and Marathi.
• Linked Translator — everyone keeps their own phone, in their own language, on one local wifi or one phone’s hotspot. Two people or nine, no account, no cloud.
• Phrase book you can browse — 1,253 checked phrases and idioms, searchable, with stars, shown full-screen to the other person. It now answers spoken turns too, not just typed ones. Portuguese is European Portuguese.
• Saved conversations from every mode, kept on the phone only, to read again or copy out.
• Translate from any app — Share a message to PDL Translator, or select text anywhere and choose PDL Translator. No speech pack for a language? The app opens the Android screen to add it.
• Offline speech in every language — an optional 350 MB download lets the mic hear all fifteen languages on the phone, even where Android has no speech pack. Beta.
• Live camera — point at a menu and the translation is drawn over the words. Encrypted rooms — give a linked room a password and nothing crosses the wifi readable.
• Honest about what it is doing — every answer is badged phrase book, offline or online, and a phone with no voice for a language stays silent instead of reading it in the wrong accent.
• Optional online engine for better idiom when there is signal, and it can be switched off entirely so the app never touches the network.
• v1.0.58: translations are read aloud from the phone’s own speaker, even when earbuds, a car or a laptop is connected by Bluetooth, and the app never goes silent without saying why on screen. The other language’s mic in chat now switches instead of just stopping. v1.0.57: face-to-face tuned for real tables. The screen says “One moment…” until the mic is really hearing (the first turn takes about two seconds), then “Speak now”, then “Tap when done” — the fastest way to finish a turn. A quick double tap no longer leaves the mic shut, the reply being read aloud is never cut off, and a tap from the other side is kept for right after it. The maintenance screen now times every part of a turn. v1.0.56: the face-to-face mic waits for you. It no longer switches itself off before anyone speaks, keeps your words when Android hiccups or you pause mid-sentence, and tapping your side again finishes the turn instead of throwing it away. If the other person taps while you are still talking, their mic opens as soon as your translation has been said. German added, with a hand-checked German phrase book. Every build is opened and made to translate on Android 14 and 16 before it is published.
No sign-in, no account. Grew out of the English/Italian translator built for Sicily.
⬇ Download APK — 85 MB (most phones) Universal APK — 221 MB (installs on anything) Older 32-bit phones — 65 MB Try it in a browser — no install
The browser version needs a connection: on-device translation is an Android capability. The app is the offline one.
🚨
NEW · v2.1.5

Android App — PHOENIX Citizen (ADRIZ)

v2.1.5 (build 216) · 14.1 MB · Android 8.0+ · 20 Jul 2026
Segnala un incendio in Sicilia. Citizen fire reporting for the PHOENIX wildfire detection network:
• One-tap reporting — flame, smoke or unsure, with GPS position and optional photo.
• Live fire map — satellite detections and corroborated citizen reports across Sicily.
• Area alerts — be notified when a fire is detected near a location you watch.
• Works offline — reports queue on the device and send when signal returns.
What’s new in 2.1.5: area alerts now cover every source — a verified citizen report or a ground-relayed report inside your watch area now notifies you, not just satellite detections. Alerts say which kind of report they came from. Watch areas also sync between the app and the website.
No sign-in. Italian and English. Reports feed adr-wildfire.com.
⬇ Download APK v2.1.5
🔥
NEW · Wildfire

Android App — OLDGABE Wildfire

v1.0 · 5.5 MB · Android 7.0+
Real-time US wildfire situational awareness in your pocket. A map-first client for the OLDGABE detection backend:
• Live fire map — active detections with freshness and trend badges, plus nearest-fire distance from your location.
• NIFC perimeters and a searchable fire list.
• Camera thumbnails for on-scene confirmation, with offline caching for low-signal areas.
• Interrupt fire alerts so an active detection reaches you immediately.
Sign-in required (per-user login). Talks to the OLDGABE backend at oldgabe.pdlengine.com.
⬇ Download APK v1.0
📱
NEW · Uploaded Sep 12, 2026

Android App — CG Drone Hunter

New in v5.9.13 — a trained acoustic drone detector. A neural detector now listens on the same microphone window and adds its own vote when it hears a drone. It is deliberately conservative — on its own it’s an early, still-limited model, so a hit is treated as one unconfirmed acoustic source that only escalates when another sensor agrees, never a standalone alarm. Its front-end was verified bit-for-bit against the model it was trained on, and its output confirmed on-device.
• The model downloads once from PDL Deploy on first run (about 3 MB) and is cached, so the app itself stays small; a future retrain simply replaces the model, no reinstall.
Builds on the operator threat picture (v5.9.6–5.9.12).
⬇ Download APK v5.9.13
📱
Previous · Sep 12

Android App — CG Drone Hunter

v5.9.12 · 24 MB · Android 8.0+
Added threat trend, effector pairing and the optional token lock on the feed. Superseded by v5.9.13, which adds the trained acoustic detector — new installs should use v5.9.13.
⬇ Download APK v5.9.12
📱
Previous · Sep 12

Android App — CG Drone Hunter

v5.9.11 · 24 MB · Android 8.0+
Added TAK/CoT publishing of the ranked threat picture. Superseded by v5.9.12, which adds trend, effector pairing and an optional token lock on the feed — new installs should use v5.9.12.
⬇ Download APK v5.9.11
📱
Previous · Sep 12

Android App — CG Drone Hunter

v5.9.10 · 24 MB · Android 8.0+
Hardened the /api/picture export against hostile input (a crafted AP name can’t corrupt the feed). Superseded by v5.9.11, which adds TAK/CoT publishing of the ranked picture — new installs should use v5.9.11.
⬇ Download APK v5.9.10
📱
Previous · Sep 12

Android App — CG Drone Hunter

v5.9.9 · 24 MB · Android 8.0+
Served the ranked threat picture off-handset at :8091/api/picture for a command post / TAK poller. Superseded by v5.9.10, which hardens that export against hostile input — new installs should use v5.9.10.
⬇ Download APK v5.9.9
📱
Previous · Sep 12

Android App — CG Drone Hunter

v5.9.8 · 24 MB · Android 8.0+
Tightened cross-sensor fusion (one target seen by two sensors, not two lines) and added degraded-coverage reporting. Superseded by v5.9.9, which serves the ranked picture over the network — new installs should use v5.9.9.
⬇ Download APK v5.9.8
📱
Previous · Sep 12

Android App — CG Drone Hunter

v5.9.7 · 24 MB · Android 8.0+
Added the recommended next-step per threat (CORROBORATE / VERIFY / PRIORITISE / TRACK). Superseded by v5.9.8, which tightens cross-sensor fusion and adds degraded-coverage reporting — new installs should use v5.9.8.
⬇ Download APK v5.9.7
📱
Previous · Sep 12

Android App — CG Drone Hunter

v5.9.6 · 24 MB · Android 8.0+
Introduced the prioritised, deduplicated threat picture with independent-source count, one-target fusion, ETA and a coverage/blind-spot line. Superseded by v5.9.7, which adds the recommended next-step — new installs should use v5.9.7.
⬇ Download APK v5.9.6
📱
Previous · Sep 11

Android App — CG Drone Hunter

v5.9.5 · 24 MB · Android 8.0+
Fixed the acoustic false “turbine/turboprop” advisories from steady machine noise (office fan, HVAC) and added engine-score logging. Superseded by v5.9.6, which adds the prioritised threat picture — new installs should use v5.9.6.
⬇ Download APK v5.9.5
📱
Previous · Sep 11

Android App — CG Drone Hunter

v5.9.4 · 24 MB · Android 8.0+
Operator sign-in for sensor tasking, plus the per-sensor Telemetry & capability readout over LAN and the three-channel “Task a Sensor” console (C2 / LAN / Bluetooth). Superseded by v5.9.5, which fixes the acoustic false turboprop advisories — new installs should use v5.9.5.
⬇ Download APK v5.9.4
📱
Previous · Sep 11

Android App — CG Drone Hunter

v5.8 · 24 MB · Android 8.0+
The “Task a Sensor” control feature + reliability/security hardening, but with open sensor tasking. Superseded by v5.9, which requires operator sign-in — new installs should use v5.9.
⬇ Download APK v5.8
📱
Previous · Sep 11

Android App — CG Drone Hunter

v5.7 · 24 MB · Android 8.0+
First build with the “Task a Sensor” control screen. Superseded same-day by v5.8, which adds the reliability/security hardening pass — new installs should use v5.8.
⬇ Download APK v5.7
📱
Previous · Aug 19

Android App — CG Drone Hunter

Operational build — live and active on launch. Opens straight into the live map showing your location and the real signals around you. No demo, no simulated data. Phone radios start scanning immediately (Wi-Fi + BLE drone Remote ID, acoustic); plug an RTL-SDR into USB-OTG and the radio decoders come up automatically.
• New in v5.6 — plug-and-play on any network: the app now auto-discovers the RID sensors on whatever LAN the phone joins — a gentle one-shot sweep that keeps only hosts answering the sensor signature — so a kit (phones + sensors) self-configures with no hard-coded IP list, and picks up sensors that change address or come online later. This is now a signed release build (stable signing key) with the C2 endpoint preconfigured, so a fresh install is operational out of the box.
• New in v5.5 — deauth/jam blackout detection: a deauth or Wi-Fi jam knocks the sensor being attacked off the air, so it can’t report the very attack hitting it. The app now watches the whole sensor cluster and, when several sensors go dark together, raises a HIGH network-threat alert — inferring the attack from the blackout itself, the one path the jammer can’t silence. Pairs with new firmware that reports rogue-AP (evil-twin/KARMA/beacon-spam/Pineapple/Pwnagotchi/Marauder) and BLE-spam/Find-My-follower threats to C2.
• New in v5.4 — closed-loop red-team detection (MYTHOS): the phone now signs its BLE/Wi-Fi threat findings as evidence, a gateway reasons over them and mints a hardened rule, and the phone pulls that rule back and applies it — a full detect→reason→respond loop, no one-way comms. Backed by a durable store-and-forward outbox so evidence survives a gateway outage and is delivered when the link returns.
• New in v5.4 — BLE-flood false-positive fix: a crowded room of real BLE devices no longer reads as a Flipper-style BLE-spam attack; the detector now separates a genuine payload flood (few sources, very high advert rate) from a busy environment.
• New in v5.4 — acoustic engine-PLATFORM classification: beyond electric multirotors, the acoustic path now attempts to name the engine type — a Shahed/Geran-type piston “brapp” vs a jet/turboprop turbine. Honest scope: air-vs-ground and the platform call are treated as a corroboration ADVISORY (a small piston engine genuinely sounds like a moped), and only escalate to an alert when an independent airborne source — Remote ID, an RF control link, or a fleet sensor — agrees.
• From v5.3 — BLE Remote ID position fix (consolidated onto the app's unit-tested ASTM F3411 parser) and a standing build check that fails if any capability is wired to nothing.
• From v5.2 — capability-accuracy pass: the AMC modulation classifier is now genuinely wired into the live scan (previously built and tested but never actually invoked outside self-test). The DJI/OcuSync burst detector's on-map label now reads “Possible DJI drone” and is explicit that it's burst-presence detection, not full identity decode (full DroneID payload — serial, pilot/home GPS — needs wideband SDR hardware this app doesn't have yet).
• From v5.1: cross-peer multilateration, on-device behavioral health scoring for tracked emitters, an opt-in GNSS spoofing detector, LTE cell decode retuned to exact EARFCN channel centres, and a throttled-repost sensor census (TPMS/ISM/POCSAG/FLEX) so a still-present emitter doesn’t vanish from the map.
• Digital voice & trunked radio decoders: DMR, P25 Phase 1, and TETRA — every decode FEC/CRC-verified before it's shown. Plus readable on-screen Morse/CW and VOR-ident readout.
• Full capability set: drone Remote ID (WiFi + BLE), DJI/OcuSync burst detection, MAVLink telemetry, FPV / ELRS & Crossfire FHSS de-hop, ADS-B, AIS, Inmarsat STD-C / Aero, 406 SARSAT, POCSAG, FLEX, ACARS/VDL2, weather-radio SAME/EAS alerts, ISM / TPMS census.
• Task-first home screen: plain-language mission cards (Find Drones / Aircraft / Ships / Phones & Towers / Mesh Radios / Scan Everything); every individual decoder still available under “Advanced.”
• Direction finding (heading + RSSI bearing), GPS-tracker heartbeat detection, multi-target tracking with threat scoring + geofence-breach alerts, live modulation classification, RF fingerprinting / SEI, and a real trained acoustic model (YAMNet backbone; drone / aircraft / non-target, 92% drone recall).
• Fusion cooperative-subtraction + ISM noise gate keeps the map clean; the live 🧠 chip shows status and marks benign emitters.
Ready-for-hardware, not yet live on a standard RTL-SDR: full DJI DroneID payload decode, angle-of-arrival, analog FPV video OSD reading. See the how-to guide for what that means. Grant location + nearby-devices permissions on first launch.
⬇ Download APK v5.6
📱
Previous · Jul 30

Android App — CG Drone Hunter

v5.2 · 18.8 MB · Android 8.0+
Prior build. Same feature set as v5.3, but its BLE Remote ID drone-position decoding had a real offset bug (fixed in v5.3, see above) — new installs should use v5.3.
⬇ Download APK v5.2
📱
Previous · Jul 15

Android App — CG Drone Hunter

v5.0 · 18.7 MB · Android 8.0+
Prior operational build (rollback). Full drone/RF capability set with digital voice (DMR/P25/TETRA), the trained acoustic model, direction finding, multi-target tracking and RF fingerprinting — without the v5.1/v5.2 multilateration, NLL sensor-health scoring, GNSS spoof detector, and EARFCN-exact LTE tuning.
⬇ Download APK v5.0
📱
Previous · Jul 10

Android App — CG Drone Hunter

v4.9.1 · 24.8 MB · Android 8.0+
Prior operational build (rollback). Full drone/RF capability set with the trained acoustic model, direction finding, multi-target tracking and RF fingerprinting — without the v5.0 DMR/P25/TETRA digital-voice decoders.
⬇ Download APK v4.9.1
📱
Previous · Jul 8

CG Drone Hunter — v4.1.0

v4.1.0 · 22.2 MB · Android 8.0+
Prior release — full over-the-air AIS + Inmarsat Aero decode on top of STD-C / ADS-B. Kept here for rollback; new installs should use v4.2.0.
⬇ Download v4.1.0
📡

RID Sensor Firmware

Heltec V4 · ESP32-S3 · 16 MB · build b26431347bc4
Full factory image — bootloader, partition table and app in one file. Flash it at 0x0 with esptool, or use the one-click browser installer on the RID sensor page.
Download .bin →

First-time install: when prompted, allow your browser to “install unknown apps,” then open the downloaded file.

Training-to-Edge Pipeline

Models train on DGX Spark and flow directly to your hardware via USB-C.

💻
DGX Spark
Train models
📦
Artifact Sync
rsync over SSH
🌐
PDL Deploy
Web dashboard
🔌
USB-C Flash
Device updated

Supported Devices

Four hardware targets, each with a purpose-built deployment handler.

📡

RID Sensor

Heltec ESP32-S3
Remote ID mesh sensors flashed via esptool serial. Supports partitioned layouts and single-bin firmware.
Serial TFLite
📱

Android Phone

PDL Companion App
APK sideload and model push via ADB over USB-C. Direct-to-device model updates for on-phone inference.
ADB APK
📡

Jetson-SIGINT

RF / SeaGayles Node
SSH/SCP over USB-C or WiFi. Deploys demodulator models, SeaGayles firmware, and service configs.
SSH RF
🎯

Jetson-PDLens

Optical C-UAS Node
SSH/SCP with on-device TensorRT conversion. Pushes YOLO models, detection configs, and PTZ firmware.
SSH TensorRT

Capabilities

Everything you need to keep your edge fleet current.

🔍 Device Scanning

Auto-detect connected hardware across all protocols.
  • Serial port enumeration for ESP32 RID sensors
  • ADB device listing with model identification
  • SSH probe across USB, WiFi, and Tailscale paths
  • Current firmware version reporting

📦 Artifact Management

Versioned artifact store synced from DGX Spark.
  • Organized by device type and semantic version
  • One-click rsync pull from DGX training pipeline
  • Build metadata tracking (job ID, timestamp)
  • Local artifact registration for custom builds

⚡ One-Click Deploy

Scan, select, deploy — three clicks to updated hardware.
  • Automatic latest-version resolution per device
  • Pre-flight artifact validation
  • Full stdout/stderr capture in deploy log
  • Service restart orchestration on Jetsons

🛡 Reliability

Built for field conditions and operator simplicity.
  • Multi-path connectivity (USB → WiFi → Tailscale)
  • Timeout protection on all flash operations
  • On-device TensorRT conversion for PDLens models
  • Complete audit trail with timestamps

Run PDL Deploy

Launch the local deployment server from the PDL CLI.

pdl deploy --port 8800

Opens the web dashboard at http://localhost:8800 — plug in a device via USB-C and click Deploy.