#!/usr/bin/env bash # Download the frank-secondary payload for llama.cpp on the RTX 3090: # ajgazin/Swift-1.5-Qwen3.8-27B-Uncensored-Dynamic-MTP-GGUF:RCO-IQ3_XXS # **with the MTP head in the file** (the -mtp variant), plus the # PUBLISHER's OWN vision projector (mmproj-BF16.gguf, same repo). Public # repo — no auth header, and never a token on the command line (it is # world-readable in /proc//cmdline). # # Fresh downloads, no resume (`curl -C -` once produced a 213 MB oversized # file on a 31 GiB payload); -f/--fail-with-body so an HTTP error is not a # success, then byte count and sha256. This repo is on Xet storage, so # the Hub tree/blob APIs expose no LFS oid: the sha256 values below were # computed locally after the first verified fetch (byte counts match the # Hub's declared sizes). Idempotent: complete files are skipped. The # projector is stored under a self-documenting dest name; the URL name # and sha stay pinned in the table below. # # 2026-10-06 (Frank, evening): the payload moved to the UNCELERSED # Swift-1.5-Qwen3.8-27B at RCO-IQ3_XXS (1.56 GiB lighter than the # IQ3_S-mtp it replaced; the lighter quant funds the MTP draft ctx plus # the second 131,072 slot). Rollback payload stays on disk: # /home/dank/models/Swift15-IQ3S/ (the IQ3_S-mtp that was live until this # swap); earlier payloads Ornith-Q8/ and MiMo-Q6K/ as well. Their # re-fetch recipes are in git history (predecessors of this script). # # Usage: # scripts/download-frank-secondary.sh [DEST_DIR] [--verify-only] set -euo pipefail DEST="" VERIFY_ONLY=0 for arg in "$@"; do case "$arg" in --verify-only) VERIFY_ONLY=1 ;; *) DEST="$arg" ;; esac done DEST="${DEST:-/home/dank/models/Swift15-UncIQ3XXS}" # repo | hub-name | dest-name | bytes | sha256 (computed locally; Xet repo) FILES=( "ajgazin/Swift-1.5-Qwen3.8-27B-Uncensored-Dynamic-MTP-GGUF|RCO/Swift-1.5-Qwen3.8-27B-Uncensored-Dynamic-MTP-RCO-IQ3_XXS.gguf|Swift-1.5-Qwen3.8-27B-Uncensored-Dynamic-MTP-RCO-IQ3_XXS.gguf|10442827392|e13d3e7400b6c7f980ebd30c0edd6be43eb1865b50be8562a9db042706c7d803" "ajgazin/Swift-1.5-Qwen3.8-27B-Uncensored-Dynamic-MTP-GGUF|mmproj-BF16.gguf|mmproj-BF16.gguf|931145888|19acd7fcf4ee504328566eddf0f8e603ef853a205b4830209d2a4908213abdea" ) mkdir -p "$DEST" status=0 for entry in "${FILES[@]}"; do IFS='|' read -r repo hubname destname size sha <<<"$entry" url="https://huggingface.co/${repo}/resolve/main/${hubname}" f="$DEST/$destname" have=0 if [[ -f "$f" ]] && [[ "$(stat -c%s "$f")" == "$size" ]]; then if sha256sum -c --quiet <(printf '%s %s\n' "$sha" "$f"); then have=1 fi fi if (( have )); then echo "OK $destname" continue fi if (( VERIFY_ONLY )); then echo "MISSING $destname" status=1 continue fi echo "FETCHING $destname (from $repo)" tmp="$f.part" curl -fsSL --fail-with-body -o "$tmp" "$url" mv "$tmp" "$f" if [[ "$(stat -c%s "$f")" != "$size" ]]; then echo "SIZE FAIL $destname ($(stat -c%s "$f") != $size)" status=1 continue fi if ! sha256sum -c --quiet <(printf '%s %s\n' "$sha" "$f"); then echo "SHA FAIL $destname" status=1 continue fi echo "VERIFIED $destname" done if (( status == 0 )); then echo "DOWNLOAD_DONE $DEST" else echo "DOWNLOAD_FAILED $DEST" >&2 fi exit "$status"