README
Shop. Watch. Discover.
Self-hosted AI shopping channel: submit a product URL and watch an AI host present it in generated video clips — fully open-source, no external video APIs required.
CI passing
Conformity passing
Release v0.4.0
License: AGPL-3.0-or-later
Why PLUTUS
| Problem | PLUTUS answer |
|---|---|
| AI video APIs are expensive and closed | Fully open-source: T2I keyframes + ffmpeg minterpolate, no external video API |
| Shopping channels require production studios | AI-generated video clips from a product URL alone |
| Each service has its own AI integration | OmniRoute fronts 350+ providers for scripting, image gen, and more |
What it is
- A 24/7 AI shopping channel with a real-time broadcast schedule
- URL-to-video pipeline: scrape → script → keyframes → ffmpeg → air
- Self-hosted Convex backend with in-container ffmpeg clip generation
- Broadcast player: clip switching, subtitles, standby, ticker, chat
Quick start
git clone https://github.com/innotelinc/plutus.git && cd plutus
cp .env.example .env # edit: PLUTUS_HOST, CONVEX_SELF_HOSTED_ADMIN_KEY
node scripts/lan-ip.mjs # print the autodetected LAN IP (for PLUTUS_HOST)
./scripts/get-admin-key.sh # auto-fetch admin key from backend
make push # push functions + seed demo data
make build # build static export (LAN IP baked in)
make up # start the stack
The stack
PLUTUS_HOST is the host's LAN IP — autodetect it with node scripts/lan-ip.mjs
or set it explicitly in .env. Using the LAN IP lets other devices on your network reach
the stack; 127.0.0.1 works for localhost-only access.
| Service | URL | Backed by |
|---|---|---|
| Web UI | http://$PLUTUS_HOST:3000 | Next.js static export (Nginx) |
| Convex backend | http://$PLUTUS_HOST:3210 | Self-hosted Convex |
| Convex site proxy | http://$PLUTUS_HOST:3211 | Convex HTTP actions |
| Dashboard | http://$PLUTUS_HOST:6791 | Convex dashboard |
| OmniRoute (AI gateway) | http://$PLUTUS_HOST:20128 | Shared platform instance (zeus) |
Operator workflow
make help # every target, with docs
make test # unit tests (PNG encoder, script parser)
make verify # browser checks: playback + submit end-to-end
make logs # tail backend logs
make down # stop the stack
Repo layout
convex/ Convex functions (queries, mutations, actions)
pipeline.ts Pipeline action (scripting + video generation)
videoAction.ts Node.js action (keyframe gen + ffmpeg)
channel.ts Channel queries + mutations
src/ Next.js frontend (broadcast UI)
web/landing/ GitHub Pages site (this page)
deploy/ Dockerfiles, nginx config, admin-key check
tests/ Unit tests (bun test)
License
PLUTUS is licensed under AGPL-3.0-or-later — see LICENSE for the full text.
The in-repo README (README.md) is the source of truth; this page mirrors it for the web.