← All components AI affordances
ModelDownloader
Standalone model-fetch surface. Identity + hash + size + progress + throughput + ETA + Download/Cancel/Retry.
Inspired by Ollama download UI, Hugging Face download dialogs, Mac App Store install pane.
Preview
What it looks like.
Qwen 2.5 7B Instruct (Q4_K_M)7B · Q4_K_M · 4.9 GB
Downloading
sha256:6a1a2eb6d15622bf3c96857206351ba97e1af16c30d7a74ee38970e434e9407e
Whisper Base.en74M · FP16 · 150 MB
Ready
Usage
Drop it into your app.
import { ModelDownloader } from '@locara/components'
<ModelDownloader
label="Qwen 2.5 7B Instruct (Q4_K_M)"
detail="7B · Q4_K_M · 4.9 GB"
hash="sha256:6a1a2eb6d15622bf3c96857206351ba97e1af16c30d7a74ee38970e434e9407e"
bytesTotal={4_900_000_000}
bytesDone={2_800_000_000}
bytesPerSec={14_200_000}
state="downloading"
onCancel={() => models.cancel(id)}
/>
Or copy the source into your repo:
locara add model-downloader
Design notes
Why it works this way.
Designed for the 'this app needs these models — install them now' flow. Pair with ModelSelector when the model is already chosen but not yet fetched. The content hash is shown in monospace because it's a load-bearing user-visible fact — Locara content-addresses every model so users can verify integrity at a glance.