#!/usr/bin/env bash # qwen38-flash-next-basalt-5090 entrypoint. Runs inside the container; takes no arguments. # Basalt serves an OpenAI-compatible API on $M64_PORT. The pack is mounted read-only at # /weights/basalt; nothing is fetched at runtime. set -eu echo '{"phase":"loading","detail":"loading the Basalt pack"}' >> "$M64_STATUS" # Engine settings live in one config file (the pack carries no flags; server settings are the flags below): hal5090's # start_qwen38_flash_next_basalt_384k.sh. Past the trained 262144 tokens the RoPE is # stretched with YaRN by 393216/262144 = 1.5. cat > /scratch/basalt_config.json <<'JSON' { "engine": { "expert-cache": "auto", "prefill": "auto", "spec": 7, "spec-min-p": 0.5, "max-context": 393216, "kv": "int8", "resident-experts": true, "vram-reserve-mib": 700, "rope-scaling": "yarn", "rope-scale": 1.5, "yarn-orig-ctx": 262144 } } JSON # 0.0.0.0 inside the container's own network: only the m64 gate reaches it. The front calls # it as Host "capsule", which Basalt's DNS-rebinding check must accept. exec /opt/basalt/bin/basalt serve --config /scratch/basalt_config.json \ --model /weights/basalt/Qwen3.8-FN-GSQ-RCO-IQ3_S.basalt \ --alias qwen3.8-flash-next-iq3_s-basalt-384k \ --vision dynamic \ --host 0.0.0.0 --port "$M64_PORT" --allowed-host capsule