From 14e9c40a72aa247ceb07b93b32b1fe353317bcf2 Mon Sep 17 00:00:00 2001 From: Sage <80211083+sagearc@users.noreply.github.com> Date: Mon, 21 Sep 2026 18:32:52 +0300 Subject: [PATCH] [Observability] Expose python/rust frontend identity in `/server_info` (#39993) Signed-off-by: Sage Ahrac --- python/sglang/srt/entrypoints/http_server.py | 1 + rust/sglang-server/src/api_server/common.rs | 2 ++ test/registered/unit/entrypoints/test_server_info.py | 1 + 3 files changed, 4 insertions(+) diff --git a/python/sglang/srt/entrypoints/http_server.py b/python/sglang/srt/entrypoints/http_server.py index b5d388416..b60f82398 100644 --- a/python/sglang/srt/entrypoints/http_server.py +++ b/python/sglang/srt/entrypoints/http_server.py @@ -846,6 +846,7 @@ async def server_info(): "startup_time": _global_state.tokenizer_manager.startup_time, "internal_states": internal_states, "version": __version__, + "frontend": "python", # Structured KV-event publisher descriptor for KV-aware routers. # `None` when publishing is disabled or misconfigured; see # `runtime_context.describe_kv_events_publisher` for the contract. diff --git a/rust/sglang-server/src/api_server/common.rs b/rust/sglang-server/src/api_server/common.rs index 4c64a4e9a..b7b142f6b 100644 --- a/rust/sglang-server/src/api_server/common.rs +++ b/rust/sglang-server/src/api_server/common.rs @@ -173,6 +173,7 @@ fn shape_server_info(msgpack: &[u8], server_args: &ServerArgs) -> Result "max_context_length": server_args.model_config.context_len, "max_total_num_tokens": server_args.max_total_num_tokens, "version": server_args.version, + "frontend": "rust", "internal_states": [serde_json::Value::Object(state_out)], }); serde_json::to_vec(&response).map_err(|e| e.to_string()) @@ -240,5 +241,6 @@ mod tests { assert!(state0.get("api_key").is_none()); // Curated top-level config comes from typed accessors, not the dump. assert_eq!(v["model_path"], "/m"); + assert_eq!(v["frontend"], "rust"); } } diff --git a/test/registered/unit/entrypoints/test_server_info.py b/test/registered/unit/entrypoints/test_server_info.py index b40d24a01..f159dec05 100644 --- a/test/registered/unit/entrypoints/test_server_info.py +++ b/test/registered/unit/entrypoints/test_server_info.py @@ -523,6 +523,7 @@ class TestServerInfoExistingFieldsPreserved(CustomTestCase): self.assertIn("internal_states", info) self.assertIn("version", info) + self.assertEqual(info["frontend"], "python") def test_kv_events_config_raw_field_still_surfaced(self): # The new structured `kv_events` block sits alongside the