Locara
← 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
2.8 GB of 4.9 GB·14.2 MB/s·2m 30s left
Whisper Base.en74M · FP16 · 150 MB
Ready
Ready to use · 150 MB
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.