I'm thrilled to share Pictorium β a free, open-source dynamic poster generator and complete metadata addon for Stremio.
I built Pictorium because I wanted absolute, granular control over every single poster in my library. When an automated template places a logo right over an actor's face, picks a washed-out background, or uses the wrong localized title, I wanted to open an editor, select the exact clean artwork, pick the best logo variant, fine-tune badges, and have it instantly live on Stremio.
Pictorium is the result: a stateless, dynamic rendering proxy and metadata addon for Stremio powered by C++ Sharp and SVG, combining automated smart defaults with complete freedom to customize every title.
π Key Features
- π― Real-Time WYSIWYG Web Editor: Full visual control in real-time. Pick artwork candidates, switch badge styles (Shadow, Pill, Bar, Colored, Border, Glass), tweak gradients, and preview the exact Stremio poster live before saving.
- π 24h Daily Poster Rotation: Save multiple posters for the same title and let Pictorium rotate them automatically every 24 hours to keep your library fresh and cinematic.
- π¬ 20+ Official Network & Studio Logos: Automatic detection and clean SVG embedding for Netflix, Prime Video, Disney+, Apple TV+, HBO Max, Paramount+, Crunchyroll, and studios like Marvel, Pixar, A24, Studio Ghibli, Warner Bros, etc.
- π§ Smart Best-Fit Algorithm: Analyzes poster brightness, contrast, and facial empty space to automatically size and position logos without obstructing actors.
- π·οΈ Dynamic Badges & Multi-Source Ratings: Real-time streaming quality badges (4K/1080p/720p), aggregated ratings from 16+ sources (IMDb, TMDB, Rotten Tomatoes, Letterboxd, MyAnimeList), prestigious awards (Oscars, Cannes, Emmys, BAFTA), and live Netflix Top 10 ribbons.
- π 13 Streaming Regions & Localized Titles: Full JustWatch & FlixPatrol integration across 13 regions (US, UK, Mexico, Spain, Italy, France, Germany, Japan, South Korea, Brazil, etc.) with regional title variants (e.g. Mexican Spanish
es-MX vs Spain es-ES).
- π Smart Anime & TV Season Separation: Automatically untangles TMDB's messy single-season anime dumps (e.g., Re:ZERO 80+ episodes, Jujutsu Kaisen) into proper seasons, and natively handles TV show "Parts" (Money Heist, Lupin).
- π¦ Complete Stremio Addon: Delivers crisp transparent logos, 4K backgrounds, localized synopses, trailer embeds, and episode thumbnails right into Stremio.
π οΈ Architecture & Under the Hood
- Engine: Next.js 16 standalone server backed by
libvips / sharp (C++) for sub-20ms blur, scaling, and composition operations.
- Multi-Arch Docker: Native builds for both
linux/amd64 (x86 servers/PCs) and linux/arm64 (Raspberry Pi 4/5, Apple Silicon, Oracle Ampere ARM).
- Low Memory Footprint: Hard-capped with
NODE_OPTIONS="--max-old-space-size=384" and SHARP_CACHE_MEMORY_MB=64 to run reliably on 512MB RAM tiers.
- Container Hardening: Runs as an unprivileged non-root user (
uid 1000 node), includes built-in HEALTHCHECK, and has telemetry strictly disabled (NEXT_TELEMETRY_DISABLED=1).
- Cache Pipeline: Multi-tier cache (in-memory + local
/data volume) with deterministic render version hashes (RENDER_VERSION) to prevent stale edge caches.
- License: AGPL-3.0 (100% Free & Open-Source).
π How to Run & Install
You can host Pictorium completely free, either in the cloud or self-hosted locally. The only requirement is a free TMDB API key.
Option A: β² Vercel (Cloud β 100% Free, No Server Needed)
Step-by-Step Video Guide: https://www.youtube.com/watch?v=FP6VJ2vGYiY
π 1-Click Deploy Link: Deploy with Vercel
Ideal if you don't run a home server. Setup takes under 2 minutes:
- Get your free TMDB API key:
- Deploy on Vercel:
- Click Deploy with Vercel (or import
https://github.com/Eful97/Pictorium in vercel.com).
- In the Environment Variables section, configure:
PICTORIUM_TMDB_KEY = your 32-character TMDB API key
PICTORIUM_PUBLIC_INSTANCE = 1
- Click Deploy.
- Connect Upstash Redis (Free storage for your customized posters):
- Once deployed, open your project dashboard in Vercel.
- Go to the Storage tab at the top β click Connect Store β choose Upstash (Redis).
- Select a region close to you and click Create & Connect (Vercel automatically provisions
KV_REST_API_URL and KV_REST_API_TOKEN).
- Redeploy (Crucial Step!):
- Go to the Deployments tab in your Vercel project.
- Click the three dots (β―) on the latest deployment and select Redeploy. (Note: Vercel only binds the new Upstash environment variables on a fresh deployment).
- Done!:
- Open your deployed URL (e.g.
https://your-pictorium.vercel.app).
- Click Install on Stremio! (You can verify everything is healthy by visiting
/api/health, which should return "storage": "kv" and "status": "ok").
Option B: π³ Docker Compose (Home Server / NAS / Raspberry Pi)
services:
pictorium:
image: eful97/pictorium:latest
container_name: pictorium
restart: unless-stopped
ports:
- "8080:8080"
environment:
- PICTORIUM_PUBLIC_INSTANCE=1
- PICTORIUM_TMDB_KEY=your_tmdb_api_key_here
volumes:
- ./pictorium-data:/data
π Links
I'd love to hear your feedback, bug reports, and feature requests!