#!/usr/bin/env bash # Download the kingjones Qwen3.8-27B-ROCmFPX-Q8_0-AGENT payload for # frank-default-large from HuggingFace into /home/dank/models/.../Q8_0-AGENT. # # Uses the token in ~/.cache/huggingface/token so the ~28 GB main file does not # hit the anonymous 10 GB/30 min rate limit. Run on Dankclaw. # # bash scripts/download-q8agent.sh # bash scripts/download-q8agent.sh --verify-only set -euo pipefail REPO="kingjones777/Qwen3.8-27B-ROCmFPX-Q8_0-AGENT-GGUF" DIR="/home/dank/models/kingjones-Qwen3.8-27B-ROCMFPX-Q8_0-AGENT" EXPECTED=( "Qwen3.8-27B-Q8_0_ROCMFPX_AGENT.gguf:28214425952" "mmproj-Qwen3.8-27B-BF16.gguf:931145888" "mtp-Qwen3.8-27B-Q4_0.gguf:1680271648" ) cd -- "$(dirname -- "$0")/.." main() { local mode="download" [[ "${1:-}" == "--verify-only" ]] && mode="verify" mkdir -p "$DIR" cd "$DIR" local token token="$(cat "$HOME/.cache/huggingface/token")" [[ -n "$token" ]] || { echo "no HF token in $HOME/.cache/huggingface/token" >&2; exit 1; } dl() { local f="$1" curl -fsSL -C - -o "$f" --retry 5 --retry-delay 3 --retry-max-time 3600 \ -H "Authorization: Bearer $token" \ "https://huggingface.co/$REPO/resolve/main/$f" echo " done: $f ($(du -h "$f" | cut -f1))" } if [[ "$mode" == "download" ]]; then echo "downloading $REPO into $DIR" dl "Qwen3.8-27B-Q8_0_ROCMFPX_AGENT.gguf" dl "mmproj-Qwen3.8-27B-BF16.gguf" dl "mtp-Qwen3.8-27B-Q4_0.gguf" fi echo "verifying sizes" local ok=1 f want act for entry in "${EXPECTED[@]}"; do f="${entry%%:*}"; want="${entry##*:}" act="$(stat -c%s "$f")" if [[ "$act" -eq "$want" ]]; then echo " OK $f ($act bytes)" else echo " BAD $f ($act bytes, want $want)" >&2 ok=0 fi done [[ "$ok" -eq 1 ]] || exit 1 echo "all files present and sized correctly" } main "$@"