A unified AI VFX production pipeline for cinematographically accurate image and video generation
Project Eliot
Director's Console combines a Cinema Prompt Engineering (CPE) rules engine, a Storyboard Canvas for visual production planning, and an Orchestrator for distributed rendering across multiple ComfyUI nodes. Every prompt it generates is grounded in real-world cinematography — real cameras, real lenses, real film stocks, real lighting equipment — ensuring that only what is physically and historically possible can be configured.
- Key Features
- Screenshots
- Installation
- Quick Start
- Storyboard Canvas
- ComfyUI Integration
- Cinema Prompt Engineering (CPE)
- AI LLM Provider Setup
- Technical Reference
- Architecture
- Development
- License
-
Cinematographic Accuracy — Every configuration is validated against real-world constraints. You cannot pair a Panavision lens with a non-Panavision camera. You cannot use LED lighting in a 1960s film. You cannot handheld an IMAX camera. The rules engine enforces what is physically possible.
-
67 Live-Action Film Presets — From Metropolis (1927) to Parasite (2019), each preset loads the actual camera, lens, film stock, lighting, and aspect ratio used in that production.
-
43 Animation Presets — Studio Ghibli, Akira, Spider-Verse, Pixar, Arcane, and more. Each with accurate style domain, rendering pipeline, motion characteristics, and visual grammar.
-
Storyboard Canvas — Free-floating infinite canvas with draggable, resizable panels. Per-panel workflows, image history with navigation, star ratings, markdown notes, and multi-select alignment tools.
-
Video Generation Support — Full pipeline support for AI video workflows (Wan 2.2, CogVideoX, HunyuanVideo, etc.). Videos are detected from ComfyUI outputs (
images,gifs,videoskeys), saved with correct extensions, displayed inline with<video>playback, and persisted across project save/reload. -
Multi-Node ComfyUI Rendering — Connect multiple ComfyUI backends and render in parallel. Real-time progress via WebSocket with per-node stage tracking. Node metrics, health monitoring, and one-click restart.
-
Generation Progress Sidebar — Dedicated sidebar panel showing detailed progress for all active generations. Per-node workflow stage display (e.g., "Loading Checkpoint", "KSampler", "VAE Decode"), multi-phase progress for multi-KSampler workflows, and step counters. Replaces intrusive panel overlays with a minimal bottom bar indicator.
-
AI-Enhanced Prompts — Connect 13+ LLM providers (OpenAI, Anthropic, Google AI, Ollama, and more) to refine and enhance your cinema prompts with AI assistance.
-
Model-Specific Output — Prompts are automatically formatted for your target model: Midjourney, FLUX, Stable Diffusion XL, Wan 2.2, Runway Gen-3, CogVideoX, HunyuanVideo, and more.
-
Print Storyboards — Export your storyboard to print with configurable layouts (1–4 panels per row), page sizes, orientation, and optional panel notes.
Storyboard Canvas with Project
CPE LLM Providers CPE LLM Providers Detail
- Python 3.10+ (with
piporuv) - Node.js 18+ (with
npm) - ComfyUI — At least one running instance for image generation
- Git (for cloning)
# Clone the repository git clone https://github.com/NickPittas/DirectorsConsole.git cd DirectorsConsole # Run the automated setup python start.py --setup
The --setup flag will:
- Create isolated Python virtual environments for both the CPE backend and the Orchestrator
- Install all Python dependencies (FastAPI, Pydantic, httpx, loguru, Pillow, cryptography, etc.)
- Install frontend npm packages
- Verify all imports are working
- Report the status of each component
CPE Backend:
cd CinemaPromptEngineering python -m venv venv # Windows venv\Scripts\activate # macOS/Linux source venv/bin/activate pip install -r requirements.txt
Frontend:
cd CinemaPromptEngineering/frontend
npm installOrchestrator:
cd Orchestrator python -m venv .venv # Windows .venv\Scripts\activate # macOS/Linux source .venv/bin/activate pip install -r requirements.txt
# Start all services (backend, frontend, orchestrator)
python start.pyThis launches:
| Service | URL | Description |
|---|---|---|
| CPE Backend | http://localhost:9800 |
Cinema Prompt Engineering API |
| Storyboard Frontend | http://localhost:5173 |
React UI (opens in browser) |
| Orchestrator | http://localhost:9820 |
Render farm manager |
python start.py --no-orchestrator # Skip Orchestrator python start.py --no-frontend # Skip Frontend (API only) python start.py --no-browser # Don't auto-open browser python start.py --setup # Verify environment only
The Storyboard Canvas is a free-floating infinite workspace for planning and executing AI-generated visual productions. Panels can be freely positioned, resized, and organized on the canvas with zoom and pan controls.
Canvas Controls:
- Zoom: Mouse wheel (zooms from pointer position)
- Pan: Click and drag on empty canvas area
- Multi-Select: Ctrl+Click individual panels, or marquee-select by dragging
- Alignment: Snap guides appear when holding Shift; alignment toolbar for selected panels
- Keyboard Shortcuts: Ctrl+P (Print), Ctrl+S (Save), and more
Each panel is an independent production unit with its own:
- Workflow — Select any imported ComfyUI workflow per panel
- Parameters — Each panel stores its own parameter values (prompt, steps, CFG, sampler, etc.)
- Image & Video History — Navigate through all generated images and videos with forward/back arrows. Videos play inline with native
<video>controls. - Star Rating — Rate images 1–5 stars for quick review
- Markdown Notes — Attach production notes with edit/view toggle
- Panel Name — Custom names that map to folder structure (e.g., "Hero_Shot" creates
{project}/Hero_Shot/) - Node Selection — Choose which ComfyUI backend renders this panel
Image Viewer — Full-resolution image viewing with zoom and metadata display.
Image Compare — Side-by-side comparison of generated images to evaluate iterations.
Projects are saved with all panel positions, parameters, workflow assignments, ratings, notes, and image references. All generated images are organized in per-panel folders within your project directory.
Project Settings let you configure:
- Project storage path (local or network/NAS)
- Filename templates with tokens:
{panel},{workflow},{seed},{date}, etc. - ComfyUI node addresses
- Auto-save preferences
Print your storyboard with fully configurable layouts:
- Grid columns: 1, 2, 3, or 4 panels per row
- Page size: A4 or Letter
- Orientation: Portrait or Landscape
- Panel selection: All panels or only selected
- Notes: Optional panel notes display
- Live PDF preview before printing
Director's Console communicates directly with ComfyUI nodes for image and video generation. The frontend builds workflow JSON and sends it to ComfyUI's REST API, with real-time progress updates via WebSocket. Video outputs are automatically detected from ComfyUI's images, gifs, and videos output keys and saved with the correct file extension.
Manage your ComfyUI render backends from the Node Manager:
- View node status (online/busy/offline)
- System metrics (VRAM, RAM, queue depth)
- One-click restart (interrupt + free memory)
- Add/remove nodes
- Checkbox selection for multi-node rendering
- Import any ComfyUI workflow JSON
- Workflow Parser automatically extracts editable parameters (prompts, dimensions, steps, CFG, samplers, models, etc.)
- Per-panel assignment — each panel can use a different workflow
- Parameter isolation — switching workflows resets technical parameters to defaults while preserving prompts and image inputs
- Categorization — organize workflows into custom categories
Model and LoRA parameters now feature enhanced dropdown selection:
- Folder Structure — Models and LoRAs are organized by their folder hierarchy using
<optgroup>elements, making it easy to navigate large model libraries (e.g.,Flux/Flux 2/Klein/flux-2-klein-base-9b-fp8.safetensors) - Auto-Selection — When a workflow is loaded, the dropdown automatically pre-selects the model or LoRA that's currently configured in the workflow
- Cross-Platform Path Compatibility — Path separators are automatically normalized, ensuring workflows created on Windows work correctly when submitted to Linux or macOS ComfyUI nodes, and vice versa
Supported file types for folder grouping:
- Models:
.safetensors,.pt,.pth,.bin,.ckpt,.gguf - LoRAs:
.safetensors,.pt,.pth,.bin
When multiple ComfyUI backends are connected:
- Assign specific nodes to specific panels
- Queue jobs across multiple backends in parallel
- Real-time progress sidebar with per-node stage tracking (shows current workflow node: "CheckpointLoaderSimple", "KSampler", "VAEDecode", etc.)
- Multi-phase progress for video workflows with multiple KSamplers (e.g., "Phase 1/2")
- Step counters showing workflow execution progress (e.g., "Step 5/14")
- Global cancel button to interrupt all busy nodes
- Job groups for coordinated parallel execution
- Minimal non-intrusive panel indicator (3px bottom bar + percentage badge)
CPE transforms structured cinematography configurations into optimized AI prompts. Instead of writing free-text prompts, you select from validated menus of real cameras, lenses, lighting setups, and film styles. The system then:
- Validates your configuration against 56+ rules (34 live-action, 22 animation)
- Generates a technically accurate prompt with all selected parameters
- Formats the prompt for your specific target AI model
- Optionally enhances the prompt using an LLM provider for richer description
The rules engine is the core of CPE. It enforces that only what is physically and historically possible can be configured. This is not a suggestion system — it is a hard constraint engine.
| Level | Effect | Example |
|---|---|---|
| HARD | Blocks the configuration | "Film stock cannot be selected with digital cameras" |
| WARNING | Allows but flags as atypical | "Cheerful mood + low-key lighting is unusual" |
| INFO | Informational note | "Remember to set 2x de-squeeze in post for anamorphic" |
Camera & Film Stock Compatibility:
- Film cameras require a film stock selection; digital cameras cannot have one
- 65mm/70mm film stocks require large format cameras
- IMAX film stocks require IMAX cameras
- Ultra Panavision 70 requires 2.76:1 aspect ratio (and vice versa)
Lens & Camera Ecosystem:
- Panavision cameras only accept Panavision lenses (closed ecosystem)
- Panavision lenses require Panavision cameras (Alexa 65 exempt for Primo 70)
- Alexa 65 only accepts 65mm-format lenses (ARRI Prime 65, DNA, Primo 70, Hasselblad V, Vintage Spherical)
- Large Format cameras (Alexa LF/Mini LF) cannot use S35-only lenses (vignetting)
Physical Movement Constraints:
- Heavy cameras (>4kg) cannot be handheld, mounted on gimbals, or flown on drones
- Medium cameras cause operator fatigue warnings for handheld
- Jib cranes only allow Crane Up/Down, Arc, and Static movements
- Drones are limited to Track In/Out, Crane Up/Down, Arc, and Static
- Dolly zoom requires dolly or slider equipment
Era-Appropriate Technology:
- HMI lighting not available before 1972
- Kino Flo not available before 1987
- LED film lighting not available before 2002
- Film presets automatically disallow anachronistic light sources
Natural Light Physics:
- Sunlight not available at night
- Moonlight impossible at midday
- Direct sunlight not available during blue hour
- Low-key lighting impossible at midday outdoors
Composition & Optics:
- Wide lenses (<35mm) on close-ups cause facial distortion (warning)
- Long lenses (>85mm) on wide shots create heavy compression (warning)
- Vintage lenses may not resolve well on 8K+ sensors (warning)
- Certain compositions conflict with specific shot sizes (e.g., negative space in ECU)
Animation-Specific Rules:
- Manga must use monochrome/ink color, locked camera, graphic lighting, no motion, and 2D medium
- Illustration must be static with locked camera
- 2D animation cannot use Free 3D camera
- 3D animation requires volumetric lighting (not flat/minimal)
- Anime cannot use photoreal + naturalistic simulated combo
The UI doesn't just validate after the fact — it proactively disables invalid options in real-time. When you select a Panavision camera, only Panavision lenses are selectable. When you choose night time, the sun is greyed out. The get_available_options() endpoint tests every possible option against your current configuration and returns which ones would cause violations.
67 meticulously researched film presets spanning nearly a century of cinema. Each preset encodes the actual production equipment used on that film: camera body, film stock, lenses, focal lengths, aspect ratio, lighting style, color tone, mood, compositions, shot sizes, and movement.
| Preset | Year | Camera | Film Stock |
|---|---|---|---|
| Metropolis | 1927 | UFA Custom | Eastman Double-X |
| Un Chien Andalou | 1929 | Pathe Studio | Eastman Plus-X |
| Preset | Year | Camera | Film Stock |
|---|---|---|---|
| The Maltese Falcon | 1941 | Mitchell BNC | Eastman Plus-X |
| Citizen Kane | 1941 | Mitchell BNC | Eastman Plus-X |
| Casablanca | 1942 | Mitchell BNC | Eastman Plus-X |
| Double Indemnity | 1944 | Mitchell BNC | Eastman Plus-X |
| Bicycle Thieves | 1948 | Arriflex 35 | Eastman Plus-X |
| Sunset Boulevard | 1950 | Mitchell BNC | Eastman Plus-X |
| Preset | Year | Camera | Film Stock |
|---|---|---|---|
| Rashomon | 1950 | Mitchell BNC | Eastman Plus-X |
| Tokyo Story | 1953 | Mitchell BNC | Eastman Plus-X |
| Seven Samurai | 1954 | Mitchell BNC | Eastman Plus-X |
| The Seventh Seal | 1957 | Arriflex 35 | Eastman Plus-X |
| Vertigo | 1958 | Mitchell BNC | Eastman 5247 |
| Preset | Year | Camera | Film Stock |
|---|---|---|---|
| Breathless | 1960 | Eclair NPR | Eastman Plus-X |
| La Dolce Vita | 1960 | Arriflex 35 | Eastman 5247 |
| Lawrence of Arabia | 1962 | Super Panavision 70 | Kodak 65mm 250D |
| Jules et Jim | 1962 | Eclair NPR | Eastman Plus-X |
| Harakiri | 1962 | Mitchell BNC | Eastman Plus-X |
| Persona | 1966 | Arriflex 35BL | Eastman 5254 |
| The Battle of Algiers | 1966 | Arriflex 35 | Eastman Plus-X |
| 2001: A Space Odyssey | 1968 | Super Panavision 70 | Kodak 65mm 200T |
| Preset | Year | Camera | Film Stock |
|---|---|---|---|
| A Clockwork Orange | 1971 | Arricam ST | Eastman 5254 |
| The French Connection | 1971 | Arriflex 35BL | Eastman 5254 |
| The Godfather | 1972 | Arriflex 35BL | Eastman 5254 |
| Solaris | 1972 | Arriflex 35 | Eastman 5250 |
| Chinatown | 1974 | Panavision Panaflex | Eastman 5247 |
| Barry Lyndon | 1975 | Arricam ST | Eastman 5247 |
| One Flew Over the Cuckoo's Nest | 1975 | Arriflex 35BL | Eastman 5247 |
| The Mirror | 1975 | Arriflex 35 | Eastman 5250 |
| Taxi Driver | 1976 | Arriflex 35BL | Eastman 5247 |
| Star Wars | 1977 | Panavision Panaflex | Eastman 5247 |
| Alien | 1979 | Panavision Panaflex | Eastman 5247 |
| Apocalypse Now | 1979 | Arriflex 35BL | Eastman 5247 |
| Stalker | 1979 | Arriflex 35 | Eastman 5250 |
| Preset | Year | Camera | Film Stock |
|---|---|---|---|
| Blade Runner | 1982 | Panavision Panaflex | Eastman 5293 |
| Brazil | 1985 | Arriflex 35BL | Eastman 5293 |
| Come and See | 1985 | Arriflex 35 | Eastman 5250 |
| Blue Velvet | 1986 | Arriflex 35BL | Eastman 5293 |
| Preset | Year | Camera | Film Stock |
|---|---|---|---|
| Schindler's List | 1993 | Arricam ST | Kodak Double-X 5222 |
| Pulp Fiction | 1994 | Panavision Platinum | Kodak Vision 500T 5279 |
| The Shawshank Redemption | 1994 | Arricam ST | Kodak Vision 500T 5279 |
| La Haine | 1995 | Arriflex 35BL | Kodak Double-X 5222 |
| Heat | 1995 | Panavision Platinum | Kodak Vision 500T 5279 |
| The Thin Red Line | 1998 | Arricam ST | Kodak Vision 500T 5279 |
| The Matrix | 1999 | Panavision Millennium | Kodak Vision 500T 5279 |
| Eyes Wide Shut | 1999 | Arricam ST | Kodak Vision 500T 5279 |
| Preset | Year | Camera | Film Stock / Format |
|---|---|---|---|
| In the Mood for Love | 2000 | Arricam ST | Fuji Eterna 500T |
| Requiem for a Dream | 2000 | Arriflex 435 | Kodak Vision 500T 5279 |
| Mulholland Drive | 2001 | Panavision Millennium | Kodak Vision 500T 5279 |
| Amélie | 2001 | Arricam ST | Fuji Eterna 500T |
| Oldboy | 2003 | Arricam ST | Kodak Vision2 500T 5218 |
| Memories of Murder | 2003 | Arricam ST | Kodak Vision2 500T 5218 |
| Children of Men | 2006 | Arricam ST | Kodak Vision3 500T 5219 |
| No Country for Old Men | 2007 | Arricam ST | Kodak Vision3 500T 5219 |
| There Will Be Blood | 2007 | Panavision Millennium XL2 | Kodak Vision3 500T 5219 |
| The Dark Knight | 2008 | IMAX MSM 9802 / Panavision | IMAX 500T / Kodak Vision3 |
| Enter the Void | 2009 | Arriflex 435 | Kodak Vision3 500T 5219 |
| Preset | Year | Camera | Format |
|---|---|---|---|
| The Tree of Life | 2011 | Arricam ST | Kodak Vision3 500T 5219 |
| Drive | 2011 | Alexa | Digital |
| Her | 2013 | Alexa XT | Digital |
| Under the Skin | 2013 | Alexa | Digital |
| The Grand Budapest Hotel | 2014 | Arricam ST | Kodak Vision3 500T 5219 |
| Mad Max: Fury Road | 2015 | Alexa XT | Digital |
| Moonlight | 2016 | Alexa Mini | Digital |
| Roma | 2018 | Alexa 65 | Digital |
| The Lighthouse | 2019 | Arricam ST | Kodak Double-X 5222 |
| Parasite | 2019 | Alexa 65 | Digital |
43 animation presets across four style domains, each with curated rendering pipelines, motion characteristics, and visual grammars.
Studio Ghibli, Akira, Ghost in the Shell, Evangelion, Makoto Shinkai, Kyoto Animation, MAPPA, Wit Studio, Ufotable, Studio Trigger, Gainax, Satoshi Kon, Cowboy Bebop, Samurai Champloo, Mob Psycho 100, One Punch Man, Cyberpunk Edgerunners, Violet Evergarden, Attack on Titan, Death Note, Fullmetal Alchemist Brotherhood, Steins;Gate
Shonen, Dark Seinen, Shojo, Josei, Horror Manga, Slice of Life Manga
Pixar, DreamWorks, Disney 3D, Arcane, Spider-Verse, Unreal Cinematic, Blender Stylized, Stop Motion
Concept Art, Editorial Illustration, Book Illustration, Western Comics, Graphic Novel, Watercolor, Digital Painting
Each preset configures: medium (2D / 3D / Hybrid / Stop Motion), style domain, line treatment (clean / variable / inked / sketchy), color application (flat / cel / soft / painterly), lighting model (symbolic / graphic / naturalistic), surface detail, motion style (limited / full / exaggerated / fluid), and virtual camera behavior.
Beyond rule-based generation, CPE can send your structured prompt to an LLM for enrichment. The LLM adds:
- Atmospheric detail and environmental description
- Character and object specifics
- Narrative context
- Model-optimized phrasing
Model-Specific Formatting:
| Target Model | Type | Strategy |
|---|---|---|
| Midjourney | Image | Comma-separated keywords + --v 6 --q 2 parameters |
| FLUX | Image | Natural language sentences, no negative prompts |
| SDXL / Stable Diffusion | Image | Comma-separated keywords with weights |
| Wan 2.2 | Video | 80–120 words, over-specified, padded with detail |
| Runway Gen-3 | Video | Natural language, lowercase |
| CogVideoX | Video | Concise, max 15 parts (224 token limit) |
| HunyuanVideo | Video | Capitalized sentences |
| LTX-2 | Video | 200 word limit |
Director's Console supports 13+ LLM providers for AI-enhanced prompt generation. All credentials are stored locally in an encrypted database (%APPDATA%/CinemaPromptEngineering/credentials.db) using Fernet encryption. No credentials are stored in the source code or environment files.
LLM Providers LLM Provider Setup
These providers require an API key, which you enter directly in the Settings panel:
| Provider | How to Get a Key | Models |
|---|---|---|
| OpenAI | platform.openai.com/api-keys | GPT-4o, GPT-4 Turbo, DALL-E 3 |
| Anthropic | console.anthropic.com | Claude 3.5 Sonnet, Claude 3 Opus |
| Google AI | aistudio.google.com/apikey | Gemini Pro, Gemini Ultra, Imagen |
| OpenRouter | openrouter.ai/keys | Multi-model aggregator (100+ models) |
| Replicate | replicate.com/account/api-tokens | FLUX, SDXL, open-source models |
| Stability AI | platform.stability.ai | Stable Diffusion, SDXL |
| fal.ai | fal.ai/dashboard | Fast FLUX/SDXL/video inference |
| Together AI | api.together.xyz | Open-source fast inference |
| GitHub Models | GitHub Personal Access Token (PAT) | GPT-4o, Claude, Llama via GitHub |
To add an API key provider:
- Open Settings (gear icon in the menu)
- Find the provider in the list
- Enter your API key
- Click Test to verify the connection
- The key is immediately encrypted and stored locally
These providers use OAuth authentication flows. You must supply your own Client ID (and Client Secret where required):
| Provider | Flow Type | Requires Client Secret |
|---|---|---|
| Antigravity (Google AI) | Authorization Code + PKCE | Yes |
| OpenAI Codex | Authorization Code + PKCE | No |
To set up an OAuth provider:
- Open Settings → find the provider
- Enter the Client ID (required)
- Enter the Client Secret if required (Antigravity only)
- Click Connect — this opens a browser window for OAuth authorization
- After authorization, the access token is encrypted and stored locally
- Tokens auto-refresh when expired
No API key needed — these connect to LLMs running on your machine:
| Provider | Default URL | Notes |
|---|---|---|
| Ollama | http://localhost:11434 |
Auto-detected when running |
| LM Studio | http://localhost:1234 |
OpenAI-compatible API |
Just start the local LLM server and Director's Console will detect it automatically.
Note for Ollama users: If you encounter issues, ensure you're using the latest Ollama version. Model names with tags (e.g.,
llama3:latest) are supported. Embedding models are automatically filtered from the chat model list.
49 camera bodies across 14 manufacturers, classified by weight for movement constraint enforcement:
Digital Cameras
| Manufacturer | Bodies |
|---|---|
| ARRI | Alexa 35, Alexa Mini, Alexa Mini LF, Alexa LF, Alexa 65, Alexa, Alexa XT |
| RED | V-Raptor, V-Raptor X, V-Raptor XL, Komodo-X, Monstro 8K, RED One |
| Sony | Venice 2, FX9, FX6 |
| Canon | C700 FF, C500 Mark II, C300 Mark III |
| Blackmagic | Ursa Mini Pro 12K, Pocket 6K |
| Panasonic | VariCam LT, S1H |
| Nikon | Z9 |
| DJI | Inspire 3, Mavic 3 Cine |
Film Cameras
| Manufacturer | Bodies |
|---|---|
| ARRI Film | Arricam ST, Arricam LT, ARRI 535B, ARRI 35BL, ARRI 35 III, Arriflex 35, Arriflex 35BL, Arriflex 435 |
| Panavision | Millennium XL2, Millennium, Platinum, Gold, Panastar, Panaflex, Super Panavision 70, Ultra Panavision 70, XL |
| Mitchell | BNC, BNCR, BFC 65 |
| Eclair | NPR |
| IMAX | MSM 9802, MKIV, GT |
| Vintage | UFA Custom, Pathe Studio |
Camera types: Digital, Film
Sensor sizes: Super 35, Full Frame, Large Format, 65mm, Micro Four Thirds, Film 35mm, Film 65mm, Film 70mm, IMAX 15/70, IMAX GT
Weight classes: Ultra Light (<2kg), Light (2–3kg), Medium (3–4kg), Heavy (>4kg)
47 lens families from 19 manufacturers:
Full Lens List
| Manufacturer | Families |
|---|---|
| ARRI | Signature Prime, Master Prime, Ultra Prime, Prime 65, Prime DNA |
| Zeiss | Supreme Prime, Master Prime, CP.3, Super Speed, Standard Speed, Ultra Prime, Planar, Planar f/0.7 |
| Cooke | S7/i, S4/i, Anamorphic/i, Panchro/i Classic, Speed Panchro |
| Panavision | Primo, Primo 70, Anamorphic, C Series, E Series, Sphero, Ultra Speed |
| Leica | Summilux-C, Summicron-C, Thalia |
| Canon | Sumire Prime, CN-E, K35 |
| Sony | CineAlta |
| Sigma | Cine, High Speed |
| Angénieux | Optimo, EZ, HR |
| Vintage | Bausch & Lomb Super Baltar, Bausch & Lomb Baltar, Todd-AO, Hawk V-Lite, Hawk V-Plus, Vintage Anamorphic, Vintage Spherical |
| Hasselblad | HC, V |
| IMAX | IMAX Optics |
Mount types: PL, LPL, XPL, Panavision, Mitchell BNC, IMAX
Focal length range: 8mm – 1200mm
Aspect ratios: 1.33:1, 1.37:1, 1.43:1, 1.66:1, 1.78:1, 1.85:1, 1.90:1, 2.20:1, 2.35:1, 2.39:1, 2.76:1
31 film stocks spanning the entire history of motion picture photography:
Full Film Stock List
| Category | Stocks |
|---|---|
| Kodak Vision3 (current) | 500T 5219, 250D 5207, 200T 5213, 50D 5203 |
| Kodak Vision2 | 500T 5218, 200T 5217 |
| Kodak Vision | 500T 5279, 320T 5277 |
| Black & White | Kodak Double-X 5222, Kodak Tri-X, Eastman Double-X, Eastman Plus-X |
| Historic Color | Eastman 5247, 5293, 5294, 5250, 5254, Technicolor, Kodachrome |
| Fuji | Eterna 500T, Eterna 250D, Eterna 250T |
| 65mm / 70mm | Kodak 65mm 500T, 65mm 250D, 65mm 200T |
| IMAX | 500T, 250D |
24 lighting sources with era-appropriate constraints:
| Category | Sources | Era Restriction |
|---|---|---|
| Natural | Sun, Moon, Overcast, Window, Skylight | — |
| Classic | Tungsten, Carbon Arc, Mercury Vapor, Sodium Vapor | Carbon Arc: 1895–1960s |
| Modern | HMI, Kino Flo, LED, Fluorescent | HMI: 1972+, Kino Flo: 1987+, LED: 2002+ |
| Practical | Practical Lights, Candle, Firelight, Neon, Television, Computer Screen | Neon: 1927+ |
| Mixed | Mixed, Available Light | — |
20 lighting styles: High Key, Low Key, Soft, Hard, Naturalistic, Expressionistic, Chiaroscuro, Rembrandt, Split, Rim, Silhouette, Motivated, Practical Motivated, Available Light, High Contrast, Controlled, Flat, Dramatic
16 movement equipment types with physics-based constraints:
| Equipment | Notes |
|---|---|
| Static | Tripod-mounted, no movement |
| Handheld | Limited to Ultra Light and Light cameras |
| Shoulder Rig | All weight classes with fatigue warnings |
| Steadicam | Smooth tracking, most weight classes |
| Gimbal | Electronic stabilization, light cameras only |
| Dolly / Dolly Track | Ground-level tracking shots |
| Slider | Short-range smooth movements |
| Crane | Full vertical and horizontal range |
| Jib | Limited to Crane Up/Down, Arc, Static |
| Technocrane | Precision remote-controlled crane |
| Motion Control | Repeatable programmed moves |
| Drone | Aerial, limited movements, light cameras only |
| Cable Cam | Suspended cable system |
| Car Mount | Vehicle-mounted for driving shots |
| SnorriCam | Body-mounted, actor-facing |
31 movement types: Static, Pan, Tilt, Pan & Tilt, Track In/Out, Push In, Pull Back, Truck Left/Right, Crab, Arc, Crane Up/Down, Boom Up/Down, Dolly Zoom, Push-Pull, Zoom In/Out, Crash Zoom, Roll, Whip Pan/Tilt, Follow, Lead, Orbit, Reveal, Fly Through
6 timing options: Static, Very Slow, Slow, Moderate, Fast, Whip Fast
12 shot sizes: Extreme Wide Shot (EWS), Wide Shot (WS), Medium Wide Shot (MWS), Medium Shot (MS), Medium Close-Up (MCU), Close-Up (CU), Big Close-Up (BCU), Extreme Close-Up (ECU), Over the Shoulder (OTS), POV, American Shot, Italian Shot
79 composition styles including: Rule of Thirds, Centered, Symmetrical, Golden Ratio, Golden Spiral, Dynamic Symmetry, Leading Lines, Frame Within Frame, Negative Space, Depth Layering, and many more.
81 mood options across positive, neutral, tension, dark, and intense categories.
13 color tones: Warm Saturated/Desaturated, Cool Saturated/Desaturated, Neutral Saturated/Desaturated, Monochrome, Sepia, Teal & Orange, Cross Processed, Bleach Bypass, High/Low Contrast B&W
┌─────────────────────────────────────────────────────────┐
│ Director's Console │
├─────────────────────┬─────────────────┬─────────────────┤
│ Storyboard Canvas │ CPE Engine │ Orchestrator │
│ React + TypeScript │ Python/FastAPI │ Python/FastAPI │
│ Port 5173 │ Port 9800 │ Port 9820 │
├─────────────────────┴─────────────────┴─────────────────┤
│ │
│ Frontend ←──REST──→ CPE Backend ←──Manifests──→ Orchestrator
│ │ │ │ │
│ │ │ │ │
│ └────WebSocket────────┴────Direct REST──→ ComfyUI Nodes
│ │
├───────────────────────────────────────────────────────────┤
│ Storage: Project files on local/NAS filesystem │
│ Credentials: %APPDATA%/CinemaPromptEngineering/ (encrypted)│
└───────────────────────────────────────────────────────────┘
Key Communication Patterns:
- Frontend → ComfyUI: Direct REST API calls and WebSocket for generation and progress
- Frontend → CPE Backend: REST API for prompt generation, validation, presets, settings, credentials
- Frontend → Orchestrator: REST API for job groups, backend management, project scanning
- CPE → Orchestrator → ComfyUI: JSON manifests for distributed rendering
# Backend with hot-reload cd CinemaPromptEngineering python -m uvicorn api.main:app --host 0.0.0.0 --port 9800 --reload # Frontend with HMR cd CinemaPromptEngineering/frontend npm run dev # Orchestrator with hot-reload cd Orchestrator python -m uvicorn orchestrator.api:app --host 0.0.0.0 --port 9820 --reload
# All tests python -m pytest tests/ -v # Specific test files python -m pytest tests/test_cpe_api.py -v python -m pytest tests/test_cinema_rules.py -v
# Build frontend cd CinemaPromptEngineering/frontend npm run build # Build standalone executable (Windows) cd CinemaPromptEngineering .\build_installer.ps1
| Layer | Technology |
|---|---|
| Frontend | React 18, TypeScript, Vite 5, Zustand, TanStack Query v5 |
| Backend | Python 3.10+, FastAPI, Pydantic v2, httpx, aiohttp |
| Rendering | ComfyUI (direct WebSocket) |
| Storage | Local filesystem, SQLite (encrypted credentials) |
| Logging | Loguru |
Features:
- Intelligent Parameter Disable Propagation: When disabling an image or Lora input, all downstream nodes that depend on it are now automatically disabled. This prevents ComfyUI errors when bypassing inputs that have downstream dependencies (e.g., LoadImage → DWPreprocessor → ControlNetApply → KSampler chain).
Bug Fixes:
- Path Normalization: Fixed Windows backslash handling in model paths. Paths like
Qwen\model.safetensorsare now correctly converted toQwen/model.safetensorsfor Linux compatibility. - Ollama Integration: Fixed 405 error by appending
/api/chatto the endpoint. Model names withollama:prefix are now stripped before sending to the API. Embedding models are filtered from the chat model list. - Settings Persistence: Fixed model ID parsing to correctly handle colons in model names (e.g.,
ollama:llama3:latest).
This project is proprietary software. All rights reserved.
Director's Console — Project Eliot
Because every frame deserves the precision of real cinematography.