From 47e54605322aea8c7b1a263399bc2f2b1a99431e Mon Sep 17 00:00:00 2001 From: Lucas Armand Date: Tue, 4 Nov 2025 15:55:14 -0800 Subject: [PATCH 1/6] added mtoken --- lib/backend.py | 4 ++++ lib/data_types.py | 1 + lib/metrics.py | 6 ++++++ 3 files changed, 11 insertions(+) diff --git a/lib/backend.py b/lib/backend.py index 6a2f3c0..3f308ed 100644 --- a/lib/backend.py +++ b/lib/backend.py @@ -69,10 +69,14 @@ class Backend: report_addr: str = dataclasses.field( default_factory=lambda: os.environ.get("REPORT_ADDR", "https://run.vast.ai") ) + mtoken: str = dataclasses.field( + default_factory=lambda: os.environ.get("MASTER_TOKEN", "") + ) def __post_init__(self): self.metrics = Metrics() self.metrics._set_version(self.version) + self.metrics._set_mtoken(self.mtoken) self._total_pubkey_fetch_errors = 0 self._pubkey = self._fetch_pubkey() self.__start_healthcheck: bool = False diff --git a/lib/data_types.py b/lib/data_types.py index 77883c5..a7f0fad 100644 --- a/lib/data_types.py +++ b/lib/data_types.py @@ -286,6 +286,7 @@ class AutoScalerData: """Data that is reported to autoscaler""" id: int + moken: str version: str loadtime: float cur_load: float diff --git a/lib/metrics.py b/lib/metrics.py index 5f15f74..93b166d 100644 --- a/lib/metrics.py +++ b/lib/metrics.py @@ -28,6 +28,7 @@ def get_url() -> str: @dataclass class Metrics: version: str = "0" + mtoken: str = "" last_metric_update: float = 0.0 last_request_served: float = 0.0 update_pending: bool = False @@ -142,12 +143,16 @@ class Metrics: def _set_version(self, version: str) -> None: self.version = version + def _set_mtoken(self, mtoken: str) -> None: + self.mtoken = mtoken + #######################################Private####################################### async def __send_delete_requests_and_reset(self): async def post(report_addr: str, idxs: list[int], success_flag: bool) -> bool: data = { "worker_id": self.id, + "mtoken": self.mtoken, "request_idxs": idxs, "success": success_flag, } @@ -209,6 +214,7 @@ class Metrics: def compute_autoscaler_data() -> AutoScalerData: return AutoScalerData( id=self.id, + mtoken=self.mtoken, version=self.version, loadtime=(loadtime_snapshot or 0.0), new_load=self.model_metrics.workload_processing, From f5134d4bf522679c81ac7a4bf0af8d37bbd9cde9 Mon Sep 17 00:00:00 2001 From: Lucas Armand Date: Tue, 4 Nov 2025 16:59:39 -0800 Subject: [PATCH 2/6] Fix spelling mistake --- lib/data_types.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/data_types.py b/lib/data_types.py index a7f0fad..d948c60 100644 --- a/lib/data_types.py +++ b/lib/data_types.py @@ -286,7 +286,7 @@ class AutoScalerData: """Data that is reported to autoscaler""" id: int - moken: str + mtoken: str version: str loadtime: float cur_load: float From 106067d71612eaff7afe01f261bf7013d6e8bb9a Mon Sep 17 00:00:00 2001 From: Lucas Armand Date: Tue, 4 Nov 2025 17:15:59 -0800 Subject: [PATCH 3/6] bump version to 0.1.1 --- lib/backend.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/backend.py b/lib/backend.py index 3f308ed..8002f3b 100644 --- a/lib/backend.py +++ b/lib/backend.py @@ -30,7 +30,7 @@ from lib.data_types import ( BenchmarkResult ) -VERSION = "0.1.0" +VERSION = "0.1.1" MSG_HISTORY_LEN = 100 log = logging.getLogger(__file__) From 8ae7b746052d7bd746f0b631131db5dd1892e265 Mon Sep 17 00:00:00 2001 From: Lucas Armand Date: Wed, 5 Nov 2025 13:32:21 -0800 Subject: [PATCH 4/6] bump version to 0.2.0 --- lib/backend.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/backend.py b/lib/backend.py index 8002f3b..5cbb7ff 100644 --- a/lib/backend.py +++ b/lib/backend.py @@ -30,7 +30,7 @@ from lib.data_types import ( BenchmarkResult ) -VERSION = "0.1.1" +VERSION = "0.2.0" MSG_HISTORY_LEN = 100 log = logging.getLogger(__file__) From b7fe4ebb91e1475bfb69e3a91ba0f20e41a0ad36 Mon Sep 17 00:00:00 2001 From: Lucas Armand Date: Fri, 7 Nov 2025 10:02:39 -0800 Subject: [PATCH 5/6] Obfuscate mtoken in logs --- lib/metrics.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/metrics.py b/lib/metrics.py index 93b166d..6fb0fce 100644 --- a/lib/metrics.py +++ b/lib/metrics.py @@ -234,17 +234,25 @@ class Metrics: async def send_data(report_addr: str) -> bool: data = compute_autoscaler_data() - full_path = report_addr.rstrip("/") + "/worker_status/" + log_data = asdict(data) + def obfuscate(secret: str) -> str: + if secret is None: + return "" + return secret[:7] if len(secret) > 7 else ("*" * len(secret)) + + log_data["mtoken"] = obfuscate(log_data.get("mtoken")) log.debug( "\n".join( [ "#" * 60, f"sending data to autoscaler", - f"{json.dumps((asdict(data)), indent=2)}", + f"{json.dumps(log_data, indent=2)}", "#" * 60, ] ) ) + + full_path = report_addr.rstrip("/") + "/worker_status/" for attempt in range(1, 4): try: session = await self.http() From c6521cb6d4d300243193e153e71c68fe1a4bec57 Mon Sep 17 00:00:00 2001 From: Lucas Armand Date: Fri, 7 Nov 2025 10:10:35 -0800 Subject: [PATCH 6/6] add ... --- lib/metrics.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/metrics.py b/lib/metrics.py index 6fb0fce..48774fe 100644 --- a/lib/metrics.py +++ b/lib/metrics.py @@ -238,7 +238,7 @@ class Metrics: def obfuscate(secret: str) -> str: if secret is None: return "" - return secret[:7] if len(secret) > 7 else ("*" * len(secret)) + return secret[:7] + "..." if len(secret) > 7 else ("*" * len(secret)) log_data["mtoken"] = obfuscate(log_data.get("mtoken")) log.debug(