Skip to content

About this article

  • Audience: Operators running their first shadow deployment
  • Goal: After reading, you can deploy one shadow, verify registry and MQTT, and pass a short soak gate
  • Type: Quickstart

Summary

Deploy shadow-canary, confirm the Phantom proxy sees it in the fleet registry and MQTT stream, then run a one-minute soak gate. Complete these steps before longer soaks, Phantom readiness checks, or promoting shadow-secondary.

Prerequisites

  • Phantom host stack running (MQTT 1883, proxy 8788)
  • SSH: root@<device-ip> with YOUR_DEVICE_PASSWORD
  • Tools: scripts/deploy_oakapp.sh, tools/v3_shadow_orchestrator.py in [repo-root]/oak-vms-firmware/
  • PHANTOM_PROXY=https://<phantom-proxy>:8788

See Onboarding for stack setup. For the COTA bus AI lab, prefer a Mac Studio host — COTA POC 2026 and host materials.

1. Confirm the proxy is up

bash
export PHANTOM_PROXY=https://<phantom-proxy>:8788
curl -s "$PHANTOM_PROXY/fleet/registry" | jq .

Verify

  • HTTP 200 with shadows array and bus_id
  • Health responds: curl -s "$PHANTOM_PROXY/fleet/health" | jq .

2. Deploy shadow-canary

bash
cd [repo-root]/oak-vms-firmware
./scripts/deploy_oakapp.sh <device-ip> YOUR_DEVICE_PASSWORD

Verify

  • Build completes without errors
  • Recording status via proxy:
bash
curl -s -X POST "$PHANTOM_PROXY/tools/call?target=<device-ip>" \
  -H "Content-Type: application/json" \
  -d '{"tool":"get_recording_status"}' | jq .

3. Confirm registry and MQTT

bash
curl -s http://nexus.ghostprotocol.us:8788/fleet/registry | jq '.shadows[] | select(.role)'
curl -s http://nexus.ghostprotocol.us:8788/fleet/mqtt/latest | jq '.devices | keys'

Verify

  • Registry lists shadow-canary (site-role-a, MQTT shadow1)
  • /fleet/mqtt/latest includes the device ID with die_temp and detections

4. Run a short soak gate

bash
python3 tools/v3_shadow_orchestrator.py \
  --shadow <device-ip> \
  --duration 1 \
  --prune-first --visual --tap \
  --scenarios normal_short \
  --batch-id quickstart-$(date +%s)

Verify

  • Soak gate PASS (not INCOMPLETE or FAIL)
  • Artifacts in v3-runs/ (checkpoints/, tap.log, summary.json)
  • Temperature samples within range for the run

Next steps

Operator depth

Live fleet state, soak history, and harness evidence live in private operator handoff (not published) (private).