Files
continuum-ai-worker/README.md
T
octoturge 4fae5eb94e Use Valkey instead of Redis
Redis 7.4+ is RSALv2/SSPL and 8.0+ adds AGPLv3, none of which a
closed-source commercial product can ship. Valkey is BSD-3-Clause and
speaks the same RESP protocol, so the `redis` crate works unchanged -
`CONTINUUM_REDIS_URL` becomes `CONTINUUM_VALKEY_URL`, `Config.redis_url`
becomes `valkey_url`, and `Reporter`'s connection field follows.

The `redis://` scheme and the `redis` crate itself deliberately stay:
both name the RESP wire protocol rather than the server we deploy, and
redis-rs has no `valkey://` scheme to use instead. Commented in place so
the inconsistency reads as intentional.
2026-10-03 10:10:39 +00:00

1.7 KiB

continuum-ai-worker

Computer-vision failure detection worker for the Continuum print farm platform. Consumes camera frame batches pushed onto the Valkey 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 Valkey Streams consumer-group loop in main.rs and the Valkey 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 (Valkey 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/        Valkey pub/sub alert (real) + a note for the Postgres write (later)