bug: muse clone stuck on fetch/mpack "server busy" (cold have=0 never completes)
Issue draft — muse clone stuck on fetch/mpack “server busy” (pack never ready)
Target repo: gabriel/muse (and/or MuseHub staging ops)
Reporter: aaronrene
Date: 2026-07-13
Client: muse 0.2.0.dev4 (installed via https://staging.musehub.ai/install.sh)
Hub: https://staging.musehub.ai
Summary
Cold muse clone against staging never completes. Auth, hub ping, and muse ls-remote succeed. The clone loop repeatedly POSTs /{owner}/{slug}/fetch/mpack with have=0 and prints “remote preparing fetch data (server busy)” until --retry-timeout expires. No objects are written locally.
This blocks collaborators who need a fresh Muse checkout of large or any repo on this machine (reproduced on both aaronrene/knowtation and gabriel/muse).
What works
| Check | Result |
|---|---|
muse auth whoami |
Handle aaronrene, hub staging.musehub.ai |
muse hub ping --hub https://staging.musehub.ai |
HTTP 200 |
muse ls-remote https://staging.musehub.ai/aaronrene/knowtation |
Returns main + other branch tips |
muse clone --dry-run … |
Succeeds (no network pack assembly) |
What fails
muse clone --depth 1 --branch main --retry-timeout 300 \
https://staging.musehub.ai/aaronrene/knowtation ~/knowtation-muse
Observed (representative):
[transport] POST https://staging.musehub.ai/aaronrene/knowtation/fetch/mpack want=2 have=0
⏳ remote preparing fetch data (server busy, attempt N); retrying in 30s …
…
❌ Remote still preparing clone data after 300s — try again shortly.
Same pattern for:
muse clone --depth 1 --branch main --retry-timeout 90 \
https://staging.musehub.ai/gabriel/muse /tmp/muse-tiny-clone
(want=3 have=0, same busy loop.)
Also reproduced earlier with --retry-timeout 1200 (20 minutes) on aaronrene/knowtation — never recovered.
Client transport note (likely related)
Installed client transport (…/site-packages/muse/core/transport.py):
- Uses
fetch/mpackonly (fetch/presignstring absent). - Staging MuseHub tree for
gabriel/muserecently shows a commit titled approximately:
“fix: try fetch/presign before fetch/mpack to avoid Cloudflare…”
That fix does not appear in the0.2.0.dev4sdist frominstall.sh.
Hypothesis A: hub pack assembly / indexing for cold have=0 fetches is stuck or never finishes (503 + Retry-After forever).
Hypothesis B: client should fall back to fetch/presign (per-object GETs) but shipped staging CLI never tries that path, so clones die on mpack prep / Cloudflare limits.
Expected
muse clone of a public or authorized repo completes within a normal budget (or returns a hard, actionable error with request id), and writes a usable .muse/ with objects.
Ask
- Confirm whether staging
fetch/mpackpack prep is healthy for cold clones (have=[]). - Publish a staging CLI that includes presign-before-mpack (or document how to force
fetch/presign). - If this is known 503-while-indexing: surface a terminal error / request id after N retries instead of an indefinite “busy” loop.
Non-goals / not the cause
- Not an auth/handle problem (ls-remote + ping work).
- Not missing mnemonic / wrong machine password.
- Not specific to one private repo (fails on
gabriel/musetoo).
Workarounds for operators (until fixed)
- Copy an existing
.muse/(or full Muse checkout) from a machine that already has objects. - Do not hammer clone (rate limits / Cloudflare 429 on unauthenticated probes).