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
FORGE_INGEST_URL must be reachable from training nodes
FORGE_INGEST_URL must be reachable from training nodes
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.SSE and reverse proxies
SSE and reverse proxies
Live logs are SSE: disable
proxy_buffering for /api in nginx and relax read timeouts. Clients resume from a cursor after a disconnect.Metric failures never stop training
Metric failures never stop training
SDK reporting is a side channel: failures log, they do not raise. Lifecycle is strict and is retried.
AI diagnostics
AI diagnostics
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 copycommon/telemetry.py from the tutorial repo — that file is gone.
starforge-core, import starforge. Image layout, train.sh, and empty-chart checks: Custom training.