# frank-small runtime image: the digest-pinned vLLM gemma-x86_64-cu129 base # (vLLM 0.22.1rc1.dev357+g74b5964f0 — the image that loads # gemma-4-12B-it-qat-w4a16-ct, runs the Gemma4MTPModel drafter and carries # the gemma4 reasoning/tool-call parsers) plus the vllm[audio] extra. # # The base image ships WITHOUT the audio extras, so an input_audio content # part 500s with "Please install vllm[audio] for audio support" (measured # 2026-09-19). The extra is just four PyPI packages (av, scipy, soundfile, # mistral_common[audio]); installing the extras directly — not # `pip install vllm[audio]` — keeps the pinned dev build in place: a bare # `vllm[audio]` would make pip reach for the PyPI release and replace the # 0.22.1rc1.dev build that knows gemma4. # # Built by scripts/deploy-remote.sh on dankclaw (rootless podman, network on # for pip): the base is pulled by digest and re-tagged to the FROM ref below # first, then `podman build` produces the :frank-small tag the quadlet runs. FROM localhost/vllm/vllm-openai:gemma4-unified # The vllm[audio] extra as raw packages (header explains why not # `pip install vllm[audio]`): audio input needs av/scipy/soundfile plus # the mistral_common audio protocol pieces. RUN pip install --no-cache-dir av scipy soundfile "mistral_common[audio]"