octoturge 506b66414a Declare proprietary licensing and enforce permissive-only dependencies
Continuum is intended to be sold, so every dependency has to permit
distribution in closed-source commercial software. This crate carried
`license = "UNLICENSED"`, which is not valid SPDX and made `cargo deny`
fail outright; `LicenseRef-Proprietary` with `publish = false` is what
marks it first-party instead.

The note in deny.toml matters more than the allow list here: the ONNX
model weights this worker will load are licensed independently of the
`ort` crate, and `cargo deny` cannot see them at all. Ultralytics YOLO
and Obico's print-failure model are both AGPL-3.0 and cannot ship in a
commercial product - see continuum-common's docs/LICENSES.md, and pick a
permissive architecture before collecting training data rather than
retraining because of a licence.
2026-10-03 10:10:39 +00:00

continuum-ai-worker

Computer-vision failure detection worker for the Continuum print farm platform. Consumes camera frame batches pushed onto the Redis Stream stream:camera_frames (by continuum-backend's src/queue/) and reports failures.

This is a learning-stage boilerplate

Real ONNX Runtime inference (the ort crate) and the Postgres audit write (sqlx) are not implemented yet - src/inference/mod.rs always "detects" one fixed example failure, and src/reporter/mod.rs only prints where the Postgres write would go. The Redis Streams consumer-group loop in main.rs and the Redis pub/sub alert in reporter/ are real. This lets the whole pipeline (read a frame, "detect", report, ack) run and be understood before adding a real model or a SQL database on top.

Pipeline

continuum-proxy --(frames)--> continuum-backend --(XADD)--> stream:camera_frames
                                                                    |
                                                          XREADGROUP (this worker)
                                                                    v
                                                     inference::detect (stub for now)
                                                                    v
                                                 reporter::report (Redis pub/sub - real)

Getting started

cp .env.example .env
cargo run

Structure

src/
  main.rs          Consumer-group loop: XREADGROUP -> detect -> report -> XACK
  config.rs        Loads settings from environment variables
  inference/       Detection stub - real ONNX Runtime inference goes here later
  reporter/        Redis pub/sub alert (real) + a note for the Postgres write (later)
S
Description
Continuum platform: continuum-ai-worker
Readme
76 KiB
Languages
Rust 100%