Skip to main content

EMBEDDED_SCRIPT

Constant EMBEDDED_SCRIPT 

Source
pub const EMBEDDED_SCRIPT: &str = "#!/bin/bash\nset -euo pipefail\n\n# This script runs inside an HF Job container.\n# It clones mesh-llm, builds the splitter, splits the model, validates, and publishes.\n#\n# Environment variables (set by mesh-llm model-package job spec):\n#   SOURCE_REPO, SOURCE_FILE, SOURCE_QUANT, TARGET_REPO, MODEL_ID, SOURCE_REVISION\n#   SOURCE_PROJECTOR_FILES \u{2014} optional newline-delimited repo-relative mmproj GGUFs\n#   SOURCE_PIPELINE_TAG \u{2014} source model pipeline tag for the published model card\n#   MESH_LLM_REF \u{2014} git ref to build from (default: main)\n#   CATALOG_CREATE_PR \u{2014} \"true\" to open a PR for catalog updates (non-org members)\n#   PACKAGE_EXPERIMENTAL \u{2014} \"true\" to label the public package as not runtime-certified\n#   HF_TOKEN \u{2014} injected as a secret by HF Jobs\n#\n# Volumes:\n#   /bucket  \u{2014} writable storage bucket for script and fallback source cache\n\nMESH_LLM_REF=\"${MESH_LLM_REF:-main}\"\nSOURCE_REVISION=\"${SOURCE_REVISION:-main}\"\nSOURCE_QUANT=\"${SOURCE_QUANT:-}\"\nif [ -z \"$SOURCE_QUANT\" ] && [[ \"${MODEL_ID:-}\" == *:* ]]; then\n    SOURCE_QUANT=\"${MODEL_ID##*:}\"\nfi\nif [ -z \"$SOURCE_QUANT\" ]; then\n    echo \"ERROR: SOURCE_QUANT is required to resolve the source GGUF without a model volume\" >&2\n    exit 1\nfi\n\necho \"\u{2554}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2557}\"\necho \"\u{2551}  Layer Package Split Job                                 \u{2551}\"\necho \"\u{2560}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2563}\"\necho \"\u{2551}  Source: ${SOURCE_REPO}/${SOURCE_FILE}\"\necho \"\u{2551}  Quant:  ${SOURCE_QUANT}\"\necho \"\u{2551}  Target: ${TARGET_REPO}\"\necho \"\u{2551}  Model:  ${MODEL_ID}\"\necho \"\u{2551}  Build:  mesh-llm @ ${MESH_LLM_REF}\"\necho \"\u{255a}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{2550}\u{255d}\"\necho \"\"\n\n# Keep executable toolchains/build products on local ephemeral storage:\n# HF bucket mounts can be unsuitable for dynamic loader/toolchain execution.\n# Package artifacts are also written locally, uploaded one at a time, and\n# removed immediately so the job never accumulates a full 400GB+ package.\nJOB_WORK_ROOT=\"${JOB_WORK_ROOT:-/bucket/job-work}\"\nSAFE_TARGET_REPO=\"$(printf \'%s\' \"$TARGET_REPO\" | tr -c \'[:alnum:]._-\' \'_\')\"\nLOCAL_WORK_DIR=\"${LOCAL_WORK_DIR:-/tmp/meshllm-layer-job-${SAFE_TARGET_REPO}-$$}\"\nif [ -z \"${JOB_WORK_DIR:-}\" ]; then\n    JOB_WORK_DIR=\"${JOB_WORK_ROOT}/${SAFE_TARGET_REPO}-$(date +%Y%m%d%H%M%S)-$$\"\n    CLEANUP_JOB_WORK_DIR=\"${CLEANUP_JOB_WORK_DIR:-true}\"\nelse\n    CLEANUP_JOB_WORK_DIR=\"${CLEANUP_JOB_WORK_DIR:-false}\"\nfi\nPACKAGE_DIR=\"${PACKAGE_DIR:-${LOCAL_WORK_DIR}/package}\"\nHF_HOME=\"${HF_HOME:-${JOB_WORK_DIR}/hf-home}\"\nHF_HUB_CACHE=\"${HF_HUB_CACHE:-${HF_HOME}/hub}\"\nHF_XET_CACHE=\"${HF_XET_CACHE:-${HF_HOME}/xet}\"\nJOB_TMP_DIR=\"${JOB_TMP_DIR:-${LOCAL_WORK_DIR}/tmp}\"\nBUILD_DIR=\"${BUILD_DIR:-${LOCAL_WORK_DIR}/build}\"\nTOOL_DIR=\"${TOOL_DIR:-${LOCAL_WORK_DIR}/tools}\"\nVENV_DIR=\"${VENV_DIR:-${LOCAL_WORK_DIR}/venv}\"\nARTIFACT_UPLOAD_SCRIPT=\"${ARTIFACT_UPLOAD_SCRIPT:-${LOCAL_WORK_DIR}/upload-package-artifact.py}\"\nARTIFACT_UPLOAD_HOOK=\"${ARTIFACT_UPLOAD_HOOK:-${LOCAL_WORK_DIR}/upload-package-artifact.sh}\"\nCARGO_HOME=\"${CARGO_HOME:-${LOCAL_WORK_DIR}/cargo-home}\"\nRUSTUP_HOME=\"${RUSTUP_HOME:-${LOCAL_WORK_DIR}/rustup-home}\"\nCARGO_TARGET_DIR=\"${CARGO_TARGET_DIR:-${LOCAL_WORK_DIR}/cargo-target}\"\nXDG_CACHE_HOME=\"${XDG_CACHE_HOME:-${LOCAL_WORK_DIR}/xdg-cache}\"\nPIP_CACHE_DIR=\"${PIP_CACHE_DIR:-${LOCAL_WORK_DIR}/pip-cache}\"\nBUILD_TMP_DIR=\"${BUILD_TMP_DIR:-${LOCAL_WORK_DIR}/tmp}\"\nTMPDIR=\"$BUILD_TMP_DIR\"\nTEMP=\"$BUILD_TMP_DIR\"\nTMP=\"$BUILD_TMP_DIR\"\nexport JOB_WORK_DIR PACKAGE_DIR HF_HOME HF_HUB_CACHE HF_XET_CACHE VENV_DIR ARTIFACT_UPLOAD_SCRIPT\nexport TMPDIR TEMP TMP CARGO_HOME RUSTUP_HOME CARGO_TARGET_DIR XDG_CACHE_HOME PIP_CACHE_DIR\n\ncleanup_job_work_dir() {\n    if [ -n \"${LOCAL_WORK_DIR:-}\" ]; then\n        echo \"Cleaning local work dir: ${LOCAL_WORK_DIR}\"\n        rm -rf \"$LOCAL_WORK_DIR\" || true\n    fi\n    if [ \"${CLEANUP_JOB_WORK_DIR}\" = \"true\" ] && [ -n \"${JOB_WORK_DIR:-}\" ]; then\n        echo \"Cleaning job work dir: ${JOB_WORK_DIR}\"\n        rm -rf \"$JOB_WORK_DIR\" || true\n    fi\n}\ntrap cleanup_job_work_dir EXIT\n\nlog_storage_snapshot() {\n    local label=\"$1\"\n    echo \"  Storage snapshot (${label}):\"\n    df -h / /bucket \"$PACKAGE_DIR\" \"$TMPDIR\" 2>/dev/null || true\n    echo \"  Mounts (${label}):\"\n    mount | grep -E \' on / | on /bucket \' || true\n}\n\non_error() {\n    local status=$?\n    local line=${BASH_LINENO[0]:-unknown}\n    local command=${BASH_COMMAND:-unknown}\n    echo \"ERROR: split job command failed at line ${line} with status ${status}: ${command}\" >&2\n    log_storage_snapshot \"error\" >&2 || true\n    exit \"$status\"\n}\ntrap on_error ERR\n\nstart_heartbeat() {\n    local label=\"$1\"\n    (\n        while true; do\n            sleep \"${JOB_HEARTBEAT_SECONDS:-60}\"\n            echo \"  Heartbeat (${label}) $(date -u +%Y-%m-%dT%H:%M:%SZ)\"\n            df -h / /bucket \"$PACKAGE_DIR\" \"$TMPDIR\" 2>/dev/null || true\n            if [ -d \"$PACKAGE_DIR\" ]; then\n                du -sh \"$PACKAGE_DIR\" 2>/dev/null || true\n            fi\n            if [ -d \"$HF_HUB_CACHE\" ]; then\n                du -sh \"$HF_HUB_CACHE\" 2>/dev/null || true\n            fi\n        done\n    ) &\n    HEARTBEAT_PID=$!\n}\n\nstop_heartbeat() {\n    if [ -n \"${HEARTBEAT_PID:-}\" ]; then\n        kill \"$HEARTBEAT_PID\" 2>/dev/null || true\n        wait \"$HEARTBEAT_PID\" 2>/dev/null || true\n        HEARTBEAT_PID=\"\"\n    fi\n}\n\nmkdir -p \"$PACKAGE_DIR\" \"$HF_HUB_CACHE\" \"$HF_XET_CACHE\" \"$JOB_TMP_DIR\" \"$TOOL_DIR\" \\\n    \"$CARGO_HOME\" \"$RUSTUP_HOME\" \"$CARGO_TARGET_DIR\" \"$XDG_CACHE_HOME\" \"$PIP_CACHE_DIR\" \\\n    \"$BUILD_TMP_DIR\"\n\nformat_bytes() {\n    python3 - \"$1\" <<\'PYTHON\'\nimport sys\nvalue = float(int(sys.argv[1]))\nfor unit in [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"]:\n    if value < 1024 or unit == \"PiB\":\n        if unit == \"B\":\n            print(f\"{int(value)} {unit}\")\n        else:\n            print(f\"{value:.1f} {unit}\")\n        break\n    value /= 1024\nPYTHON\n}\n\nestimate_bucket_workspace_bytes() {\n    python3 - \"$1\" <<\'PYTHON\'\nimport sys\nsource = int(sys.argv[1])\n# Source and package artifacts are not meant to accumulate in the bucket. This\n# estimate is retained only as a fallback-source-cache warning when /source is\n# unavailable.\nheadroom = 32 * 1024 ** 3\nprint(source + headroom)\nPYTHON\n}\n\n# \u{2500}\u{2500}\u{2500} Build tools \u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\necho \"=== [1/9] Installing build dependencies ===\"\napt-get update -qq && apt-get install -y -qq \\\n    cmake git curl build-essential pkg-config libssl-dev \\\n    python3-pip python3-venv > /dev/null 2>&1\napt-get clean\nrm -rf /var/lib/apt/lists/*\n\necho \"=== [2/9] Installing Rust ===\"\ncurl --proto \'=https\' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y > /dev/null 2>&1\nsource \"${CARGO_HOME}/env\"\n\necho \"=== [3/9] Cloning mesh-llm and building skippy-model-package ===\"\ngit clone --filter=blob:none https://github.com/Mesh-LLM/mesh-llm.git \"$BUILD_DIR\"\ncd \"$BUILD_DIR\"\nif git ls-remote --exit-code --heads origin \"$MESH_LLM_REF\" >/dev/null 2>&1 || \\\n   git ls-remote --exit-code --tags origin \"$MESH_LLM_REF\" >/dev/null 2>&1; then\n    git fetch --depth 1 origin \"$MESH_LLM_REF\"\n    git checkout --detach FETCH_HEAD\nelif git cat-file -e \"$MESH_LLM_REF^{commit}\" 2>/dev/null; then\n    git checkout --detach \"$MESH_LLM_REF\"\nelse\n    git fetch --depth 1 origin \"$MESH_LLM_REF\"\n    git checkout --detach FETCH_HEAD\nfi\n\n# Full clone needed for git-am patches in prepare-llama\nsed -i \'s/--filter=blob:none //\' scripts/prepare-llama.sh\necho \"  Running prepare-llama.sh...\"\nscripts/prepare-llama.sh pinned 2>&1 | tail -5\necho \"  Running build-llama.sh...\"\nscripts/build-llama.sh 2>&1 | tail -5\n\n# Locate the llama.cpp build directory (build-llama.sh puts it here)\nLLAMA_BUILD_DIR=\".deps/llama-build/build-stage-abi-cpu\"\necho \"  Verifying llama.cpp build at $LLAMA_BUILD_DIR...\"\nfind \"$LLAMA_BUILD_DIR\" -name \"*.a\" 2>/dev/null | head -10 || echo \"  WARNING: no .a files found\"\n\n# Build the splitter binary\necho \"  Building skippy-model-package...\"\nSKIPPY_LLAMA_BUILD_DIR=\"$LLAMA_BUILD_DIR\" \\\n    cargo build --release -p skippy-model-package 2>&1 | tail -20\nSLICER=\"${CARGO_TARGET_DIR}/release/skippy-model-package\"\nif [ ! -f \"$SLICER\" ]; then\n    echo \"ERROR: Build failed \u{2014} binary not found at $SLICER\"\n    echo \"Retrying with full output...\"\n    SKIPPY_LLAMA_BUILD_DIR=.deps/llama.cpp/build-stage-abi-static \\\n        cargo build --release -p skippy-model-package 2>&1\n    exit 1\nfi\ncp \"$SLICER\" \"${TOOL_DIR}/skippy-model-package\"\nSLICER=\"${TOOL_DIR}/skippy-model-package\"\nchmod +x \"$SLICER\"\ncd /\nrm -rf \"$BUILD_DIR\" \"$CARGO_TARGET_DIR\" \"$CARGO_HOME\" \"$RUSTUP_HOME\"\nTMPDIR=\"$JOB_TMP_DIR\"\nTEMP=\"$JOB_TMP_DIR\"\nTMP=\"$JOB_TMP_DIR\"\nexport TMPDIR TEMP TMP\necho \"  \u{2713} Built: $SLICER\"\necho \"  Root filesystem after build cleanup:\"\ndf -h / || true\n\necho \"  Preparing Hugging Face uploader...\"\npython3 -m venv \"$VENV_DIR\" > /dev/null\n\"$VENV_DIR/bin/pip\" install -q huggingface_hub\n\"$VENV_DIR/bin/python3\" << \'PYTHON\'\nfrom huggingface_hub import HfApi\nimport os\n\napi = HfApi(token=os.environ[\"HF_TOKEN\"])\napi.create_repo(os.environ[\"TARGET_REPO\"], exist_ok=True)\nPYTHON\ncat > \"$ARTIFACT_UPLOAD_SCRIPT\" <<\'PYTHON\'\nfrom huggingface_hub import HfApi\nfrom pathlib import Path\nimport os\n\npath = Path(os.environ[\"SKIPPY_PACKAGE_ARTIFACT_PATH\"])\nrelative = os.environ[\"SKIPPY_PACKAGE_ARTIFACT_RELATIVE_PATH\"]\ntarget_repo = os.environ[\"TARGET_REPO\"]\n\napi = HfApi(token=os.environ[\"HF_TOKEN\"])\napi.upload_file(\n    repo_id=target_repo,\n    path_or_fileobj=str(path),\n    path_in_repo=relative,\n    repo_type=\"model\",\n    commit_message=f\"Add package artifact {relative}\",\n)\nsize = path.stat().st_size\npath.unlink()\nprint(f\"  Uploaded and removed {relative} ({size} bytes)\")\nPYTHON\ncat > \"$ARTIFACT_UPLOAD_HOOK\" <<\'BASH\'\n#!/bin/bash\nset -euo pipefail\n\"${VENV_DIR}/bin/python3\" \"${ARTIFACT_UPLOAD_SCRIPT}\"\nBASH\nchmod +x \"$ARTIFACT_UPLOAD_HOOK\"\n\n# \u{2500}\u{2500}\u{2500} Split \u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\necho \"\"\necho \"=== [4/9] Splitting model ===\"\nif [ \"$SOURCE_REVISION\" = \"main\" ]; then\n    SOURCE_REF=\"${SOURCE_REPO}:${SOURCE_QUANT}\"\nelse\n    SOURCE_REF=\"${SOURCE_REPO}@${SOURCE_REVISION}:${SOURCE_QUANT}\"\nfi\necho \"  Source ref: $SOURCE_REF\"\nif [ -n \"${SOURCE_TOTAL_BYTES:-}\" ]; then\n    echo \"  Source bytes: $SOURCE_TOTAL_BYTES\"\n    ESTIMATED_BUCKET_BYTES=\"$(estimate_bucket_workspace_bytes \"$SOURCE_TOTAL_BYTES\")\"\n    echo \"  Estimated fallback /bucket cache needed: $(format_bytes \"$ESTIMATED_BUCKET_BYTES\")\"\nfi\nMOUNTED_SOURCE_PATH=\"/source/${SOURCE_FILE}\"\nif [ -f \"$MOUNTED_SOURCE_PATH\" ]; then\n    WRITE_PACKAGE_INPUT=\"$MOUNTED_SOURCE_PATH\"\n    WRITE_PACKAGE_IDENTITY_ARGS=(\n        --model-id \"$MODEL_ID\"\n        --source-repo \"$SOURCE_REPO\"\n        --source-revision \"$SOURCE_REVISION\"\n        --source-file \"$SOURCE_FILE\"\n    )\n    echo \"  Source mount: $MOUNTED_SOURCE_PATH\"\nelse\n    WRITE_PACKAGE_INPUT=\"$SOURCE_REF\"\n    WRITE_PACKAGE_IDENTITY_ARGS=()\n    echo \"  Source mount: not available; falling back to Hugging Face cache download\"\nfi\nWRITE_PACKAGE_PROJECTOR_ARGS=()\nwhile IFS= read -r PROJECTOR_FILE; do\n    if [ -z \"$PROJECTOR_FILE\" ]; then\n        continue\n    fi\n    MOUNTED_PROJECTOR_PATH=\"/source/${PROJECTOR_FILE}\"\n    if [ -f \"$MOUNTED_PROJECTOR_PATH\" ]; then\n        PROJECTOR_PATH=\"$MOUNTED_PROJECTOR_PATH\"\n    else\n        echo \"  Projector mount missing; downloading ${PROJECTOR_FILE} at ${SOURCE_REVISION}\"\n        PROJECTOR_PATH=\"$(\"$VENV_DIR/bin/python3\" - \"$PROJECTOR_FILE\" <<\'PYTHON\'\nfrom huggingface_hub import hf_hub_download\nimport os\nimport sys\n\nprint(hf_hub_download(\n    repo_id=os.environ[\"SOURCE_REPO\"],\n    filename=sys.argv[1],\n    revision=os.environ[\"SOURCE_REVISION\"],\n    cache_dir=os.environ[\"HF_HUB_CACHE\"],\n    token=os.environ.get(\"HF_TOKEN\"),\n))\nPYTHON\n)\"\n    fi\n    echo \"  Projector: $PROJECTOR_PATH\"\n    WRITE_PACKAGE_PROJECTOR_ARGS+=(--projector \"$PROJECTOR_PATH\")\ndone <<< \"${SOURCE_PROJECTOR_FILES:-}\"\necho \"  Hugging Face cache: $HF_HUB_CACHE\"\necho \"  Package workspace: $PACKAGE_DIR\"\necho \"  Temporary workspace: $TMPDIR\"\nlog_storage_snapshot \"before write-package\"\nROOT_FS=\"$(df -P / | awk \'NR==2 {print $1}\')\"\nPACKAGE_FS=\"$(df -P \"$PACKAGE_DIR\" | awk \'NR==2 {print $1}\')\"\nif [ -n \"$ROOT_FS\" ] && [ \"$ROOT_FS\" = \"$PACKAGE_FS\" ]; then\n    echo \"WARNING: package workspace is on the container root filesystem; very large splits may hit the HF Jobs 50G ephemeral storage limit.\" >&2\nfi\nif [ -n \"${ESTIMATED_BUCKET_BYTES:-}\" ]; then\n    PACKAGE_AVAILABLE_BYTES=\"$(df -Pk \"$PACKAGE_DIR\" | awk \'NR==2 {printf \"%.0f\", $4 * 1024}\')\"\n    if [ -n \"$PACKAGE_AVAILABLE_BYTES\" ] && [ \"$PACKAGE_AVAILABLE_BYTES\" -gt 0 ] && \\\n        [ \"$PACKAGE_AVAILABLE_BYTES\" -lt \"$ESTIMATED_BUCKET_BYTES\" ]; then\n        echo \"WARNING: package workspace has $(format_bytes \"$PACKAGE_AVAILABLE_BYTES\") available, below estimated need $(format_bytes \"$ESTIMATED_BUCKET_BYTES\").\" >&2\n    fi\nfi\necho \"  Starting write-package at $(date -u +%Y-%m-%dT%H:%M:%SZ)\"\nstart_heartbeat \"write-package\"\nset +e\ntime \"$SLICER\" write-package \"$WRITE_PACKAGE_INPUT\" \\\n    --out-dir \"$PACKAGE_DIR\" \\\n    --after-artifact-command \"$ARTIFACT_UPLOAD_HOOK\" \\\n    \"${WRITE_PACKAGE_PROJECTOR_ARGS[@]}\" \\\n    \"${WRITE_PACKAGE_IDENTITY_ARGS[@]}\"\nWRITE_PACKAGE_STATUS=$?\nset -e\nstop_heartbeat\nif [ \"$WRITE_PACKAGE_STATUS\" -ne 0 ]; then\n    echo \"ERROR: write-package failed with status $WRITE_PACKAGE_STATUS\" >&2\n    log_storage_snapshot \"write-package failed\" >&2 || true\n    exit \"$WRITE_PACKAGE_STATUS\"\nfi\necho \"  Finished write-package at $(date -u +%Y-%m-%dT%H:%M:%SZ)\"\nlog_storage_snapshot \"after write-package\"\n\nSOURCE_PATH=\"$(python3 -c \"import json, os; m=json.load(open(os.path.join(os.environ[\'PACKAGE_DIR\'], \'model-package.json\'))); print(m[\'source_model\'][\'path\'])\")\"\necho \"  Cached source: $SOURCE_PATH ($(du -h \"$SOURCE_PATH\" | cut -f1))\"\n\nLAYER_COUNT=\"$(python3 -c \"import json, os; m=json.load(open(os.path.join(os.environ[\'PACKAGE_DIR\'], \'model-package.json\'))); print(m[\'layer_count\'])\")\"\nTOTAL_SIZE=\"$(python3 -c \"import json, os; m=json.load(open(os.path.join(os.environ[\'PACKAGE_DIR\'], \'model-package.json\'))); print(sum(int(a.get(\'artifact_bytes\') or 0) for a in list(m[\'shared\'].values()) + m.get(\'layers\', []) + m.get(\'projectors\', [])))\")\"\nTOTAL_SIZE_LABEL=\"$(format_bytes \"$TOTAL_SIZE\")\"\necho \"  \u{2713} Split into $LAYER_COUNT layers; artifacts uploaded incrementally (${TOTAL_SIZE_LABEL} total)\"\n\n# \u{2500}\u{2500}\u{2500} Verify manifest \u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\necho \"\"\necho \"=== [5/9] Verifying package manifest ===\"\n\"$VENV_DIR/bin/python3\" << \'PYTHON\'\nimport json\nimport os\nfrom pathlib import Path\n\nmanifest_path = Path(os.environ[\"PACKAGE_DIR\"]) / \"model-package.json\"\nmanifest = json.loads(manifest_path.read_text())\nrequired = [\n    manifest[\"shared\"][\"metadata\"],\n    manifest[\"shared\"][\"embeddings\"],\n    manifest[\"shared\"][\"output\"],\n    *manifest.get(\"layers\", []),\n    *manifest.get(\"projectors\", []),\n]\nmissing = [artifact for artifact in required if not artifact.get(\"path\") or not artifact.get(\"sha256\")]\nif missing:\n    raise SystemExit(f\"manifest contains {len(missing)} artifacts without path/checksum\")\nprint(f\"  \u{2713} Manifest records {len(required)} uploaded artifacts\")\nPYTHON\n\n# \u{2500}\u{2500}\u{2500} Publish \u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\necho \"\"\necho \"=== [6/9] Publishing to HuggingFace ===\"\n\"$VENV_DIR/bin/python3\" << PYTHON\nfrom huggingface_hub import HfApi\nimport os, json\nfrom pathlib import Path\n\napi = HfApi(token=os.environ[\'HF_TOKEN\'])\ntarget_repo = os.environ[\'TARGET_REPO\']\nsource_repo = os.environ[\'SOURCE_REPO\']\nmodel_id = os.environ.get(\'MODEL_ID\', \'\')\nmanifest_path = Path(os.environ[\'PACKAGE_DIR\']) / \'model-package.json\'\n\napi.upload_file(\n    repo_id=target_repo,\n    path_or_fileobj=str(manifest_path),\n    path_in_repo=\'model-package.json\',\n    repo_type=\'model\',\n    commit_message=f\'Add layer package manifest from {source_repo} ({model_id})\',\n)\n\n# Print summary\nmanifest = json.load(open(manifest_path))\nprint(f\'  \u{2713} Published: https://huggingface.co/{target_repo}\')\nprint(f\'    Model:  {manifest[\"model_id\"]}\')\nprint(f\'    Layers: {manifest[\"layer_count\"]}\')\nprint(f\'    Schema: {manifest[\"schema_version\"]}\')\nPYTHON\n\n# \u{2500}\u{2500}\u{2500} Update catalog \u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\necho \"\"\necho \"=== [7/9] Updating meshllm/catalog ===\"\n\"$VENV_DIR/bin/python3\" << \'PYTHON\'\nfrom huggingface_hub import HfApi\nimport os, json, tempfile\n\napi = HfApi(token=os.environ[\'HF_TOKEN\'])\nsource_repo = os.environ[\'SOURCE_REPO\']\ntarget_repo = os.environ[\'TARGET_REPO\']\nsource_file = os.environ[\'SOURCE_FILE\']\nsource_revision = os.environ.get(\'SOURCE_REVISION\', \'main\')\nmodel_id = os.environ.get(\'MODEL_ID\', \'\')\npackage_dir = os.environ[\'PACKAGE_DIR\']\n\n# Read manifest for metadata\nmanifest = json.load(open(os.path.join(package_dir, \'model-package.json\')))\nlayer_count = manifest[\'layer_count\']\n\n# Determine catalog entry path: entries/<owner>/<repo-name>.json\nowner, repo_name = source_repo.split(\'/\', 1)\nentry_path = f\"entries/{owner}/{repo_name}.json\"\n\n# Try to fetch existing entry\ncatalog_repo = \"meshllm/catalog\"\ntry:\n    existing_path = api.hf_hub_download(\n        repo_id=catalog_repo,\n        filename=entry_path,\n        repo_type=\"dataset\",\n    )\n    entry = json.load(open(existing_path))\nexcept Exception:\n    # Create new entry\n    entry = {\"schema_version\": 1, \"source_repo\": source_repo, \"variants\": {}}\n\n# Build variant name from source file stem (not MODEL_ID).\n# For \"UD-Q4_K_XL/Qwen3-32B-UD-Q4_K_XL-00001-of-00002.gguf\" \u{2192} \"Qwen3-32B-UD-Q4_K_XL\"\nimport re\nfile_stem = source_file.split(\'/\')[-1].replace(\'.gguf\', \'\')\n# Strip shard suffix like \"-00001-of-00002\"\nvariant_name = re.sub(r\'-\\d{5}-of-\\d{5}$\', \'\', file_stem)\n\npackage_entry = {\n    \"type\": \"layer-package\",\n    \"repo\": target_repo,\n    \"layer_count\": layer_count,\n    \"source_revision\": source_revision,\n}\n\nsource_entry = {\n    \"repo\": source_repo,\n    \"file\": source_file,\n    \"revision\": source_revision,\n}\n\n# Handle both dict-style and list-style variants\nvariants = entry.get(\"variants\", {})\nif isinstance(variants, dict):\n    # Dict-keyed by variant name (existing catalog format)\n    if variant_name in variants:\n        packages = variants[variant_name].get(\"packages\", [])\n        packages = [p for p in packages if p.get(\"repo\") != target_repo]\n        packages.append(package_entry)\n        variants[variant_name][\"source\"] = source_entry\n        variants[variant_name][\"packages\"] = packages\n    else:\n        variants[variant_name] = {\n            \"source\": source_entry,\n            \"curated\": {\n                \"name\": variant_name,\n                \"size\": f\"{layer_count} layers\",\n                \"description\": f\"Layer package for {model_id}\",\n            },\n            \"packages\": [package_entry],\n        }\n    entry[\"variants\"] = variants\nelse:\n    # List-style (fallback)\n    existing_variant = None\n    for v in variants:\n        if v.get(\"curated\", {}).get(\"name\") == variant_name:\n            existing_variant = v\n            break\n    if existing_variant:\n        packages = existing_variant.get(\"packages\", [])\n        packages = [p for p in packages if p.get(\"repo\") != target_repo]\n        packages.append(package_entry)\n        existing_variant[\"source\"] = source_entry\n        existing_variant[\"packages\"] = packages\n    else:\n        variants.append({\n            \"source\": source_entry,\n            \"curated\": {\n                \"name\": variant_name,\n                \"size\": f\"{layer_count} layers\",\n                \"description\": f\"Layer package for {model_id}\",\n            },\n            \"packages\": [package_entry],\n        })\n\n# Write and upload\nwith tempfile.NamedTemporaryFile(mode=\'w\', suffix=\'.json\', delete=False) as f:\n    json.dump(entry, f, indent=2)\n    tmp_path = f.name\n\ncreate_pr = os.environ.get(\'CATALOG_CREATE_PR\', \'false\').lower() == \'true\'\n\napi.upload_file(\n    repo_id=catalog_repo,\n    path_or_fileobj=tmp_path,\n    path_in_repo=entry_path,\n    repo_type=\"dataset\",\n    commit_message=f\"Add layer package for {model_id} ({target_repo})\",\n    create_pr=create_pr,\n)\nprint(f\"  \u{2713} Catalog updated: {catalog_repo}/{entry_path}\")\nprint(f\"    Variant: {variant_name}\")\nprint(f\"    Package: {target_repo} ({layer_count} layers)\")\nPYTHON\n\n# \u{2500}\u{2500}\u{2500} Model Card \u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\necho \"\"\necho \"=== [8/9] Uploading model card ===\"\n\"$VENV_DIR/bin/python3\" << \'PYTHON\'\nfrom huggingface_hub import HfApi\nfrom pathlib import Path\nimport hashlib\nimport json\nimport os\n\npackage_dir = Path(os.environ[\"PACKAGE_DIR\"])\nmanifest_path = package_dir / \"model-package.json\"\nmanifest = json.loads(manifest_path.read_text())\n\nsource_repo = os.environ[\"SOURCE_REPO\"]\nsource_file = os.environ[\"SOURCE_FILE\"]\nsource_revision = os.environ.get(\"SOURCE_REVISION\", \"main\")\ntarget_repo = os.environ[\"TARGET_REPO\"]\nmodel_id = os.environ.get(\"MODEL_ID\", manifest.get(\"model_id\", target_repo))\nmesh_llm_ref = os.environ.get(\"MESH_LLM_REF\", \"main\")\nsource_pipeline_tag = os.environ.get(\"SOURCE_PIPELINE_TAG\", \"text-generation\").strip()\nif not source_pipeline_tag:\n    source_pipeline_tag = \"text-generation\"\nexperimental = os.environ.get(\"PACKAGE_EXPERIMENTAL\", \"false\").lower() == \"true\"\nexperimental_tag = \"- experimental\\n\" if experimental else \"\"\nexperimental_warning = (\n    \"> [!WARNING]\\n\"\n    \"> **Experimental package:** artifact integrity may be validated, but runtime, \"\n    \"split-correctness, and multimodal certification are still pending. This package \"\n    \"is not discoverable through `meshllm/catalog@main` until its Hugging Face catalog \"\n    \"PR is reviewed and merged.\\n\\n\"\n    if experimental\n    else \"\"\n)\napi = HfApi(token=os.environ[\"HF_TOKEN\"])\n\ndef sha256(path: Path) -> str:\n    digest = hashlib.sha256()\n    with path.open(\"rb\") as file:\n        for chunk in iter(lambda: file.read(1024 * 1024), b\"\"):\n            digest.update(chunk)\n    return digest.hexdigest()\n\ndef fmt_bytes(size: int) -> str:\n    value = float(size)\n    for unit in [\"B\", \"KB\", \"MB\", \"GB\", \"TB\"]:\n        if value < 1024 or unit == \"TB\":\n            if unit == \"B\":\n                return f\"{int(value)} {unit}\"\n            return f\"{value:.1f} {unit}\"\n        value /= 1024\n\ndef artifact_bytes(artifact: dict) -> int:\n    return int(artifact.get(\"artifact_bytes\") or 0)\n\ndef md_cell(value) -> str:\n    text = \"\" if value is None else str(value)\n    return text.replace(\"|\", \"\\\\|\").replace(\"\\n\", \"<br>\")\n\ndef link(label: str, url: str) -> str:\n    return f\"[{md_cell(label)}]({url})\"\n\ndef code(value) -> str:\n    return f\"`{md_cell(value)}`\"\n\ndef yaml_quote(value: str) -> str:\n    return json.dumps(value)\n\ndef card_value(info, key: str):\n    card_data = getattr(info, \"card_data\", None)\n    if card_data is None:\n        return None\n    if isinstance(card_data, dict):\n        return card_data.get(key)\n    return getattr(card_data, key, None)\n\ndef first_model_id(value):\n    if isinstance(value, list):\n        value = value[0] if value else None\n    if isinstance(value, dict):\n        return value.get(\"id\") or value.get(\"modelId\")\n    return value if isinstance(value, str) and value else None\n\ndef resolve_upstream_license():\n    try:\n        source_info = api.model_info(source_repo, revision=source_revision)\n        source_license = card_value(source_info, \"license\")\n        if source_license:\n            return str(source_license), source_repo\n\n        base_repo = first_model_id(card_value(source_info, \"base_model\"))\n        if base_repo:\n            base_info = api.model_info(base_repo)\n            base_license = card_value(base_info, \"license\")\n            if base_license:\n                return str(base_license), base_repo\n    except Exception as error:\n        print(f\"  WARNING: could not resolve upstream license metadata: {error}\")\n    return None, None\n\ndef infer_model_family(name: str) -> str:\n    lowered = name.lower()\n    for family in [\"Qwen3\", \"Qwen2.5\", \"DeepSeek\", \"Kimi\", \"Gemma\", \"GLM\", \"Llama\"]:\n        if family.lower() in lowered:\n            return family\n    return name.split(\"-\")[0] if name else \"Unknown\"\n\ndef infer_parameter_scale(name: str) -> str:\n    import re\n    match = re.search(r\"(?i)(\\d+(?:\\.\\d+)?[BM](?:-A\\d+(?:\\.\\d+)?B)?)\", name)\n    return match.group(1) if match else \"not recorded\"\n\ndef infer_quantization(name: str, source_path: str) -> str:\n    import re\n    combined = f\"{name}/{source_path}\"\n    patterns = [\n        r\"UD-Q\\d+_[A-Z]+(?:_[A-Z]+)?\",\n        r\"Q\\d+_[A-Z]+(?:_[A-Z]+)?\",\n        r\"IQ\\d+_[A-Z]+(?:_[A-Z]+)?\",\n        r\"BF16\",\n        r\"F16\",\n    ]\n    for pattern in patterns:\n        match = re.search(pattern, combined, re.IGNORECASE)\n        if match:\n            return match.group(0)\n    return \"not recorded\"\n\nshared = manifest.get(\"shared\", {})\nlayers = manifest.get(\"layers\", [])\nprojectors = manifest.get(\"projectors\", [])\nmanifest_hash = sha256(manifest_path)\ntotal_bytes = sum(artifact_bytes(artifact) for artifact in shared.values())\ntotal_bytes += sum(artifact_bytes(layer) for layer in layers)\ntotal_bytes += sum(artifact_bytes(projector) for projector in projectors)\n\nsource_model = manifest.get(\"source_model\", {})\ndisplay_name = source_model.get(\"distribution_id\") or model_id\nmodel_family = infer_model_family(display_name)\nparameter_scale = infer_parameter_scale(display_name)\nquantization = infer_quantization(display_name, source_file)\nsource_path = source_model.get(\"path\") or f\"/hf-cache/{source_file}\"\nactivation_width = manifest.get(\"activation_width\") or \"not recorded\"\nskippy_abi = manifest.get(\"skippy_abi_version\") or \"not recorded\"\nsource_sha = source_model.get(\"sha256\") or \"not recorded\"\ncanonical_ref = source_model.get(\"canonical_ref\") or f\"{source_repo}@{source_revision}/{source_file}\"\nupstream_license, license_source_repo = resolve_upstream_license()\nlicense_frontmatter = (\n    f\"license: {yaml_quote(upstream_license)}\\n\" if upstream_license else \"\"\n)\n\nfile_rows = [\n    (\"Manifest\", \"model-package.json\", \"Package schema, source identity, checksums\", manifest_hash),\n]\nfor label, key in [\n    (\"Metadata\", \"metadata\"),\n    (\"Embeddings\", \"embeddings\"),\n    (\"Output head\", \"output\"),\n]:\n    artifact = shared.get(key)\n    if artifact:\n        file_rows.append((\n            label,\n            artifact.get(\"path\", f\"shared/{key}.gguf\"),\n            f\"{artifact.get(\'tensor_count\', \'unknown\')} tensors, {fmt_bytes(artifact_bytes(artifact))}\",\n            artifact.get(\"sha256\", \"not recorded\"),\n        ))\nif layers:\n    layer_bytes = sum(artifact_bytes(layer) for layer in layers)\n    layer_tensors = sum(int(layer.get(\"tensor_count\") or 0) for layer in layers)\n    file_rows.append((\n        \"Transformer layers\",\n        \"layers/layer-*.gguf\",\n        f\"{len(layers)} layer artifacts, {layer_tensors} tensors, {fmt_bytes(layer_bytes)}\",\n        \"see model-package.json\",\n    ))\nfor projector in projectors:\n    file_rows.append((\n        \"Projector\",\n        projector.get(\"path\", \"projectors/projector.gguf\"),\n        f\"{projector.get(\'kind\', \'multimodal\')} projector, {fmt_bytes(artifact_bytes(projector))}\",\n        projector.get(\"sha256\", \"not recorded\"),\n    ))\n\nrows = [\n    (\"Source model\", link(source_repo, f\"https://huggingface.co/{source_repo}\")),\n    (\"Model id\", code(model_id)),\n    (\"Family\", model_family),\n    (\"Parameter scale\", parameter_scale),\n    (\"Quantization\", code(quantization)),\n    (\"Layer count\", manifest.get(\"layer_count\", len(layers))),\n    (\"Activation width\", activation_width),\n    (\"Package size\", fmt_bytes(total_bytes)),\n    (\"Source file\", code(source_file)),\n    (\"Package repo\", link(target_repo, f\"https://huggingface.co/{target_repo}\")),\n]\nif upstream_license and license_source_repo:\n    rows.append((\n        \"License\",\n        f\"{code(upstream_license)} from \"\n        f\"{link(license_source_repo, f\'https://huggingface.co/{license_source_repo}\')}\",\n    ))\n\nreadme = f\"\"\"---\nlibrary_name: mesh-llm\n{license_frontmatter}base_model:\n- {yaml_quote(source_repo)}\npipeline_tag: {yaml_quote(source_pipeline_tag)}\ntags:\n- gguf\n- mesh-llm\n- layer-package\n- skippy\n- distributed-inference\n- local-inference\n- openai-compatible\n{experimental_tag}---\n\n<div align=\"center\">\n  <a href=\"https://www.meshllm.cloud\">\n    <img src=\"https://meshllm.cloud/assets/images/jelly-logo-wordmark.png\" alt=\"Mesh LLM\" width=\"220\">\n  </a>\n\n  <h1>{display_name}</h1>\n\n  <p>\n    <strong>Distributed GGUF inference package for Mesh LLM</strong>\n  </p>\n\n  <p>\n    <a href=\"https://www.meshllm.cloud\"><img alt=\"Website\" src=\"https://img.shields.io/badge/Website-meshllm.cloud-111111?style=for-the-badge\"></a>\n    <a href=\"https://github.com/Mesh-LLM/mesh-llm\"><img alt=\"GitHub\" src=\"https://img.shields.io/badge/GitHub-Mesh--LLM-24292f?style=for-the-badge&logo=github\"></a>\n    <a href=\"https://discord.gg/rs6fmc63eN\"><img alt=\"Discord\" src=\"https://img.shields.io/badge/Discord-Join-5865F2?style=for-the-badge&logo=discord&logoColor=white\"></a>\n  </p>\n</div>\n\n{experimental_warning}GGUF layer package for running **{display_name}** across a local Mesh LLM cluster.\n\nThis package is derived from [{source_repo}](https://huggingface.co/{source_repo}) and keeps the original GGUF distribution split into per-layer artifacts for distributed inference.\n\n## Highlights\n\n| Run locally | Pool multiple machines | OpenAI-compatible | Package variant |\n|---|---|---|---|\n| Private inference on your hardware | Split layers across peers | Serve `/v1/chat/completions` locally | `{quantization}` layer package |\n\n## Model Overview\n\n| Property | Value |\n|---|---|\n\"\"\"\n\nfor key, value in rows:\n    readme += f\"| **{md_cell(key)}** | {md_cell(value)} |\\n\"\n\nreadme += f\"\"\"\n## Recommended Use\n\n- Local and private inference with Mesh LLM.\n- Multi-machine serving when the full GGUF is too large for one host.\n- OpenAI-compatible chat/completions workflows through Mesh LLM\'s local API.\n\nFor upstream architecture details, chat template guidance, sampling recommendations, license terms, and benchmark notes, see the source model card: [{source_repo}](https://huggingface.co/{source_repo}).\n\n## Quickstart\n\n```bash\n# Run this on each machine that should contribute memory/compute.\nmesh-llm serve --model \"{target_repo}\" --split\n```\n\n```bash\n# Check the mesh and discover the OpenAI-compatible model name.\ncurl -s http://localhost:3131/api/status\ncurl -s http://localhost:3131/v1/models\n```\n\n```bash\n# Send an OpenAI-compatible chat request.\ncurl -s http://localhost:3131/v1/chat/completions \\\\\n  -H \"Content-Type: application/json\" \\\\\n  -d \'{{\n    \"model\": \"{model_id}\",\n    \"messages\": [{{\"role\": \"user\", \"content\": \"Write a tiny hello-world function in Rust.\"}}],\n    \"max_tokens\": 128\n  }}\'\n```\n\n## Package Variant\n\n| Property | Value |\n|---|---|\n\"\"\"\n\nfor key, value in [\n    (\"Format\", code(manifest.get(\"format\", \"layer-package\"))),\n    (\"Canonical source ref\", code(canonical_ref)),\n    (\"Source revision\", code(source_revision)),\n    (\"Source SHA-256\", code(source_sha)),\n    (\"Skippy ABI\", code(skippy_abi)),\n    (\"Package manifest SHA-256\", code(manifest_hash)),\n]:\n    readme += f\"| **{md_cell(key)}** | {md_cell(value)} |\\n\"\n\nreadme += f\"\"\"\n## What Is Included\n\n| Artifact | Path | Contents | SHA-256 |\n|---|---|---|---|\n\"\"\"\n\nfor label, path, contents, checksum in file_rows:\n    readme += f\"| {md_cell(label)} | {code(path)} | {md_cell(contents)} | {code(checksum)} |\\n\"\n\nreadme += f\"\"\"\n## Validation\n\nGenerated by the Mesh LLM HF Jobs splitter from `mesh-llm` ref `{mesh_llm_ref}`.\nEach artifact is checksummed as it is written, uploaded to this repository, and removed from the job workspace before the next artifact is produced.\n\n```bash\nskippy-model-package write-package \"{source_path}\" --out-dir \"{package_dir}\"\n```\n\n## Links\n\n- Source model: [{source_repo}](https://huggingface.co/{source_repo})\n- Mesh LLM website: [meshllm.cloud](https://www.meshllm.cloud)\n- Mesh LLM: [github.com/Mesh-LLM/mesh-llm](https://github.com/Mesh-LLM/mesh-llm)\n- Discord: [discord.gg/rs6fmc63eN](https://discord.gg/rs6fmc63eN)\n- Package catalog: [meshllm/catalog](https://huggingface.co/datasets/meshllm/catalog)\n- Package format: [layer-package-repos.md](https://github.com/Mesh-LLM/mesh-llm/blob/main/docs/specs/layer-package-repos.md)\n\"\"\"\n\nPath(\"/tmp/README.md\").write_text(readme)\n\napi.upload_file(\n    path_or_fileobj=\"/tmp/README.md\",\n    path_in_repo=\"README.md\",\n    repo_id=target_repo,\n    repo_type=\"model\",\n)\nprint(\"  \u{2713} Model card uploaded\")\nPYTHON\n\n# \u{2500}\u{2500}\u{2500} Summary \u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\u{2500}\necho \"\"\necho \"=== [9/9] Done ===\"\necho \"\"\necho \"  Published:  https://huggingface.co/${TARGET_REPO}\"\necho \"  Layers:     ${LAYER_COUNT}\"\necho \"  Total size: ${TOTAL_SIZE_LABEL}\"\necho \"\"\necho \"  Use with mesh-llm:\"\necho \"    mesh-llm serve --model ${TARGET_REPO} --split\"\n";
Expand description

The embedded canonical job script.