mmaccrate/model-cartridges
Model Cartridges
Model Cartridges is a browser-local AI demo built around one shared Qwen3.5 2B model and smaller GGUF LoRA adapters that can be switched at runtime:
one shared base model
├── Base Console
├── Weather Radio LoRA
└── Stagehand LoRAThe base model stays loaded in the browser while the application changes the active cartridge. Weather Radio and Stagehand demonstrate the reusable runtime architecture; they are not the definition of the product.
What this demonstrates
This pattern is useful for private or browser-local AI applications that need dynamically loaded, task-specific capabilities:
- keep one base model in the user’s browser;
- load a smaller domain- or customer-specific LoRA when needed;
- swap capabilities without downloading a complete model for every experience;
- keep application boundaries around model output instead of treating free-form text as trusted control data.
Runtime
Verified project runtime components:
- Qwen3.5 2B Q4KM GGUF base model
- GGUF LoRA adapters
llama.cpp- `wllama-lora`
- WebAssembly
- WebGPU
- OPFS/browser cache where supported by the browser runtime
Inference runs locally in the browser. Weather Radio separately retrieves forecast data from Open-Meteo; Stagehand applies only actions accepted by its authored scene contract.
Try it
- Open the embedded demo below.
- Choose Load local AI in the canonical app.
- Try Base Console, Weather Radio, and Stagehand from the cartridge bay.
- The first model load downloads the shared base and caches it in the browser.
If your browser blocks the nested runtime or does not provide the required WebGPU/WASM features, use Launch Model Cartridges to open the canonical deployment directly.
Links
- Launch the canonical Model Cartridges demo
- Technical field report: I Made LoRA Adapters Hot-Swappable in the Browser
- MacCrate.ai source on GitHub
- `wllama-lora` source
- Hugging Face LoRA repository
- Base model: Unsloth Qwen3.5 2B GGUF
Source of truth
This Space contains only a discovery and distribution wrapper. It does not copy, fork, bundle, or separately deploy the Model Cartridges application. The embedded experience is always loaded from the canonical MacCrate deployment, so changes to that deployment are reflected here automatically.
Embedding note
The wrapper intentionally does not set COOP/COEP/CORP headers. Those headers belong on the canonical application and must not be imposed by the outer Hugging Face document, because a restrictive outer require-corp policy blocks the cross-origin canonical iframe before it can load. The canonical deployment currently provides its own browser-local isolation headers. If a browser or deployment policy still blocks nested local inference, use the direct canonical link above; no second application is created when embedding is restricted.
License and model attribution
See the Qwen3.5 2B model card and license and the adapter repository for model and adapter terms.
