Skip to main content
Training containers get STARFORGE_ENDPOINT / STARFORGE_RUN_ID / STARFORGE_TOKEN. Catalog methods are instrumented by the runner. Custom training uses starforge.report for curves. stdout/stderr is forwarded by the runner as well. Scripts should not post logs themselves.

Endpoints

These are for the runner and the SDK. You usually should not call them by hand. Ingest tokens are issued per run, scoped and time-limited (FORGE_INGEST_TOKEN_DAYS must cover the longest training job). The web guard rejects ingest tokens on regular APIs.

Ops notes

Empty charts are most often 127.0.0.1 or an address outside the cluster. Containers / Pods / compute nodes need a direct path to that URL.
Live logs are SSE: disable proxy_buffering for /api in nginx and relax read timeouts. Clients resume from a cursor after a disconnect.
SDK reporting is a side channel: failures log, they do not raise. Lifecycle is strict and is retried.
Failed jobs trigger diagnostics (LLM optional). Inputs are the log tail, metric trends, validation samples, and a config snapshot. A diagnostics failure does not change job status.

Custom training

Do not hand-roll urllib, and do not copy common/telemetry.py from the tutorial repo — that file is gone.
Install starforge-core, import starforge. Image layout, train.sh, and empty-chart checks: Custom training.