github oliverbravery/PrintGuard v2.0.0

latest release: v2.0.1
7 hours ago

A ground-up rewrite. One Python engine now runs everywhere — in your browser on Pyodide
or on a server on CPython — with every runtime difference behind a single Platform
contract. Nothing from 1.x is migrated: a 2.0 hub starts from a fresh configuration.

Added

  • Local mode — the full engine runs in the browser (Pyodide, with
    LiteRT.js WASM inference). Nothing is
    installed and no frame leaves the device; a
    live demo deploys to GitHub Pages on
    every release.
  • Klipper (Moonraker) integration alongside OctoPrint: read printer state, pause or
    cancel jobs, with per-printer thresholds, consecutive-detection counts and cooldowns.
  • ntfy, Telegram and Discord notifications, each carrying a snapshot of the defect.
  • Live video via MediaMTX — pull any RTSP/RTMP/HTTP source, publish this device's
    camera over a WebSocket, auto-discover streams already pushed to the server. Playback
    is HLS served through the hub's own port, so a single HTTPS port — and the auth proxy
    in front of it — covers the dashboard, control and video.
  • Print-aware gating — printers linked to a service are only watched while they
    actually print; inference stands by when they sit idle.
  • Fail-safe watchdog — warnings on the dashboard and through notification channels
    when a camera drops, a feed freezes or a printer service stops answering; a failed
    pause is announced, never swallowed.
  • Fair multi-camera scheduling — inference capacity is shared evenly across as many
    cameras as the hardware sustains.

Changed

  • The UI is rewritten in React + TypeScript; one dashboard serves both modes.
  • Inference moved from PyTorch/ONNX Runtime to LiteRT (TFLite): a ≈5 MB ShuffleNetV2
    encoder classified by nearest prototype, with per-printer sensitivity and threshold
    sliders mapped to prototype distances.
  • Cameras are network streams through MediaMTX instead of host devices, so the container
    no longer needs --privileged.
  • Securing a hub is delegated to an identity layer in front — Tailscale, Cloudflare
    Access or oauth2-proxy, documented step by step in
    docs/deployment.md
    — instead of in-app SSL certificates and tunnel management.
  • Docker is the only supported distribution: multi-arch (amd64, arm64) images on
    ghcr.io/oliverbravery/printguard,
    with a compose file that includes MediaMTX.

Removed

  • The PyPI package — use the Docker image, or local mode for an install-free run.
  • Web push notifications and VAPID key setup — replaced by ntfy, Telegram and Discord.
  • The setup page's SSL certificate generation and built-in Cloudflare/ngrok tunnelling —
    replaced by
    docs/deployment.md.
  • 32-bit ARM (arm/v7) images — arm64 (Raspberry Pi 4/5) remains supported.

Don't miss a new PrintGuard release

NewReleases is sending notifications on new releases.