#!/usr/bin/env bash # Download kingjones777/Qwen3.8-27B-Uncensored-ROCmFP4-STRIX-MTP-GGUF for # frank-dragoon (Dankclaw iGPU). Public repo — no auth header, and never a token # on the command line (it is world-readable in /proc//cmdline). # # The payload is the repo's Q6 AGENT rung: # * Qwen3.8-27B-Uncensored-Q6_0_ROCMFPX_AGENT.gguf — ftype 114, 23.15 GiB. # Q6_0_ROCMFPX tensor type (102) + the AGENT routing, which keeps the # output-head and attention tensors at plain Q8_0 — the variant the card # names for MTP serving ("Take Q6 AGENT (114) if you want protected # heads"). Like every ROCmFPX file it loads on nothing but the fork. # # The other two files frank-dragoon needs are NOT re-downloaded: # * mtp-Qwen3.8-27B-Q4_0.gguf — the uncensored repo redistributes the # ALIGNED repo's draft head byte for byte (identical Hub LFS oid # 051a1764…), so it is hardlinked out of the aligned payload dir when that # dir holds the verified bytes, and fetched from this repo otherwise. # * mmproj-Qwen3.8-27B-BF16.gguf — this repo ships a Q8_0 projector; the # fleet keeps the BF16 one, which is the projector that was verified 4/4 # on spatial ground truth on this host. Hardlinked the same way, fetched # from the ALIGNED repo if it is not on disk. # # Fresh downloads, no resume (`curl -C -` once produced an oversized file on a # 31 GiB payload); -f/--fail-with-body so an HTTP 401 is not a success, then # byte count and the Hub LFS sha256. Idempotent: complete files are skipped. # # Usage: # scripts/download-frank-dragoon-kingjones-uncensored.sh [DEST_DIR] [--verify-only] set -euo pipefail REPO="kingjones777/Qwen3.8-27B-Uncensored-ROCmFP4-STRIX-MTP-GGUF" ALIGNED_REPO="kingjones777/Qwen3.8-27B-ROCmFP4-STRIX-MTP-GGUF" BASE="https://huggingface.co/${REPO}/resolve/main" ALIGNED_BASE="https://huggingface.co/${ALIGNED_REPO}/resolve/main" SOURCE_DIR="${SOURCE_DIR:-/home/dank/models/kingjones-Qwen3.8-27B-ROCmFP4-STRIX-MTP}" 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/kingjones-Qwen3.8-27B-Uncensored-ROCmFP4-STRIX-MTP}" # name bytes sha256 base_url may_link — may_link=1 means the same bytes may # already exist in SOURCE_DIR (hardlink them instead of re-fetching). FILES=( "Qwen3.8-27B-Uncensored-Q6_0_ROCMFPX_AGENT.gguf 24856607008 e966deb3d1a5a1b9ca7765126292f2d822f3dccdedb3b4872e673dec1cddc199 $BASE 0" # The draft head is redistributed byte-identical by both repos; the BF16 # projector only exists in the aligned repo. "mtp-Qwen3.8-27B-Q4_0.gguf 1680271648 051a1764cff8c4f3ee6ae8b00593a0364c7539c67fa50ffc58f3f96509fca38e $BASE 1" "mmproj-Qwen3.8-27B-BF16.gguf 931145888 de2a49866988ea272c43dc2a43ee2662c25725a717ca5b9059ea420a97f53fe8 $ALIGNED_BASE 1" ) matches() { # matches FILE SIZE SHA — byte count AND LFS sha256 [[ -f "$1" ]] && [[ "$(stat -c%s "$1")" == "$2" ]] \ && sha256sum -c --quiet <(printf '%s %s\n' "$3" "$1") } mkdir -p "$DEST" status=0 fetch() { # fetch NAME SIZE SHA BASE_URL local name="$1" size="$2" sha="$3" url="$4" f="$DEST/$1" echo "FETCHING $name" curl -fsSL --fail-with-body -o "$f.part" "$url/$name" mv "$f.part" "$f" if [[ "$(stat -c%s "$f")" != "$size" ]]; then echo "SIZE FAIL $name ($(stat -c%s "$f") != $size)" return 1 fi if ! sha256sum -c --quiet <(printf '%s %s\n' "$sha" "$f"); then echo "SHA FAIL $name" return 1 fi echo "VERIFIED $name" } for entry in "${FILES[@]}"; do read -r name size sha url may_link <<<"$entry" f="$DEST/$name" if matches "$f" "$size" "$sha"; then echo "OK $name" continue fi if (( VERIFY_ONLY )); then echo "MISSING $name" status=1 continue fi # Shared bytes: prefer the local copy (same filesystem, so a hardlink costs # nothing) over re-downloading gigabytes that hash identically. if [[ "$may_link" == 1 && -n "${SOURCE_DIR:-}" ]] && matches "$SOURCE_DIR/$name" "$size" "$sha"; then echo "LINKING $name from $SOURCE_DIR" ln -f "$SOURCE_DIR/$name" "$f" 2>/dev/null || cp -f "$SOURCE_DIR/$name" "$f" if matches "$f" "$size" "$sha"; then echo "VERIFIED $name" continue fi echo "SHA FAIL $name (linked copy)" status=1 continue fi if ! fetch "$name" "$size" "$sha" "$url"; then status=1 fi done if (( status == 0 )); then echo "DOWNLOAD_DONE $DEST" else echo "DOWNLOAD_FAILED $DEST" >&2 fi exit "$status"