Developers

Quickstart

Run the full system locally, push a recording through the API and read the scores. You need Docker, or Python 3.10+ with ffmpeg available to OpenCV.

1. Run it#

With Docker#

git clone https://github.com/kevin-owens-product/computer-vision.git
cd computer-vision
docker compose up --build demo
# first start renders and processes 7 synthetic sorties (15-40 min)
# then open http://localhost:8000

The demo service turns sign-in off (AARCV_AUTH=off) so every visitor is an administrator. For the API examples below, run the app with sign-in on.

From source#

python -m venv .venv && . .venv/bin/activate
pip install -e ".[dev]"
aarcv synth                 # render synthetic sorties: video + telemetry + truth
aarcv batch --jobs 3        # run the pipeline on all of them
aarcv demo                  # load the results into the web app's data directory
aarcv serve                 # http://localhost:8000, users admin / instructor / pilot, password demo

2. Upload a sortie#

export AARCV_URL=http://localhost:8000 AARCV_USER=instructor AARCV_PASS=demo
curl -su "$AARCV_USER:$AARCV_PASS" \
  -F video=@data/synthetic/nominal/raw.mp4 \
  -F telemetry=@data/synthetic/nominal/telemetry.csv \
  -F pilot_id=PILOT-01 -F declared_receiver=fighter_a -F data_source=synthetic \
  "$AARCV_URL/api/sorties"
# {"id":"S-1A2B3C4D"}

Only video is required. Uploads need the instructor role or higher. An upload that would produce a product above the host network's ceiling is refused with HTTP 409 and an explanation.

3. Wait for it#

SID=S-1A2B3C4D
until curl -su "$AARCV_USER:$AARCV_PASS" "$AARCV_URL/api/sorties/$SID" | jq -e '.sortie.status | test("complete|rejected|failed")' >/dev/null; do sleep 15; done

4. Read the result#

curl -su "$AARCV_USER:$AARCV_PASS" "$AARCV_URL/api/sorties/$SID" \
  | jq '{grade: .assessment.summary.grade, overall: .assessment.summary.overall_score,
         categories: (.assessment.categories | map_values(.score)),
         events: [.assessment.events[] | {t, type, severity}]}'

The response also says which products you may open and why (access), and lists instructor reviews. The full shape is in the assessment schema.

5. Download a product#

curl -su "$AARCV_USER:$AARCV_PASS" -o debrief.mp4 "$AARCV_URL/sorties/$SID/files/debrief.mp4"

Product downloads pass the release rules. A 403 names the rule that failed; see who can open what.

Next#

  • Record an instructor review: POST /api/sorties/{sid}/review (reference)
  • Export a signed package and verify it
  • Feed real recordings through ingest
Was this page helpful?