From 5460fbd108d21aec21080f04d3b30d3dbd1df4bf Mon Sep 17 00:00:00 2001 From: CoolBoy Date: Fri, 10 Jul 2026 01:02:25 +0800 Subject: [PATCH] Add embedded Hugging Face token fallback --- README.md | 7 ++++--- main.py | 4 ++-- modelhub_submmit_api/defaults.py | 1 + modelhub_submmit_api/runner_common.py | 4 +++- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index c958c5e..2c36b0b 100644 --- a/README.md +++ b/README.md @@ -15,12 +15,13 @@ submission poller in a child process. ## Runtime Environment -The image includes a single-account submission token fallback for the agent -platform. Environment variables can override it without rebuilding the image. +The image includes single-account ModelHub and Hugging Face token fallbacks for +the agent platform. Environment variables can override them without rebuilding +the image. - `MODELHUB_XC_TOKEN`, `XC_TOKEN`, or `MODELHUB_TOKEN` for ModelHub API authentication - `MODELHUB_JWT_TOKEN` or `JWT_TOKEN` can be used instead when the platform provides a JWT -- `HF_TOKEN` optional, but recommended for Hugging Face API limits +- `HF_TOKEN` optional override for the embedded Hugging Face fallback token - `STRATEGY_ID` is expected to be injected by the ModelHub agent platform and is attached to submissions for strategy attribution; it is not an API authentication token Optional tuning: diff --git a/main.py b/main.py index b20645d..c6c7b4a 100644 --- a/main.py +++ b/main.py @@ -9,7 +9,7 @@ import time from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer from pathlib import Path -from modelhub_submmit_api.defaults import EMBEDDED_MODELHUB_XC_TOKEN +from modelhub_submmit_api.defaults import EMBEDDED_HF_TOKEN, EMBEDDED_MODELHUB_XC_TOKEN HOST = "0.0.0.0" @@ -75,7 +75,7 @@ def _worker_command() -> list[str]: def _config() -> dict[str, object]: return { "strategy_id_present": bool(os.getenv("STRATEGY_ID")), - "hf_token_present": bool(os.getenv("HF_TOKEN")), + "hf_token_present": bool(os.getenv("HF_TOKEN") or EMBEDDED_HF_TOKEN), "modelhub_auth_present": _has_modelhub_auth(), "config_error": config_error, "worker_running": worker is not None and worker.poll() is None, diff --git a/modelhub_submmit_api/defaults.py b/modelhub_submmit_api/defaults.py index 1d0eebb..a0081d5 100644 --- a/modelhub_submmit_api/defaults.py +++ b/modelhub_submmit_api/defaults.py @@ -1 +1,2 @@ EMBEDDED_MODELHUB_XC_TOKEN = "a14776f6e7ad4c04a1710260613c294c" +EMBEDDED_HF_TOKEN = "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" diff --git a/modelhub_submmit_api/runner_common.py b/modelhub_submmit_api/runner_common.py index ac30145..1944833 100644 --- a/modelhub_submmit_api/runner_common.py +++ b/modelhub_submmit_api/runner_common.py @@ -4,7 +4,7 @@ import argparse import os from pathlib import Path -from defaults import EMBEDDED_MODELHUB_XC_TOKEN +from defaults import EMBEDDED_HF_TOKEN, EMBEDDED_MODELHUB_XC_TOKEN DEFAULT_KEY_PATH = Path("KEY.md") @@ -43,6 +43,8 @@ def ensure_tokens(args: argparse.Namespace) -> None: if not getattr(args, "hf_token", None): args.hf_token = os.getenv("HF_TOKEN") or values.get("HF_TOKEN") + if not getattr(args, "hf_token", None): + args.hf_token = EMBEDDED_HF_TOKEN modelhub_token = getattr(args, "modelhub_token", None) if not modelhub_token: