PLUTUS

About

The AI Shopping Channel.

PLUTUS is a self-hosted live shopping platform. Viewers paste a product URL; an AI host scripts a segment, keyframes are generated and interpolated into motion, and the clip airs on a real-time broadcast schedule. Everything runs on your own hardware.

What it is

How a segment airs

Every submission travels the same path, with a fallback at each AI-dependent step:

  1. Scrape — the product page is fetched and title, price, and image are extracted (SSRF-guarded).
  2. Script — an OmniRoute model writes three 10-second clips: intro, feature, call-to-action. If no provider is connected, a canned studio script is used.
  3. Keyframes — an image model generates three frames per clip. Without a provider, the procedural generator draws them — the channel still airs.
  4. Motion — ffmpeg minterpolate turns the keyframes into a smooth 10-second clip inside the container.
  5. Air — clips are scheduled against the channel clock; a cron keeps the schedule rolling and recovers stuck items.

Design principles

Role in the Innotel Platform Stack

PLUTUS is the stack's VideoOps platform. It owns the channel experience end-to-end and consumes the platform services:

ConsumesProvides
OmniRoute (AI gateway)Scripting + keyframe generation for the shopping channel
Cerulean (Trust)DNS and TLS for plutus.innotel.us
NPM EdgePublic routing for the app and dashboard hosts
Infisical (Secrets)Production credentials (OmniRoute keys, admin secret)
Authentik (Identity)Viewer SSO via the shared Cerulean instance — live in v0.4

The full owns / consumes / does-not-own map lives in docs/stack.md; the ecosystem definition lives in the Innotel Platform Stack repo.

Status

v0.4 — identity. The stack boots, the playback check passes, and submissions air end-to-end. AI-generated T2I keyframes run through the shared OmniRoute gateway (JPEG/WebP frames normalized to PNG, animated by ffmpeg minterpolate into full 10-second clips), with procedural fallback keeping the channel on air when a provider is unavailable. Demo playback is fully self-hosted, and CI runs a real browser playback check against the compose stack. Sign-in works end-to-end through the shared Cerulean Authentik (v0.4): SSO login → signed session cookie → /auth/me, viewer accounts in the viewers table, and an ADMIN badge for the plutus-admins group. v0.4.0 release notes. See the releases for details.