Run every media model in its own runtime - #39
Merged
Merged
Conversation
Each media container now serves exactly one model: the launcher refuses to start without LLOOM_MEDIA_MODEL and no longer defaults to the aggregate /opt/lloom-models root. Re-applying a recipe moves a model off a legacy shared comfyui-media runtime to its own, and drops the shared runtime and backend once no model references them. Recipes pin the rebuilt image. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # package.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Public main installs all 14 ComfyUI media recipes into one shared
lloom-comfyui-mediacontainer. That hides the individual models from LLooM's admission, eviction and memory accounting. This PR gives every media model its own runtime.codex/isolated-media-runtimes-20260924). Each of the 14 ComfyUI recipes gets its own runtime, container, data volume and port. Only that model's checkpoint, encoder, VAE and adapter files are bind-mounted, read-only. The bridge serves exactly theLLOOM_MEDIA_MODELit was started with, and refuses an empty or unknown selection. Memory estimates are now per model; FLUX.2 klein, for example, drops from 95 GB to 20 GB.build/launch.pyrefuses to start withoutLLOOM_MEDIA_MODELand no longer defaults to the aggregate/opt/lloom-modelsroot.comfyui-mediaruntime moves that model to its own runtime. The shared runtime and backend are dropped once no model references them. Before this, setup silently kept the shared route.source-381d99b…).codex/lyria-music-adapter, which was stacked on the isolation commit).Test plan
npm run test:unit(full chain, pass)node test/comfyui-media.test.mjs, including a new legacy shared → per-model migration casescripts/test-comfyui-media.py(209 pass, including the new launcher refusal test)node --test test/audio-providers.test.mjsnode scripts/check-package.mjslloom setup --recipe <id> --additive --apply, then remove the orphaned shared container🤖 Generated with Claude Code