unslothai/unsloth · warning · SttModelIdError
Another dictation model ('{self._model_id}') is still downlo
Error message
Another dictation model ('{self._model_id}') is still downloading; wait for it to finish. What it means
SttModelIdError raised in the mtmd downloader: a download thread is alive for a DIFFERENT model_id, so the new request cannot proceed. The sidecar supports exactly one concurrent download; requesting another curated model while one is active names the conflicting model in the message.
Source
Thrown at studio/backend/core/inference/stt_mtmd_sidecar.py:407
return None
def start(
self,
model_id: str,
hf_token: Optional[str] = None,
) -> None:
model_id = resolve_mtmd_model_id(model_id)
hub_cache = _capture_stt_hub_cache()
with self._lock:
if self._thread is not None and self._thread.is_alive():
if self._model_id == model_id:
# Joining a cancelling run would silently download nothing.
if not self._cancelled:
return
raise SttModelIdError(
f"'{model_id}' is still cancelling; try again in a moment."
)
raise SttModelIdError(
f"Another dictation model ('{self._model_id}') is still "
"downloading; wait for it to finish."
)
self._model_id = model_id
self._error = None
self._total_bytes = None
self._selected_files = ()
self._revision = None
self._hub_cache = hub_cache
self._cancelled = False
self._process = None
thread = threading.Thread(
target = self._run,
args = (model_id, hf_token),
daemon = True,
)
self._thread = thread
thread.start()View on GitHub (pinned to 203007d190)
Solutions
- Wait for the in-flight download of the named model to finish (or cancel it), then retry.
- Cancel the active download first if switching priority: cancel, wait for the thread to die, then start the new one.
- In the UI, show per-model progress and disable Download on other models while one is active.
Defensive patterns
Strategy: validation
Validate before calling
with downloader._lock: # prefer a public status accessor if exposed
if downloader._thread is not None and downloader._thread.is_alive():
show_active_download(downloader._model_id)
return
downloader.download(model_id) Try / catch
try:
downloader.download(model_id)
except SttModelIdError as exc:
if "still downloading" in str(exc):
surface_wait_message(exc) # or offer cancel of the active download Prevention
- Design the UI for one download at a time; disable other Download buttons while active.
- Offer cancel-then-switch as an explicit flow instead of a second start call.
- Show per-model progress so users see why a second download is refused.
When it happens
Trigger: Calling download('B') while self._thread is alive and self._model_id == 'A' — e.g. clicking Download on a second model card in Settings before the first finishes.
Common situations: User queues multiple model downloads from a list UI; a previous download hangs (slow network) and the user tries another model; stale thread from a download that never terminated.
Related errors
- Another GGUF dictation model ('{self._model_id}') is still d
- '{model_id}' is still cancelling; try again in a moment.
- Another dictation model ('{self._model_id}') is still downlo
- '{model_id}' is still cancelling; try again in a moment.
- STT model '{model}' is not a curated llama.cpp dictation mod
AI-assisted analysis of unslothai/unsloth@203007d190 (2026-08-15).
Data as JSON: /api/errors/cd3521330ae9c5ce.
Report an issue: GitHub.