Hollywood is a local production orchestrator on a Mac Studio. A producer turns requests into jobs; a durable engine runs media adapters; editing and review turn outputs into candidates. The engines and models do the generation. Hollywood connects the work.
Verified against the deployed implementation and the 12 October model tests. This is a public architecture snapshot, not a live operations dashboard or a claim that every path is production-ready.
The system in six steps
The main path is request → plan → queue → adapter → artifact → review. Direct tool calls can enter at validation and submission without asking the producer to plan.
Clients
Private browser workspace, voice input, timeline editor, and coding agents using MCP. Public pages show demonstrations and collect private feedback.
Producer & routing
A resident local language model proposes bounded operation plans. Schemas validate arguments and asset references. Local generation is the router’s default.
Durable job engine
SQLite stores projects, messages, saved plans, jobs, dependencies and asset records. Request keys prevent duplicate submissions.
Execution adapters
Child processes run the appropriate Python, MLX, Metal, native or command-line tool. Managed neural work shares an exclusive media GPU lease.
Media & assembly
Files stay in the local media/state directories. Asset records connect them to projects and jobs. FFmpeg and the timeline/Blender path assemble exports.
Evidence & review
Decode, timing and signal checks establish technical facts. Model advisers and human review assess candidates. Release controls apply to supported guarded routes.
Public website ≠ production backend
This website serves public pages and selected media on Vercel, with a separate private-feedback endpoint. Suggestions are saved in private storage and sent to Justin in Slack. It cannot submit jobs, access the media library, query private knowledge, or operate the Studio. The production service stays on a private network.
Follow a request
Choose a workflow to see which pieces cooperate and where the current limits sit.
Dialogue film
Brief and script → character references and voice stems → generated shots → lip-sync pass → compositing and timeline assembly → full-film review.
This path currently combines registered operations with project-specific scripts and isolated experiments. Revision 2 still fails lip-sync and ending-voice continuity; later tool tests have not produced a corrected full film.
The pieces and their contracts
Module names describe the current implementation. The linked public repository is an older source-available snapshot; it does not contain every current module or provide a turnkey copy of this build.
Client and API boundary
service.py serves the private browser workspace through FastAPI. department.py exposes CLI and MCP tools. Tool clients read current service capabilities rather than trusting a long-lived client’s cached imports. Browser/API requests use project-owned asset IDs; trusted local adapters resolve those to files.
Browser microphone input is transcribed by CPU Whisper. Device system speech supplies conversational replies. Those interaction voices are separate from the voices generated for a film. Closing the browser does not cancel persisted production jobs.
Producer, story and tool selection
producer.py asks the resident local language model for a bounded JSON plan and validates it against available operations. Saved plans and request keys let interrupted submission resume. Story planning/editing modules retain story context; they do not guarantee a coherent or funny final film.
toolbox_router.py chooses among tool routes. Its default allow_cloud=false excludes hosted recommendations and fallbacks from that router. Hosted adapters still exist as explicit operations: this default is not a network firewall or a claim that no cloud-capable code exists.
Job engine and resource scheduling
engine.py is the central job engine; job_task.py executes an individual job in a child process. The engine persists dependencies, status, results and errors in SQLite with WAL enabled. Process groups support cancellation.
Two CPU lanes and one neural lane allow CPU tasks to proceed while a media model runs. A shared file lock coordinates managed GPU media work with Imagine. The resident language model remains available alongside it. This is admission control for cooperating tools, not an operating-system scheduler for arbitrary processes.
Interrupted active jobs can rerun under their existing IDs and replace partial outputs. Completed asset registration is idempotent. Recovery does not mean every model resumes from its last diffusion step.
Model and engine adapters
Adapters validate inputs, construct a bounded invocation and collect outputs. Separate runtimes accommodate incompatible Python, Torch, MLX and native dependencies without changing the common job API.
Image work integrates with Imagine, whose own queue remains authoritative; request identifiers and cancellation propagate across the boundary. Video paths include LTX, Wan and Comfy-based operations. Audio paths include local speech, voice cloning, music, separation and transcription. FFmpeg handles many media transforms. Each adapter’s supported role and evidence must be checked separately.
Assets, timelines and film assembly
SQLite stores metadata and relationships; media bytes live in local files. The current working models, runtimes and project media are kept on Studio’s internal storage. New takes preserve their input references rather than overwriting source media.
timeline.py and timeline_store.py support saved editing state and the Blender video-sequence export path. FFmpeg performs cutting, compositing, audio processing and encoding elsewhere in the stack. The Maria film also used project-specific assembly scripts; its construction is not yet one fully automated, quality-qualified pipeline.
Knowledge retrieval
hollywood_knowledge.py retrieves indexed code and documentation through Hollywood’s private Milvus-backed knowledge layer. Results carry source and freshness information. They help discover implementations and constraints; they are not executable authority or proof that a downloaded model works.
Model weights are filesystem artifacts, not models “pulled from Milvus.” The knowledge service and private source material are not exposed through this public page.
Review, release and deployment
generic_review.py and the production-review/control modules separate technical verification, observed defects and owner acceptance. Generated-shot briefs can describe subject, visual, temporal and audio requirements. Specialized scene checks have narrower evidence; they are not a universal aesthetic judge.
Supported guarded exports and broadcast starts check review eligibility. Raw files can still be copied outside those routes, so the guard is not a universal publication barrier. The public demonstration was deliberately published as a work in progress.
Studio deployment uses a reviewed source snapshot, deployment locking, an idle-job barrier, backup and health/provenance readback. The public website has a separate GitHub-to-Vercel deployment. Updating this explanation does not restart generation services.
What is integrated—and what is not
RUNNING INFRASTRUCTURE
The shared production foundation
Private API and MCP access, persistent projects and jobs, capability reporting, local producer, managed GPU coordination, media registration, timeline tools and prepared broadcast machinery.
An operation being registered says it is callable. Its qualification remains tied to the specific tested inputs and role.
ISOLATED LOCAL PROOFS
Successful experiments need adapters
LatentSync repairs, LivePortrait trials, Unreal facial solves, Audio2Face coefficients, RIFE and SeedVR tests produced concrete evidence outside a single polished workflow.
These proofs are not all selectable production tools. DubIt changed the requested dialogue; SeedVR’s tested settings changed character features. Neither result should be silently promoted.
The seams that still need work
Persistent cast and performance
References help, but independent generated shots still drift. Reusable character rigs, a stable set, retargeted facial animation and authored body acting are incomplete. An Unreal facial solve is not a finished Maria or Genie.
Audio as the timing authority
Approved voice stems need to drive shot timing and mouth animation consistently. Reusing unmatched ending audio broke continuity. The next film revision must lock character voices before rebuilding the picture.
From experiment to supported tool
A reusable adapter needs validated inputs, isolated dependencies, GPU admission, cancellation, logs, asset registration and a representative regression clip. A command that runs once is insufficient.
A review process that catches the actual defect
Decoding and transcript accuracy passed while lip sync and speaker identity remained poor. Full-film audiovisual review, timestamped defects and explicit acceptance must stay separate from those technical checks.
Pick one boundary, show the failure, and bring back a small reproducible improvement. Useful contributions include a stable voice-reference contract, audio-to-rig mapping, a Mac-compatible adapter, or a review test that detects a visible defect the current checks miss.
Include the operation, input assumptions, runtime versions, hardware, output clip and failure behavior. Distinguish queue wait, model inference and full pipeline time; distinguish physical memory from a framework allocation counter.