Model weights
huggingface_hub reads HF_ENDPOINT, and the platform injects FORGE_HF_ENDPOINT into every
training and Playground container as exactly that. Point it at a reverse proxy — Nexus, Artifactory,
or anything else that fronts the Hub.
Two adjustments travel with it automatically, and both exist because of a failure that is painful to
diagnose:
Timeouts are widened
Timeouts are widened
huggingface_hub defaults to a ten-second timeout. A mirror’s first fetch of a file it has never
cached goes all the way to the origin, and routinely takes longer than that. The symptom is a
download that fails on a cold file and succeeds on a retry, which reads like a flaky network
rather than a configuration problem.Xet is disabled
Xet is disabled
Xet needs short-lived tokens that a reverse proxy cannot issue. Left on, weight downloads stall
on a 400 whose body contains nothing but a URL — no message, no field, nothing to search for.If your image genuinely implements Xet, override it explicitly through
FORGE_PASSTHROUGH_ENV.Container images
Training images come from the recipe catalog, which names public registries such asnvcr.io. On an
isolated network you mirror them and redirect:
Pin digests rather than tags in production. A tag that moves inside your own mirror is still a tag
that moved.
Building the image behind a mirror
The Dockerfile defaults to public upstreams so it builds anywhere. Point it at an internal mirror with build arguments:APT_MIRROR empty keeps Debian’s own sources, which is what you want on a machine
with normal internet access.
The platform runtime
The job side needsstarforge to report metrics, and the training image will not have it.
FORGE_JOB_RUNNER_MODE=bundled, the default, solves this without network access: the server injects
a content-addressed PEX into the job, so the training image needs nothing installed. This is one of
the few places where the air-gapped case is the easy one — leave the setting alone.
Datasets
Nothing here reaches the internet. Datasets are pushed withsf dataset push into the deployment’s
own object storage, and pulled into the shared cache when a job starts. See
datasets.
Confirm it worked
Submit the quickstart job and watch the logs. The sequence you want is:HF_ENDPOINT.