A GPU cluster manager for high-performance AI model serving (vLLM, SGLang) and on-demand SSH-accessible GPU instances.
This report presents the forensic synthetic code analysis of gpustack/gpustack, a Python project with 5,319 GitHub stars. SynthScan v2.0 examined 189,769 lines of code across 641 source files, recording 3215 pattern matches distributed across 24 syntactic categories. The overall adjusted score of 21.3 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 3215 distinct pattern matches across 24 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/routers/test_clusters.py | 17 | def test_get_server_url_strips_trailing_slash_from_cluster_override(): | CODE |
| LOW | tests/routers/test_clusters.py | 29 | def test_get_server_url_strips_trailing_slash_from_external_url(): | CODE |
| LOW⚡ | tests/routers/test_clusters.py | 41 | def test_get_server_url_falls_back_to_request_origin(): | CODE |
| LOW⚡ | tests/routers/test_clusters.py | 50 | def test_cluster_update_normalizes_server_url(): | CODE |
| LOW⚡ | tests/routers/test_clusters.py | 59 | def test_config_normalizes_server_external_url(monkeypatch, tmp_path): | CODE |
| LOW | tests/routers/test_benchmarks.py | 4 | def test_order_benchmark_export_fields_puts_identifying_fields_first(): | CODE |
| LOW | tests/routers/test_model_provider.py | 150 | def test_determine_model_category(provider_type, model, expected): | CODE |
| LOW⚡ | tests/routers/test_usage.py | 269 | def test_self_scope_personal_includes_null_consumer_rows(): | CODE |
| LOW⚡ | tests/routers/test_usage.py | 279 | def test_self_scope_org_context_excludes_null_consumer_rows(): | CODE |
| LOW⚡ | tests/routers/test_usage.py | 288 | def test_breakdown_request_allows_page_minus_one_sentinel(): | CODE |
| LOW | tests/routers/test_usage.py | 55 | async def test_get_usage_meta_returns_identity_filters_for_admin(): | CODE |
| LOW | tests/routers/test_usage.py | 188 | async def test_get_usage_meta_hides_admin_only_options_for_regular_user(): | CODE |
| LOW | tests/routers/test_usage.py | 225 | async def test_get_usage_meta_hides_org_and_group_for_admin_pinned_to_org(): | CODE |
| LOW | tests/routers/test_usage.py | 299 | def test_breakdown_request_allows_legacy_large_per_page(): | CODE |
| LOW | tests/routers/test_usage.py | 311 | def test_breakdown_request_rejects_per_page_over_cap(): | CODE |
| LOW | tests/routers/test_usage.py | 322 | def test_breakdown_request_rejects_page_zero(): | CODE |
| LOW | tests/routers/test_usage.py | 332 | def test_breakdown_request_rejects_other_negative_page(): | CODE |
| LOW | tests/routers/test_usage.py | 346 | async def test_get_usage_breakdown_no_pagination_returns_all_date_buckets(): | CODE |
| LOW | tests/routers/test_usage.py | 395 | async def test_get_usage_breakdown_no_pagination_rejects_oversized(monkeypatch): | CODE |
| LOW | tests/routers/test_usage.py | 435 | async def test_get_usage_breakdown_returns_paginated_route_items(): | CODE |
| LOW | tests/routers/test_usage.py | 520 | async def test_get_usage_breakdown_returns_multidimensional_export_rows_with_no_api_key(): | CODE |
| LOW | tests/routers/test_usage.py | 621 | async def test_get_usage_breakdown_flags_deleted_user_by_live_existence(): | CODE |
| LOW | tests/routers/test_usage.py | 694 | async def test_get_usage_breakdown_flags_deleted_route_and_api_key_by_live_existence(): | CODE |
| LOW | tests/routers/test_usage.py | 779 | async def test_get_usage_breakdown_ignores_incomplete_api_key_identity_groups(): | CODE |
| LOW | tests/routers/test_usage.py | 818 | async def test_get_usage_breakdown_formats_month_date_label_as_year_month(): | CODE |
| LOW | tests/routers/test_usage.py | 870 | async def test_get_usage_breakdown_filters_deleted_api_key_by_value_and_current(): | CODE |
| LOW | tests/routers/test_usage.py | 916 | async def test_get_usage_breakdown_defaults_regular_user_to_self_scope(): | CODE |
| LOW | tests/routers/test_usage.py | 942 | async def test_get_usage_breakdown_org_owner_scopes_by_consumer_principal(): | CODE |
| LOW | tests/routers/test_usage.py | 973 | async def test_get_usage_breakdown_rejects_regular_user_user_group(): | CODE |
| LOW | tests/routers/test_usage.py | 989 | async def test_get_usage_breakdown_groups_by_organization_for_admin(): | CODE |
| LOW | tests/routers/test_usage.py | 1070 | async def test_get_usage_breakdown_rejects_organization_group_by_for_non_admin(): | CODE |
| LOW | tests/routers/test_usage.py | 1085 | async def test_get_usage_breakdown_rejects_organization_filter_for_non_admin(): | CODE |
| LOW | tests/routers/test_usage.py | 1107 | async def test_get_usage_breakdown_rejects_user_group_filter_in_self_scope(): | CODE |
| LOW | tests/routers/test_usage.py | 1131 | async def test_get_usage_breakdown_expands_user_group_filter_to_members(): | CODE |
| LOW | tests/routers/test_usage.py | 1200 | async def test_get_usage_breakdown_organization_uses_snapshot_name_and_kind(): | CODE |
| LOW | tests/routers/test_models.py | 58 | async def test_create_model_rejects_default_org_cluster_for_custom_org(monkeypatch): | CODE |
| LOW | tests/routers/test_models.py | 75 | async def test_create_model_hides_non_visible_cluster_as_missing(monkeypatch): | CODE |
| LOW | tests/routers/test_models.py | 92 | async def test_create_model_rejects_missing_cluster(monkeypatch): | CODE |
| LOW | tests/routers/test_models.py | 107 | async def test_create_model_rejects_deleted_cluster(monkeypatch): | CODE |
| LOW | tests/routers/test_models.py | 123 | async def test_create_model_allows_own_org_cluster(monkeypatch): | CODE |
| LOW | tests/routers/test_models.py | 144 | async def test_create_model_admin_all_mode_derives_owner_from_cluster(monkeypatch): | CODE |
| LOW | tests/routers/test_models.py | 171 | async def test_create_model_admin_all_mode_rejects_missing_cluster(monkeypatch): | CODE |
| LOW | tests/routers/test_models.py | 217 | async def test_update_model_rejects_cross_org_cluster(monkeypatch): | CODE |
| LOW | tests/routers/test_models.py | 228 | async def test_update_model_hides_non_visible_cluster_as_missing(monkeypatch): | CODE |
| LOW | tests/routers/test_models.py | 235 | async def test_update_model_rejects_missing_cluster(monkeypatch): | CODE |
| LOW | tests/routers/test_models.py | 252 | def test_model_watch_filter_applies_state( | CODE |
| LOW | tests/routers/test_models.py | 265 | def test_model_watch_filter_passes_id_only_delete_events(monkeypatch): | CODE |
| LOW⚡ | tests/routers/test_gpu_devices.py | 45 | def test_vram_allocated_for_index(vram, index, expected): | CODE |
| LOW⚡ | tests/routers/test_gpu_devices.py | 49 | def test_to_gpu_device_public_injects_allocated(): | CODE |
| LOW⚡ | tests/routers/test_gpu_devices.py | 56 | def test_to_gpu_device_public_no_assignment_defaults_zero(): | CODE |
| LOW⚡ | tests/routers/test_gpu_devices.py | 61 | def test_to_gpu_device_public_index_none_defaults_zero(): | CODE |
| LOW⚡ | tests/routers/test_gpu_devices.py | 66 | def test_to_gpu_device_public_memory_none(): | CODE |
| LOW⚡ | tests/routers/test_gpu_devices.py | 71 | def test_convert_to_public_class(): | CODE |
| LOW⚡ | tests/routers/test_gpu_devices.py | 80 | async def fake_get_worker_allocated(worker_id): | CODE |
| LOW⚡ | tests/routers/test_gpu_devices.py | 90 | async def test_inject_allocated_into_event(): | CODE |
| LOW⚡ | tests/routers/test_gpu_devices.py | 99 | async def test_inject_allocated_into_event_skips_deleted(): | CODE |
| LOW⚡ | tests/routers/test_gpu_devices.py | 107 | async def test_inject_allocated_into_event_skips_non_public_data(): | CODE |
| LOW⚡ | tests/routers/test_gpu_devices.py | 115 | async def test_inject_allocated_into_event_skips_memory_none(): | CODE |
| LOW | tests/routers/test_worker_utils.py | 17 | def test_filter_workers_by_fields_exact(): | CODE |
| LOW | tests/routers/test_worker_utils.py | 28 | def test_filter_workers_by_fields_fuzzy(): | CODE |
| 1571 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/cmd/test_reload_config_auth.py | 21 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/cmd/test_reload_config_auth.py | 23 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/cmd/test_reload_config_auth.py | 46 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/cmd/test_reload_config_auth.py | 48 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/cmd/test_reload_config_auth.py | 101 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/cmd/test_reload_config_auth.py | 103 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/k8s/test_template_render.py | 56 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/k8s/test_template_render.py | 58 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/k8s/test_template_render.py | 112 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/k8s/test_template_render.py | 115 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/k8s/test_template_render.py | 185 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/k8s/test_template_render.py | 188 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/k8s/test_template_render.py | 292 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/k8s/test_template_render.py | 294 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/k8s/test_template_render.py | 574 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/k8s/test_template_render.py | 576 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/k8s/test_template_render.py | 619 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/k8s/test_template_render.py | 625 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/k8s/test_template_render.py | 453 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/k8s/test_template_render.py | 455 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/k8s/test_template_render.py | 508 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/k8s/test_template_render.py | 511 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/server/test_usage_details_archiver.py | 24 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/server/test_usage_details_archiver.py | 26 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/server/test_usage_details_archiver.py | 57 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/server/test_usage_details_archiver.py | 60 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/server/test_usage_details_archiver.py | 127 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/server/test_usage_details_archiver.py | 129 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/server/test_usage_details_archiver.py | 152 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/server/test_usage_details_archiver.py | 154 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/server/test_metrics_collector.py | 239 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/server/test_metrics_collector.py | 241 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/server/test_metrics_collector.py | 305 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/server/test_metrics_collector.py | 307 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/server/test_metrics_collector.py | 330 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/server/test_metrics_collector.py | 332 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/server/test_metrics_collector.py | 388 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/server/test_metrics_collector.py | 392 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/server/test_resource_usage_collector.py | 72 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/server/test_resource_usage_collector.py | 74 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/server/test_resource_usage_collector.py | 158 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/server/test_resource_usage_collector.py | 160 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/server/test_resource_usage_collector.py | 235 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/server/test_resource_usage_collector.py | 237 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/server/test_resource_usage_collector.py | 302 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/server/test_resource_usage_collector.py | 304 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/server/test_resource_usage_collector.py | 513 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/server/test_resource_usage_collector.py | 515 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/server/test_resource_event_logger.py | 178 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/server/test_resource_event_logger.py | 181 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/server/test_cache.py | 21 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/server/test_cache.py | 23 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/server/test_cache.py | 109 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/server/test_cache.py | 111 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/server/test_cache.py | 319 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/server/test_cache.py | 321 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/server/test_cache.py | 351 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/server/test_cache.py | 353 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/utils/test_ssl_context.py | 111 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/utils/test_ssl_context.py | 115 | # --------------------------------------------------------------------------- | COMMENT |
| 102 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/websocket_proxy/test_connection.py | 134 | except Exception as e: | CODE |
| LOW | tests/websocket_proxy/test_proxy_server.py | 326 | except Exception: | CODE |
| LOW | tests/websocket_proxy/test_proxy_server.py | 485 | except Exception as e: | CODE |
| LOW | tests/websocket_proxy/test_proxy_server.py | 674 | except Exception as e: | CODE |
| MEDIUM | tests/websocket_proxy/test_websocket_bench.py | 86 | def handle_request(reader, writer): | CODE |
| MEDIUM | tests/websocket_proxy/test_websocket_bench.py | 181 | def handle_request(reader, writer): | CODE |
| MEDIUM | tests/websocket_proxy/test_websocket_bench.py | 277 | def handle_request(reader, writer): | CODE |
| MEDIUM | tests/websocket_proxy/test_websocket_bench.py | 369 | def handle_request(reader, writer): | CODE |
| MEDIUM | tests/websocket_proxy/test_websocket_bench.py | 458 | def handle_request(reader, writer): | CODE |
| MEDIUM | tests/websocket_proxy/test_websocket_bench.py | 552 | def handle_request(reader, writer): | CODE |
| MEDIUM | tests/websocket_proxy/test_websocket_bench.py | 648 | def handle_request(reader, writer): | CODE |
| MEDIUM | tests/websocket_proxy/test_websocket_bench.py | 784 | def handle_request(reader, writer): | CODE |
| MEDIUM | tests/websocket_proxy/test_websocket_bench.py | 914 | def handle_request(reader, writer): | CODE |
| LOW | tests/websocket_proxy/test_websocket_bench.py | 97 | except Exception: | CODE |
| LOW | tests/websocket_proxy/test_websocket_bench.py | 192 | except Exception as e: | CODE |
| LOW | tests/websocket_proxy/test_websocket_bench.py | 288 | except Exception: | CODE |
| LOW | tests/websocket_proxy/test_websocket_bench.py | 377 | except Exception: | CODE |
| LOW | tests/websocket_proxy/test_websocket_bench.py | 470 | except Exception: | CODE |
| LOW | tests/websocket_proxy/test_websocket_bench.py | 558 | except Exception: | CODE |
| LOW | tests/websocket_proxy/test_websocket_bench.py | 673 | except Exception as e: | CODE |
| LOW | tests/websocket_proxy/test_websocket_bench.py | 797 | except Exception: | CODE |
| LOW | tests/websocket_proxy/test_websocket_bench.py | 921 | except Exception: | CODE |
| LOW | tests/websocket_proxy/test_server_federation.py | 506 | except Exception as e: | CODE |
| LOW | tests/api/test_exceptions.py | 61 | except Exception as e: | CODE |
| LOW | tests/api/test_exceptions.py | 156 | except Exception as e: | CODE |
| MEDIUM | tests/api/test_exceptions.py | 55 | def test_error_response_model_validate(name, given, expected): | CODE |
| MEDIUM | tests/api/test_exceptions.py | 152 | def test_raise_if_response_error(name, given, expected): | CODE |
| LOW | hack/perf/run_model_benchmark.py | 386 | except Exception as exc: | CODE |
| LOW | hack/perf/run_model_benchmark.py | 461 | except Exception as exc: | CODE |
| LOW | hack/perf/run_model_benchmark.py | 663 | except Exception as exc: | CODE |
| LOW | hack/perf/run_model_benchmark.py | 702 | except Exception as exc: | CODE |
| LOW | hack/perf/run_model_benchmark.py | 785 | except Exception as exc: | CODE |
| LOW | hack/perf/run_model_benchmark.py | 963 | except Exception as e: | CODE |
| LOW | hack/perf/run_model_benchmark.py | 976 | except Exception as exc: | CODE |
| LOW | hack/perf/run_model_benchmark.py | 1195 | except Exception as e: | CODE |
| LOW | hack/perf/fill_benchmark_raw_metrics.py | 191 | except Exception as exc: | CODE |
| LOW | gpustack/security.py | 21 | except Exception: | CODE |
| LOW | gpustack/extension.py | 47 | except Exception: | CODE |
| LOW | gpustack/extension.py | 72 | except Exception: | CODE |
| LOW | gpustack/cmd/db_migration.py | 81 | except Exception as e: | CODE |
| LOW | gpustack/cmd/db_migration.py | 120 | except Exception as e: | CODE |
| LOW | gpustack/cmd/db_migration.py | 142 | except Exception as e: | CODE |
| LOW | gpustack/cmd/db_migration.py | 169 | except Exception as e: | CODE |
| MEDIUM | gpustack/cmd/db_migration.py | 70 | def _run(args): | CODE |
| LOW | gpustack/cmd/download_tools.py | 80 | except Exception as e: | CODE |
| LOW | gpustack/cmd/reload_config.py | 122 | except Exception as e: | CODE |
| LOW | gpustack/cmd/reload_config.py | 264 | except Exception as e: | CODE |
| LOW | gpustack/cmd/reload_config.py | 294 | except Exception: | CODE |
| MEDIUM | gpustack/cmd/reload_config.py | 103 | def run(args): | CODE |
| LOW | gpustack/cmd/start.py | 685 | except Exception as e: | CODE |
| LOW | gpustack/cmd/start.py | 704 | except Exception as e: | CODE |
| LOW | gpustack/cmd/start.py | 726 | except Exception as e: | CODE |
| LOW | gpustack/cmd/start.py | 741 | except Exception: | CODE |
| LOW | gpustack/cmd/start.py | 771 | except Exception as e: | CODE |
| LOW | gpustack/cmd/reset_admin_password.py | 94 | except Exception as e: | CODE |
| LOW | gpustack/cmd/reset_admin_password.py | 121 | except Exception: | CODE |
| MEDIUM | gpustack/cmd/reset_admin_password.py | 47 | def run(args): | CODE |
| LOW | gpustack/cmd/images.py | 60 | except Exception as e: | CODE |
| LOW | gpustack/cmd/prerun.py | 77 | except Exception as e: | CODE |
| LOW | gpustack/cloud_providers/digital_ocean.py | 48 | except Exception as e: | CODE |
| 444 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | gpustack/schemas/gpu_instance_persistent_volumes.py | 0 | represents the public view of a gpu instance ssh public key, containing only fields that are safe to expose to clients. | STRING |
| HIGH | …ustack/schemas/gpu_instance_persistent_volume_types.py | 0 | represents the public view of a gpu instance ssh public key, containing only fields that are safe to expose to clients. | STRING |
| HIGH | gpustack/schemas/gpu_instance_templates.py | 0 | represents the public view of a gpu instance ssh public key, containing only fields that are safe to expose to clients. | STRING |
| HIGH | gpustack/schemas/gpu_instance_ssh_public_keys.py | 0 | represents the public view of a gpu instance ssh public key, containing only fields that are safe to expose to clients. | STRING |
| HIGH | gpustack/client/generated_benchmark_client.py | 0 | list resources. args: params: query parameters for filtering use_cache: whether to use cache. defaults to true (use cach | STRING |
| HIGH | gpustack/client/generated_user_client.py | 0 | list resources. args: params: query parameters for filtering use_cache: whether to use cache. defaults to true (use cach | STRING |
| HIGH | gpustack/client/generated_model_client.py | 0 | list resources. args: params: query parameters for filtering use_cache: whether to use cache. defaults to true (use cach | STRING |
| HIGH | gpustack/client/generated_model_instance_client.py | 0 | list resources. args: params: query parameters for filtering use_cache: whether to use cache. defaults to true (use cach | STRING |
| HIGH | gpustack/client/generated_model_file_client.py | 0 | list resources. args: params: query parameters for filtering use_cache: whether to use cache. defaults to true (use cach | STRING |
| HIGH | gpustack/client/generated_model_route_target_client.py | 0 | list resources. args: params: query parameters for filtering use_cache: whether to use cache. defaults to true (use cach | STRING |
| HIGH | gpustack/client/generated_worker_client.py | 0 | list resources. args: params: query parameters for filtering use_cache: whether to use cache. defaults to true (use cach | STRING |
| HIGH | gpustack/client/generated_inference_backend_client.py | 0 | list resources. args: params: query parameters for filtering use_cache: whether to use cache. defaults to true (use cach | STRING |
| HIGH | gpustack/client/generated_benchmark_client.py | 0 | snapshot the cache atomically with the _watch_started check. returns none if the watch cache is not currently authoritat | STRING |
| HIGH | gpustack/client/generated_user_client.py | 0 | snapshot the cache atomically with the _watch_started check. returns none if the watch cache is not currently authoritat | STRING |
| HIGH | gpustack/client/generated_model_client.py | 0 | snapshot the cache atomically with the _watch_started check. returns none if the watch cache is not currently authoritat | STRING |
| HIGH | gpustack/client/generated_model_instance_client.py | 0 | snapshot the cache atomically with the _watch_started check. returns none if the watch cache is not currently authoritat | STRING |
| HIGH | gpustack/client/generated_model_file_client.py | 0 | snapshot the cache atomically with the _watch_started check. returns none if the watch cache is not currently authoritat | STRING |
| HIGH | gpustack/client/generated_model_route_target_client.py | 0 | snapshot the cache atomically with the _watch_started check. returns none if the watch cache is not currently authoritat | STRING |
| HIGH | gpustack/client/generated_worker_client.py | 0 | snapshot the cache atomically with the _watch_started check. returns none if the watch cache is not currently authoritat | STRING |
| HIGH | gpustack/client/generated_inference_backend_client.py | 0 | snapshot the cache atomically with the _watch_started check. returns none if the watch cache is not currently authoritat | STRING |
| HIGH | gpustack/client/generated_benchmark_client.py | 0 | update cache based on received event. runs on the awatch event loop. network i/o uses the async httpx client and happens | STRING |
| HIGH | gpustack/client/generated_user_client.py | 0 | update cache based on received event. runs on the awatch event loop. network i/o uses the async httpx client and happens | STRING |
| HIGH | gpustack/client/generated_model_client.py | 0 | update cache based on received event. runs on the awatch event loop. network i/o uses the async httpx client and happens | STRING |
| HIGH | gpustack/client/generated_model_instance_client.py | 0 | update cache based on received event. runs on the awatch event loop. network i/o uses the async httpx client and happens | STRING |
| HIGH | gpustack/client/generated_model_file_client.py | 0 | update cache based on received event. runs on the awatch event loop. network i/o uses the async httpx client and happens | STRING |
| HIGH | gpustack/client/generated_model_route_target_client.py | 0 | update cache based on received event. runs on the awatch event loop. network i/o uses the async httpx client and happens | STRING |
| HIGH | gpustack/client/generated_worker_client.py | 0 | update cache based on received event. runs on the awatch event loop. network i/o uses the async httpx client and happens | STRING |
| HIGH | gpustack/client/generated_inference_backend_client.py | 0 | update cache based on received event. runs on the awatch event loop. network i/o uses the async httpx client and happens | STRING |
| HIGH | gpustack/client/generated_benchmark_client.py | 0 | get a resource by id. args: id: resource id use_cache: whether to use cache. defaults to true (use cache if available). | STRING |
| HIGH | gpustack/client/generated_user_client.py | 0 | get a resource by id. args: id: resource id use_cache: whether to use cache. defaults to true (use cache if available). | STRING |
| HIGH | gpustack/client/generated_model_client.py | 0 | get a resource by id. args: id: resource id use_cache: whether to use cache. defaults to true (use cache if available). | STRING |
| HIGH | gpustack/client/generated_model_instance_client.py | 0 | get a resource by id. args: id: resource id use_cache: whether to use cache. defaults to true (use cache if available). | STRING |
| HIGH | gpustack/client/generated_model_file_client.py | 0 | get a resource by id. args: id: resource id use_cache: whether to use cache. defaults to true (use cache if available). | STRING |
| HIGH | gpustack/client/generated_model_route_target_client.py | 0 | get a resource by id. args: id: resource id use_cache: whether to use cache. defaults to true (use cache if available). | STRING |
| HIGH | gpustack/client/generated_worker_client.py | 0 | get a resource by id. args: id: resource id use_cache: whether to use cache. defaults to true (use cache if available). | STRING |
| HIGH | gpustack/client/generated_inference_backend_client.py | 0 | get a resource by id. args: id: resource id use_cache: whether to use cache. defaults to true (use cache if available). | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | hack/perf/run_model_benchmark.py | 401 | def _update_existing_model(self, config: Model, payload: Dict[str, Any]) -> None: | CODE |
| LOW | gpustack/extension.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/ssl_context.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/cmd/version.py | 6 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/cmd/db_migration.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/cmd/download_tools.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/cmd/__init__.py | 4 | __all__ = ["setup_start_cmd", "setup_reload_config_cmd"] | CODE |
| LOW | gpustack/cmd/reload_config.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/cmd/start.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/cmd/reset_admin_password.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/cmd/prerun.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/cloud_providers/digital_ocean.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/mixins/active_record.py | 34 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/config/config.py | 59 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/config/__init__.py | 4 | __all__ = ["Config"] | CODE |
| LOW | gpustack/scheduler/queue.py | 4 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/scheduler/calculator.py | 41 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/scheduler/scheduler.py | 81 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/scheduler/evaluator.py | 53 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/catalog.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/worker_request.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/worker_instance_cleaner.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/services.py | 46 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/server.py | 131 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/update_check.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/lora_model_routes.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/controllers.py | 139 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/resource_event_logger.py | 53 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/storage_usage_collector.py | 52 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/storage_usage_collector.py | 299 | async def _settle_locked(self, vol: _OpenVolume, end_ts: datetime) -> None: | CODE |
| LOW | gpustack/server/cache.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/cache.py | 29 | def set_coordinator(coordinator: Optional["Coordinator"]) -> None: | CODE |
| LOW | gpustack/server/system_load.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/metrics_collector.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/bus.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/bus.py | 35 | __all__ = [ | CODE |
| LOW | gpustack/server/usage_details_archiver.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/worker_allocated_cache.py | 38 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/resource_usage_collector.py | 61 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | gpustack/server/resource_usage_collector.py | 501 | async def _settle_locked(self, window: _OpenWindow, end_ts: datetime) -> None: | CODE |
| LOW | gpustack/server/app.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/worker_syncer.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/worker_status_buffer.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/usage_archiver.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/lora_adapters_discovery.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/worker_selector.py | 8 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/init_db.py | 44 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/coordinator/models.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/coordinator/local.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/coordinator/cache.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/coordinator/__init__.py | 23 | __all__ = [ | CODE |
| LOW | gpustack/server/coordinator/base.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/utils/task.py | 10 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/utils/compat_importlib.py | 8 | __all__ = ['pkg_resources'] | CODE |
| LOW | gpustack/utils/ephemeral_ports.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/utils/lora_model_source.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/utils/config.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/utils/system_check.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/utils/convert.py | 6 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/utils/rollup_tz.py | 23 | logger = logging.getLogger(__name__) | CODE |
| 107 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | hack/perf/perf_doc_common.py | 1 | CODE | |
| LOW | hack/perf/plot_latency_comparison.py | 18 | CODE | |
| LOW | hack/perf/extract_json_key_table.py | 32 | CODE | |
| LOW | hack/perf/generate_latency_optimization_doc.py | 19 | CODE | |
| LOW | hack/perf/fill_benchmark_raw_metrics.py | 18 | CODE | |
| LOW | hack/perf/generate_throughput_optimization_doc.py | 19 | CODE | |
| LOW | gpustack/extension.py | 23 | CODE | |
| LOW | gpustack/ssl_context.py | 22 | CODE | |
| LOW | gpustack/cmd/__init__.py | 1 | CODE | |
| LOW | gpustack/cmd/__init__.py | 2 | CODE | |
| LOW | gpustack/config/__init__.py | 1 | CODE | |
| LOW | gpustack/server/cache.py | 13 | CODE | |
| LOW | gpustack/server/coordinator/__init__.py | 20 | CODE | |
| LOW | gpustack/server/coordinator/__init__.py | 20 | CODE | |
| LOW | gpustack/server/coordinator/__init__.py | 20 | CODE | |
| LOW | gpustack/server/coordinator/__init__.py | 21 | CODE | |
| LOW | gpustack/utils/compat_importlib.py | 4 | CODE | |
| LOW | gpustack/utils/compat_importlib.py | 6 | CODE | |
| LOW | gpustack/utils/ephemeral_ports.py | 18 | CODE | |
| LOW | gpustack/utils/resource_usage.py | 7 | CODE | |
| LOW | gpustack/utils/attrs.py | 1 | CODE | |
| LOW | gpustack/policies/candidate_selectors/__init__.py | 1 | CODE | |
| LOW | gpustack/policies/candidate_selectors/__init__.py | 2 | CODE | |
| LOW | gpustack/policies/candidate_selectors/__init__.py | 3 | CODE | |
| LOW | gpustack/policies/candidate_selectors/__init__.py | 4 | CODE | |
| LOW | gpustack/schemas/models.py | 24 | CODE | |
| LOW | gpustack/schemas/models.py | 32 | CODE | |
| LOW | gpustack/schemas/models.py | 33 | CODE | |
| LOW | gpustack/schemas/clusters.py | 41 | CODE | |
| LOW | gpustack/schemas/clusters.py | 41 | CODE | |
| LOW | gpustack/schemas/clusters.py | 42 | CODE | |
| LOW | gpustack/schemas/clusters.py | 43 | CODE | |
| LOW | gpustack/schemas/principals.py | 54 | CODE | |
| LOW | gpustack/schemas/__init__.py | 1 | CODE | |
| LOW | gpustack/schemas/__init__.py | 1 | CODE | |
| LOW | gpustack/schemas/__init__.py | 1 | CODE | |
| LOW | gpustack/schemas/__init__.py | 1 | CODE | |
| LOW | gpustack/schemas/__init__.py | 1 | CODE | |
| LOW | gpustack/schemas/__init__.py | 1 | CODE | |
| LOW | gpustack/schemas/__init__.py | 1 | CODE | |
| LOW | gpustack/schemas/__init__.py | 1 | CODE | |
| LOW | gpustack/schemas/__init__.py | 1 | CODE | |
| LOW | gpustack/schemas/__init__.py | 1 | CODE | |
| LOW | gpustack/schemas/__init__.py | 1 | CODE | |
| LOW | gpustack/schemas/__init__.py | 1 | CODE | |
| LOW | gpustack/schemas/__init__.py | 1 | CODE | |
| LOW | gpustack/schemas/__init__.py | 1 | CODE | |
| LOW | gpustack/schemas/__init__.py | 17 | CODE | |
| LOW | gpustack/schemas/__init__.py | 17 | CODE | |
| LOW | gpustack/schemas/__init__.py | 17 | CODE | |
| LOW | gpustack/schemas/__init__.py | 17 | CODE | |
| LOW | gpustack/schemas/__init__.py | 23 | CODE | |
| LOW | gpustack/schemas/__init__.py | 23 | CODE | |
| LOW | gpustack/schemas/__init__.py | 23 | CODE | |
| LOW | gpustack/schemas/__init__.py | 23 | CODE | |
| LOW | gpustack/schemas/__init__.py | 23 | CODE | |
| LOW | gpustack/schemas/__init__.py | 23 | CODE | |
| LOW | gpustack/schemas/__init__.py | 23 | CODE | |
| LOW | gpustack/schemas/__init__.py | 23 | CODE | |
| LOW | gpustack/schemas/__init__.py | 23 | CODE | |
| 175 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/scheduler/test_scheduler_subscribe.py | 99 | CODE | |
| LOW | …date_selectors/gguf/test_gguf_resource_fit_selector.py | 1424 | CODE | |
| LOW | …end_mindie/test_ascend_mindie_resource_fit_selector.py | 392 | CODE | |
| LOW | …end_mindie/test_ascend_mindie_resource_fit_selector.py | 1680 | CODE | |
| LOW | …end_mindie/test_ascend_mindie_resource_fit_selector.py | 1876 | CODE | |
| LOW | …end_mindie/test_ascend_mindie_resource_fit_selector.py | 393 | CODE | |
| LOW | …end_mindie/test_ascend_mindie_resource_fit_selector.py | 1683 | CODE | |
| LOW | …end_mindie/test_ascend_mindie_resource_fit_selector.py | 1879 | CODE | |
| LOW | tests/websocket_proxy/test_proxy_server.py | 418 | CODE | |
| LOW | tests/websocket_proxy/test_proxy_server.py | 529 | CODE | |
| LOW | tests/websocket_proxy/test_proxy_server.py | 443 | CODE | |
| LOW | tests/websocket_proxy/test_proxy_server.py | 554 | CODE | |
| LOW | hack/perf/perf_doc_common.py | 363 | CODE | |
| LOW | hack/perf/extract_json_key_table.py | 128 | CODE | |
| LOW | hack/perf/run_model_benchmark.py | 275 | CODE | |
| LOW | hack/perf/run_model_benchmark.py | 411 | CODE | |
| LOW | hack/perf/run_model_benchmark.py | 917 | CODE | |
| LOW | gpustack/cmd/db_migration.py | 270 | CODE | |
| LOW | gpustack/cmd/reload_config.py | 103 | CODE | |
| LOW | gpustack/cmd/reload_config.py | 299 | CODE | |
| LOW | gpustack/cmd/reset_admin_password.py | 47 | CODE | |
| LOW | gpustack/mixins/active_record.py | 47 | CODE | |
| LOW | gpustack/mixins/active_record.py | 473 | CODE | |
| LOW | gpustack/mixins/active_record.py | 693 | CODE | |
| LOW | gpustack/mixins/active_record.py | 789 | CODE | |
| LOW | gpustack/config/config.py | 275 | CODE | |
| LOW | gpustack/config/config.py | 560 | CODE | |
| LOW | gpustack/scheduler/calculator.py | 1081 | CODE | |
| LOW | gpustack/scheduler/calculator.py | 1296 | CODE | |
| LOW | gpustack/scheduler/calculator.py | 1332 | CODE | |
| LOW | gpustack/scheduler/calculator.py | 266 | CODE | |
| LOW | gpustack/scheduler/calculator.py | 525 | CODE | |
| LOW | gpustack/scheduler/scheduler.py | 408 | CODE | |
| LOW | gpustack/scheduler/scheduler.py | 175 | CODE | |
| LOW | gpustack/scheduler/evaluator.py | 342 | CODE | |
| LOW | gpustack/scheduler/meta_registry.py | 122 | CODE | |
| LOW | gpustack/server/services.py | 318 | CODE | |
| LOW | gpustack/server/services.py | 743 | CODE | |
| LOW | gpustack/server/server.py | 569 | CODE | |
| LOW | gpustack/server/server.py | 1241 | CODE | |
| LOW | gpustack/server/controllers.py | 326 | CODE | |
| LOW | gpustack/server/controllers.py | 563 | CODE | |
| LOW | gpustack/server/controllers.py | 1523 | CODE | |
| LOW | gpustack/server/controllers.py | 1566 | CODE | |
| LOW | gpustack/server/controllers.py | 1663 | CODE | |
| LOW | gpustack/server/controllers.py | 2441 | CODE | |
| LOW | gpustack/server/controllers.py | 2488 | CODE | |
| LOW | gpustack/server/storage_usage_collector.py | 160 | CODE | |
| LOW | gpustack/server/worker_allocated_cache.py | 90 | CODE | |
| LOW | gpustack/server/resource_usage_collector.py | 324 | CODE | |
| LOW | gpustack/server/worker_syncer.py | 97 | CODE | |
| LOW | gpustack/server/lora_adapters_discovery.py | 192 | CODE | |
| LOW | gpustack/server/worker_selector.py | 17 | CODE | |
| LOW | gpustack/server/coordinator/cache.py | 51 | CODE | |
| LOW | gpustack/utils/lora_model_source.py | 68 | CODE | |
| LOW | gpustack/utils/command.py | 236 | CODE | |
| LOW | gpustack/utils/version.py | 4 | CODE | |
| LOW | gpustack/utils/locks.py | 106 | CODE | |
| LOW | gpustack/utils/forwarded.py | 13 | CODE | |
| LOW | gpustack/utils/hub.py | 210 | CODE | |
| 134 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | README.md | 179 | # Replace `your_api_key` and `your_gpustack_server_url` | COMMENT |
| HIGH | README.md | 181 | export GPUSTACK_API_KEY=your_api_key | CODE |
| HIGH | README_CN.md | 170 | # 将 `your_api_key` 和 `your_gpustack_server_url` | COMMENT |
| HIGH | README_CN.md | 172 | export GPUSTACK_API_KEY=your_api_key | CODE |
| HIGH | README_JP.md | 172 | # `your_api_key` と `your_gpustack_server_url` を | COMMENT |
| HIGH | README_JP.md | 174 | export GPUSTACK_API_KEY=your_api_key | CODE |
| HIGH | docs/troubleshooting.md | 37 | -H "Authorization: Bearer <YOUR_API_KEY>" \ | CODE |
| HIGH | docs/troubleshooting.md | 37 | -H "Authorization: Bearer <YOUR_API_KEY>" \ | CODE |
| HIGH | docs/quickstart.md | 114 | # Replace `your_api_key` and `your_gpustack_server_url` | COMMENT |
| HIGH | docs/quickstart.md | 116 | export GPUSTACK_API_KEY=your_api_key | CODE |
| HIGH | docs/migration.md | 115 | --database-url ${your-database-url} | CODE |
| HIGH | docs/user-guide/api-key-management.md | 57 | export GPUSTACK_API_KEY=your_api_key | CODE |
| HIGH⚡ | docs/using-models/using-reranker-models.md | 43 | export GPUSTACK_API_KEY=<your-api-key> | CODE |
| HIGH | docs/using-models/using-reranker-models.md | 59 | Replace `<your-server-url>` with the URL of your GPUStack server and `<your-api-key>` with the API key you generated in | CODE |
| HIGH⚡ | docs/using-models/using-embedding-models.md | 43 | export GPUSTACK_API_KEY=<your-api-key> | CODE |
| HIGH | docs/using-models/using-embedding-models.md | 54 | Replace `<your-server-url>` with the URL of your GPUStack server and `<your-api-key>` with the API key you generated in | CODE |
| HIGH | docs/integrations/inference-apis.md | 28 | export GPUSTACK_API_KEY=your_api_key | CODE |
| HIGH | docs/integrations/inference-apis.md | 55 | export GPUSTACK_API_KEY=your_api_key | CODE |
| HIGH | docs/integrations/inference-apis.md | 82 | export GPUSTACK_API_KEY=your_api_key | CODE |
| HIGH | docs/integrations/inference-apis.md | 143 | export GPUSTACK_API_KEY=your_api_key | CODE |
| HIGH | docs/tutorials/serving-with-lora-adapters.md | 78 | -H "Authorization: Bearer <your-api-key>" \ | CODE |
| HIGH⚡ | docs/tutorials/serving-with-lora-adapters.md | 90 | -H "Authorization: Bearer <your-api-key>" \ | CODE |
| HIGH⚡ | docs/tutorials/serving-with-lora-adapters.md | 98 | Replace `<your-gpustack-server>` with your server address and `<your-api-key>` with an API key created on the `API Keys` | CODE |
| HIGH⚡ | docs/tutorials/inference-with-tool-calling.md | 66 | With the model deployed and an API key, you can call the model via the GPUStack API. Here is an example script using `cu | CODE |
| HIGH⚡ | docs/tutorials/inference-with-tool-calling.md | 70 | export GPUSTACK_API_KEY=<your-api-key> | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/websocket_proxy/test_server_federation.py | 378 | # Step 1: Server1 connects to Server2 as peer | COMMENT |
| LOW⚡ | tests/websocket_proxy/test_server_federation.py | 382 | # Step 2: Connect a client to Server2 (not Server1) | COMMENT |
| LOW⚡ | tests/websocket_proxy/test_server_federation.py | 395 | # Step 3: Server2 syncs its client to Server1 via peer connection | COMMENT |
| LOW⚡ | tests/websocket_proxy/test_server_federation.py | 400 | # Step 4: Server1 disconnects from Server2 | COMMENT |
| LOW⚡ | tests/websocket_proxy/test_server_federation.py | 404 | # Step 5: Server1 should clean up clients synced from Server2 | COMMENT |
| LOW⚡ | docs/using-models/using-vision-language-models.md | 26 | ## Step 1: Install GPUStack | COMMENT |
| LOW⚡ | docs/using-models/using-vision-language-models.md | 30 | ## Step 2: Log in to GPUStack UI | COMMENT |
| LOW⚡ | docs/using-models/using-vision-language-models.md | 40 | ## Step 3: Deploy Vision Language Models with vLLM | COMMENT |
| LOW | docs/using-models/using-vision-language-models.md | 88 | ## Step 4: Interact with Vision Language Models | COMMENT |
| LOW | docs/using-models/using-image-generation-models.md | 13 | ## Step 1: Deploy the Z-Image-Turbo Model | COMMENT |
| LOW | docs/using-models/using-image-generation-models.md | 28 | ## Step 2: Use the Model for Image Generation | COMMENT |
| LOW | docs/using-models/using-reranker-models.md | 14 | ## Step 1: Deploy the Model | COMMENT |
| LOW⚡ | docs/using-models/using-reranker-models.md | 28 | ## Step 2: Generate an API Key | COMMENT |
| LOW⚡ | docs/using-models/using-reranker-models.md | 37 | ## Step 3: Reranking | COMMENT |
| LOW | docs/using-models/using-large-language-models.md | 15 | ## Step 1: Deploy Large Language Models | COMMENT |
| LOW | docs/using-models/using-large-language-models.md | 41 | ## Step 2: Use the LLMs for Text Generation | COMMENT |
| LOW | docs/using-models/using-audio-models.md | 16 | ### Step 1: Deploy Speech-to-Text Model | COMMENT |
| LOW | docs/using-models/using-audio-models.md | 30 | ### Step 2: Interact with Speech-to-Text Model | COMMENT |
| LOW | docs/using-models/using-audio-models.md | 39 | ### Step 3: Streaming Output via API | COMMENT |
| LOW | docs/using-models/using-audio-models.md | 62 | ### Step 1: Deploy Text-to-Speech Model | COMMENT |
| LOW | docs/using-models/using-audio-models.md | 76 | ### Step 2: Interact with Text-to-Speech Model | COMMENT |
| LOW | docs/using-models/using-audio-models.md | 87 | ### Step 3: Streaming Output via API | COMMENT |
| LOW | docs/using-models/using-audio-models.md | 117 | ### Step 1: Deploy Voice Cloning Model | COMMENT |
| LOW | docs/using-models/using-audio-models.md | 123 | ### Step 2: Use Voice Cloning in Playground | COMMENT |
| LOW | docs/using-models/using-embedding-models.md | 14 | ## Step 1: Deploy the Model | COMMENT |
| LOW⚡ | docs/using-models/using-embedding-models.md | 28 | ## Step 2: Generate an API Key | COMMENT |
| LOW⚡ | docs/using-models/using-embedding-models.md | 37 | ## Step 3: Generate Text Embeddings | COMMENT |
| LOW | docs/tutorials/serving-with-lora-adapters.md | 37 | ## Step 1: Deploy the Base Model with LoRA Adapters | COMMENT |
| LOW | docs/tutorials/serving-with-lora-adapters.md | 64 | ## Step 2: Invoke a LoRA Adapter | COMMENT |
| LOW⚡ | docs/tutorials/serving-with-lora-adapters.md | 100 | ## Step 3: Manage LoRA Adapters | COMMENT |
| LOW | …ing-deepseek-r1-671b-with-distributed-ascend-mindie.md | 31 | ## Step 1: Install GPUStack Server | COMMENT |
| LOW | …ing-deepseek-r1-671b-with-distributed-ascend-mindie.md | 56 | ## Step 2: Access GPUStack UI | COMMENT |
| LOW | …ing-deepseek-r1-671b-with-distributed-ascend-mindie.md | 64 | ## Step 3: Install GPUStack Workers | COMMENT |
| LOW | …ing-deepseek-r1-671b-with-distributed-ascend-mindie.md | 98 | ## Step 4: Deploy the DeepSeek R1 Model | COMMENT |
| LOW | …ing-deepseek-r1-671b-with-distributed-ascend-mindie.md | 117 | ## Step 5: Monitor Deployment | COMMENT |
| LOW | …ing-deepseek-r1-671b-with-distributed-ascend-mindie.md | 127 | ## Step 6: Run Inference via Playground | COMMENT |
| LOW | …ials/running-deepseek-r1-671b-with-distributed-vllm.md | 30 | ## Step 1: Install GPUStack Server | COMMENT |
| LOW | …ials/running-deepseek-r1-671b-with-distributed-vllm.md | 56 | ## Step 2: Access GPUStack UI | COMMENT |
| LOW | …ials/running-deepseek-r1-671b-with-distributed-vllm.md | 64 | ## Step 3: Install GPUStack Workers | COMMENT |
| LOW | …ials/running-deepseek-r1-671b-with-distributed-vllm.md | 96 | ## Step 4: Deploy the DeepSeek R1 Model | COMMENT |
| LOW | …ials/running-deepseek-r1-671b-with-distributed-vllm.md | 108 | ## Step 5: Monitor Deployment | COMMENT |
| LOW | …ials/running-deepseek-r1-671b-with-distributed-vllm.md | 118 | ## Step 6: Run Inference via Playground | COMMENT |
| LOW | …rials/running-distributed-vllm-with-multiprocessing.md | 27 | ## Step 1: Add GPUStack Workers | COMMENT |
| LOW | …rials/running-distributed-vllm-with-multiprocessing.md | 35 | ## Step 2: Deploy the Model with the MP Backend | COMMENT |
| LOW | …rials/running-distributed-vllm-with-multiprocessing.md | 72 | ## Step 3: Monitor Deployment | COMMENT |
| LOW | …rials/running-distributed-vllm-with-multiprocessing.md | 83 | ## Step 4: Verify via the Playground | COMMENT |
| LOW | docs/tutorials/inference-with-tool-calling.md | 20 | ## Step 1: Deploy the Model | COMMENT |
| LOW⚡ | docs/tutorials/inference-with-tool-calling.md | 55 | ## Step 2: Generate an API Key | COMMENT |
| LOW⚡ | docs/tutorials/inference-with-tool-calling.md | 64 | ## Step 3: Do Inference | COMMENT |
| LOW⚡ | gpustack/scheduler/calculator.py | 914 | # Step 1: Apply filters to reduce broadcast scope | COMMENT |
| LOW | gpustack/scheduler/calculator.py | 941 | # Step 2: Broadcast to filtered workers | COMMENT |
| LOW | gpustack/scheduler/calculator.py | 1022 | # Step 1: Apply worker filters before broadcasting | COMMENT |
| LOW | gpustack/scheduler/calculator.py | 1057 | # Step 2: Broadcasting to filtered workers | COMMENT |
| LOW | …es/candidate_selectors/sglang_resource_fit_selector.py | 1008 | # Step 1: Use the minimum GPU memory of all workers to calculate _chunked_prefill_size and _cuda_graph_max_bs. | COMMENT |
| LOW | …es/candidate_selectors/sglang_resource_fit_selector.py | 1094 | # Step 2: Calculate reserved memory by other configs | COMMENT |
| LOW | …es/candidate_selectors/sglang_resource_fit_selector.py | 1146 | # Step 3: adjust mem_fraction_static for VL models | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/websocket_proxy/test_proxy_server.py | 453 | # Check if we have complete request (headers + body) | COMMENT |
| LOW | tests/websocket_proxy/test_proxy_server.py | 465 | # Check if we have complete body | COMMENT |
| LOW | gpustack/scheduler/evaluator.py | 349 | # Check if local path exists on server | COMMENT |
| LOW | gpustack/server/bus.py | 314 | # Check if this is a cross-instance event (only has ID) | COMMENT |
| LOW | gpustack/policies/utils.py | 205 | # Check if this GPU can be added to the current group | COMMENT |
| LOW | gpustack/policies/utils.py | 211 | # Check if min_allocatable_memory >= current_gpu_allocatable_memory * 0.9 | COMMENT |
| LOW | gpustack/policies/utils.py | 543 | # Check if this is a main worker instance | COMMENT |
| LOW | gpustack/policies/utils.py | 546 | # Check if this worker is used as a subordinate worker | COMMENT |
| LOW | gpustack/policies/utils.py | 800 | # Check if this GPU can be added to the current group | COMMENT |
| LOW | gpustack/policies/utils.py | 806 | # Check if min_allocatable_vram >= current_allocatable_vram * 0.9 | COMMENT |
| LOW | …date_selectors/custom_backend_resource_fit_selector.py | 220 | # Check if GPU has enough VRAM | COMMENT |
| LOW | …date_selectors/custom_backend_resource_fit_selector.py | 282 | # Check if total VRAM is sufficient | COMMENT |
| LOW | …date_selectors/custom_backend_resource_fit_selector.py | 329 | # Check if worker has enough RAM for CPU inference | COMMENT |
| LOW | …olicies/candidate_selectors/base_candidate_selector.py | 830 | # Check if the GPU is satisfied the requirement | COMMENT |
| LOW | …olicies/candidate_selectors/base_candidate_selector.py | 935 | # Assign GPUs to the subordinate worker | COMMENT |
| LOW | …cies/candidate_selectors/gguf_resource_fit_selector.py | 1969 | # Check if the rpc gpus can offload even one layer. | COMMENT |
| LOW | …ck/policies/worker_filters/backend_framework_filter.py | 110 | # Check if gpu_type is supported by custom_framework | COMMENT |
| LOW | …ck/policies/worker_filters/backend_framework_filter.py | 116 | # Check if gpu_type is supported by built_in_frameworks | COMMENT |
| LOW | …ck/policies/worker_filters/backend_framework_filter.py | 173 | # Check if model has specified backend_version | COMMENT |
| LOW | …ck/policies/worker_filters/backend_framework_filter.py | 180 | # Check if any GPU condition is compatible | COMMENT |
| LOW | gpustack/schemas/common.py | 58 | # Verify if the field is in the allowed sortable fields | COMMENT |
| LOW | gpustack/websocket_proxy/message_server.py | 179 | # Check if this is a local client (registered on this server) | COMMENT |
| LOW | gpustack/websocket_proxy/message_server.py | 316 | # Check if this is a Starlette WebSocket or websockets WebSocket | COMMENT |
| LOW | gpustack/websocket_proxy/message_server.py | 645 | # Check if this is a server federation connection | COMMENT |
| LOW | gpustack/websocket_proxy/message.py | 279 | # Check if msg_type is a valid BinaryType value | COMMENT |
| LOW | gpustack/websocket_proxy/connection_manager.py | 302 | # Check if proxy accepted the connection | COMMENT |
| LOW | gpustack/api/middlewares.py | 420 | # Check if the token is about to expire (less than 15 minutes left) | COMMENT |
| LOW | gpustack/worker/model_file_manager.py | 768 | # Check if we should log based on time (2 seconds) or progress change (1%) | COMMENT |
| LOW | gpustack/worker/backends/sglang.py | 555 | # Check if this is a multi-node deployment | COMMENT |
| LOW | gpustack/worker/backends/sglang.py | 729 | # Check if tensor parallelism is already specified | COMMENT |
| LOW | gpustack/client/generated_benchmark_client.py | 241 | # Check if we have accumulated enough items (heuristic) | COMMENT |
| LOW | gpustack/client/generated_user_client.py | 239 | # Check if we have accumulated enough items (heuristic) | COMMENT |
| LOW | gpustack/client/generated_model_client.py | 239 | # Check if we have accumulated enough items (heuristic) | COMMENT |
| LOW | gpustack/client/generated_model_instance_client.py | 241 | # Check if we have accumulated enough items (heuristic) | COMMENT |
| LOW | gpustack/client/generated_model_file_client.py | 241 | # Check if we have accumulated enough items (heuristic) | COMMENT |
| LOW | gpustack/client/generated_model_route_target_client.py | 243 | # Check if we have accumulated enough items (heuristic) | COMMENT |
| LOW | gpustack/client/generated_worker_client.py | 241 | # Check if we have accumulated enough items (heuristic) | COMMENT |
| LOW | gpustack/client/generated_inference_backend_client.py | 243 | # Check if we have accumulated enough items (heuristic) | COMMENT |
| LOW | gpustack/routes/metrics.py | 40 | # Check if we have a cached version | COMMENT |
| LOW | gpustack/routes/metrics.py | 86 | # Write file in thread pool to avoid blocking event loop | COMMENT |
| LOW⚡ | gpustack/routes/inference_backend.py | 1249 | # Check if the backend is being used by any models | COMMENT |
| LOW | gpustack/routes/inference_backend.py | 382 | # Check if this version has any built-in frameworks | COMMENT |
| LOW | gpustack/routes/inference_backend.py | 1165 | # Check if updating to a name that already exists (excluding current backend) | COMMENT |
| LOW | gpustack/routes/inference_backend.py | 1417 | # Check if updating to a name that already exists (excluding current backend) | COMMENT |
| LOW | gpustack/routes/inference_backend.py | 1447 | # Check if any versions are being removed and validate they're not in use | COMMENT |
| LOW | gpustack/routes/inference_backend.py | 1533 | # Check if removed versions are in use | COMMENT |
| LOW⚡ | gpustack/routes/worker/filesystem.py | 121 | # Check if path exists | COMMENT |
| LOW⚡ | gpustack/routes/worker/filesystem.py | 125 | # Check if path is a file | COMMENT |
| LOW⚡ | gpustack/routes/worker/filesystem.py | 129 | # Check if file is a config file for security | COMMENT |
| LOW | gpustack/routes/worker/filesystem.py | 173 | # Check if path exists | COMMENT |
| LOW⚡ | gpustack/routes/worker/filesystem.py | 270 | # Check if file exists | COMMENT |
| LOW⚡ | gpustack/routes/worker/filesystem.py | 276 | # Check if path is a file | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | gpustack/mixins/active_record.py | 368 | Parse dot-separated nested field expressions and generate appropriate database expressions for sorting. | STRING |
| HIGH | gpustack/scheduler/calculator.py | 693 | Unified async entry point for getting pretrained config. Handles all model sources with appropriate fallback s | STRING |
| HIGH | gpustack/scheduler/calculator.py | 865 | Read a file from LOCAL_PATH model by querying workers. Steps: 1. Apply filters (GPU selector, label select | STRING |
| HIGH | gpustack/scheduler/calculator.py | 983 | Get pretrained config from remote workers for LOCAL_PATH models. Args: model: Model with source LOCAL_ | STRING |
| HIGH | gpustack/scheduler/calculator.py | 1007 | Calculate model resource claim by running gguf-parser on a worker. Args: model: Model to calculate the | STRING |
| HIGH | gpustack/scheduler/calculator.py | 1263 | Read and parse model_index.json from local directory. Args: path: Directory path containing model_inde | STRING |
| HIGH | gpustack/scheduler/calculator.py | 1297 | Calculate total size of LLM model weights in root directory. Args: path: Directory path to scan R | STRING |
| HIGH | gpustack/scheduler/calculator.py | 1333 | Calculate total size of diffusion model weights. Logic: 1. Read model_index.json to get pipeline component | STRING |
| HIGH | gpustack/scheduler/calculator.py | 1399 | Calculate model weight size based on model type. Unified entry point for calculating model weight sizes. | STRING |
| HIGH | gpustack/server/worker_selector.py | 23 | Find a worker that has access to the specified path. Args: workers: List of workers to sea | STRING |
| HIGH | gpustack/utils/file.py | 44 | Generic async retry wrapper for checking operations. Args: checker: A callable (sync or async) that perform | STRING |
| HIGH | gpustack/schemas/inference_backend.py | 157 | Get configuration for a specific version. Args: version: Version string, uses default_vers | STRING |
| HIGH | gpustack/worker/backends/base.py | 532 | Get the resource requests for the model instance. Args: mount_all_devices: | STRING |
| HIGH | gpustack/client/worker_filesystem_client.py | 131 | Parse a GGUF file on a worker using gguf-parser. Args: worker: The worker to query | STRING |
| HIGH | gpustack/routes/worker/filesystem.py | 49 | Validate path security to prevent directory traversal attacks. This function: 1. Resolves the absolute pat | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/routers/test_workers.py | 148 | # Create a new worker (no existing worker) | COMMENT |
| MEDIUM⚡ | tests/routers/test_workers.py | 161 | # Create an existing worker with some labels | COMMENT |
| MEDIUM | tests/routers/test_workers.py | 32 | # Create an existing worker with maintenance mode enabled | COMMENT |
| MEDIUM | tests/routers/test_workers.py | 48 | # Create a worker registration request without maintenance field | COMMENT |
| MEDIUM | tests/routers/test_workers.py | 79 | # Create an existing worker with maintenance mode enabled | COMMENT |
| MEDIUM | tests/routers/test_workers.py | 95 | # Create a worker update request with maintenance explicitly disabled | COMMENT |
| MEDIUM | tests/routers/test_workers.py | 126 | # Create a new worker registration request | COMMENT |
| MEDIUM | tests/routers/test_workers.py | 177 | # Create a worker update with new labels | COMMENT |
| MEDIUM | …licies/worker_filters/test_backend_framework_filter.py | 96 | # Create a mock session that returns the backend | COMMENT |
| MEDIUM | …licies/worker_filters/test_backend_framework_filter.py | 249 | # Create a worker with mixed GPU types (simulate by modifying the worker) | COMMENT |
| MEDIUM | …licies/worker_filters/test_backend_framework_filter.py | 384 | # Create a worker with empty GPU list | COMMENT |
| MEDIUM | …licies/worker_filters/test_backend_framework_filter.py | 497 | # Create a model that will result in backend_name being None | COMMENT |
| MEDIUM | …licies/worker_filters/test_backend_framework_filter.py | 1007 | # Create a worker with ROCm GPU (incompatible with vLLM in this test scenario) | COMMENT |
| MEDIUM | tests/worker/test_logs.py | 18 | # Create a log file with 2KB in two lines | COMMENT |
| MEDIUM⚡ | gpustack/server/bus.py | 276 | # Create a closure that captures the topic | COMMENT |
| MEDIUM | gpustack/policies/utils.py | 958 | # Create a copy of the worker with sorted GPUs | COMMENT |
| MEDIUM | gpustack/websocket_proxy/message_server.py | 196 | # Create a future that will be resolved when the peer connects | COMMENT |
| MEDIUM | gpustack/websocket_proxy/connection_manager.py | 315 | # Create a tunnel connection for this forward | COMMENT |
| MEDIUM | gpustack/worker/schemas/benchmark_runner.py | 41 | # Define a breakdown for request counts | STRING |
| MEDIUM⚡ | gpustack/routes/inference_backend.py | 1367 | # Create the backend | COMMENT |
| MEDIUM | gpustack/routes/inference_backend.py | 904 | # Create the response with the same structure as the original | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | gpustack/cloud_providers/user_data.py | 51 | ExecStart=/bin/bash -c "/opt/gpustack-run-worker.sh && systemctl disable post-reboot.service" | CODE |
| HIGH | gpustack/utils/ephemeral_ports.py | 187 | "sudo tee -a /etc/sysctl.conf && sudo sysctl -p", | CODE |
| HIGH | gpustack/schemas/organizations.py | 156 | label. The UI is expected to render ``display_name || name``; | STRING |
| HIGH⚡ | gpustack/schemas/metered_usage.py | 120 | # Natural key = resource identity. All three columns are non-null, so | COMMENT |
| HIGH⚡ | gpustack/worker/model_meta.py | 76 | "docker_label": null, | STRING |
| HIGH⚡ | gpustack/worker/model_meta.py | 80 | "max_stop_sequences": null, | STRING |
| HIGH⚡ | gpustack/worker/model_meta.py | 81 | "max_waiting_tokens": null, | STRING |
| HIGH⚡ | gpustack/worker/model_meta.py | 82 | "sha": null, | STRING |
| HIGH⚡ | gpustack/worker/model_meta.py | 83 | "validation_workers": null, | STRING |
| HIGH⚡ | gpustack/worker/model_meta.py | 85 | "waiting_served_ratio": null, | STRING |
| HIGH⚡ | gpustack/worker/model_meta.py | 92 | "model_sha": null, | STRING |
| HIGH | gpustack/routes/users.py | 281 | # ``{"source": null}`` explicitly would otherwise write NULL | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | alembic.ini | 1 | # A generic, single database configuration. | COMMENT |
| LOW | alembic.ini | 21 | # Any required deps can installed by adding `alembic[tz]` to the pip requirements | COMMENT |
| LOW | alembic.ini | 41 | # The path separator used here should be the separator specified by "version_path_separator" below. | COMMENT |
| LOW | alembic.ini | 61 | # output_encoding = utf-8 | COMMENT |
| LOW | pack/rootfs/etc/s6-overlay/scripts/base.sh | 101 | # For optional services, allow s6 to restart instead of halting the container | COMMENT |
| LOW | …/rootfs/etc/s6-overlay/scripts/postgres-log-cleanup.sh | 1 | #!/command/with-contenv /bin/bash | COMMENT |
| LOW | pack/rootfs/var/lib/istio/cron.txt | 1 | 0 * * * * /usr/sbin/logrotate /etc/logrotate.d/higress-logrotate | COMMENT |
| LOW | charts/gpustack-chart/values.yaml | 1 | # Default values for gpustack. | COMMENT |
| LOW | charts/gpustack-chart/values.yaml | 21 | # imagePullSecrets: | COMMENT |
| LOW | charts/gpustack-chart/values.yaml | 61 | # example: gpustack.example.com | COMMENT |
| LOW | charts/gpustack-chart/values.yaml | 81 | size: 100Gi | COMMENT |
| LOW | charts/gpustack-chart/values.yaml | 161 | # GPU vendors for the worker nodes. Accepts a list to allow a single | COMMENT |
| LOW | charts/gpustack-chart/values.yaml | 181 | # - [] (empty): only the CPU DaemonSet `<release>-worker` is rendered | COMMENT |
| LOW | charts/gpustack-chart/values.yaml | 201 | # on conflict). | COMMENT |
| LOW | charts/gpustack-chart/values.yaml | 241 | memory: 512Mi | COMMENT |
| LOW | hack/lib/log.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | hack/lib/version.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | .github/workflows/pack.yaml | 281 | uses: azure/setup-helm@v4 | COMMENT |
| LOW | gpustack/config/config.py | 181 | # Group sync. ``external_auth_groups`` is the OIDC claim name or | COMMENT |
| LOW | gpustack/config/config.py | 221 | # servers in the wild work without extra tuning. | COMMENT |
| LOW | gpustack/k8s/manifest_template.py | 81 | # Base nodeSelector merged with the runtime's PCI-presence label. | COMMENT |
| LOW | gpustack/server/services.py | 81 | self.session.expunge(result) | COMMENT |
| LOW | gpustack/server/metrics_collector.py | 41 | # it ends in (anchored on completed_at). ``date`` is computed in the | COMMENT |
| LOW | gpustack/server/metrics_collector.py | 521 | snapshot.setdefault("api_key_is_custom", None) | COMMENT |
| LOW | gpustack/server/metrics_collector.py | 541 | pass | COMMENT |
| LOW | gpustack/utils/hub.py | 21 | # and replaces transformers' `get_class_from_dynamic_module` with a wrapper | COMMENT |
| LOW | …idate_selectors/ascend_mindie_resource_fit_selector.py | 301 | ) | COMMENT |
| LOW | gpustack/schemas/stmt.py | 221 | # MySQL only accepts ``INTEGER`` as a CAST target from 8.0.17; older | COMMENT |
| LOW | gpustack/schemas/stmt.py | 241 | return ( | COMMENT |
| LOW | gpustack/schemas/principals.py | 81 | # resolution time, without a backing ``principal_memberships`` row. | COMMENT |
| LOW | gpustack/schemas/principals.py | 201 | sa_column=Column(SQLEnum(PrincipalType), nullable=False), | COMMENT |
| LOW | gpustack/schemas/principals.py | 221 | # (``init_platform_principal_id`` → ORG, | COMMENT |
| LOW | gpustack/schemas/principals.py | 281 | # only on USER rows. ORG-membership ``OrgRole.OWNER`` is the | COMMENT |
| LOW | gpustack/schemas/cluster_access.py | 61 | class ClusterAccessPublic(SQLModel): | COMMENT |
| LOW | gpustack/schemas/model_usage.py | 41 | api_key_id: Optional[int] = Field(default=None, sa_column=Column(Integer)) | COMMENT |
| LOW | gpustack/schemas/organizations.py | 21 | COMMENT | |
| LOW | gpustack/schemas/model_routes.py | 81 | # ``/principals``. | COMMENT |
| LOW | gpustack/api/tenant.py | 61 | # The authenticated principal for this request. Can be any kind | COMMENT |
| LOW | gpustack/api/tenant.py | 81 | # USER-principal (personal scope) rather than an ORG-principal. | COMMENT |
| LOW | gpustack/worker/backends/vllm.py | 921 | # Parse the Ray port range from configuration, | COMMENT |
| LOW | gpustack/worker/backends/base.py | 121 | # | COMMENT |
| LOW | gpustack/envs/__init__.py | 61 | os.getenv("GPUSTACK_WORKER_ORPHAN_BENCHMARK_WORKLOAD_CLEANUP_GRACE_PERIOD", 300) | COMMENT |
| LOW | gpustack/envs/__init__.py | 181 | # the operating system's local timezone (resolved from ``TZ`` env var / | COMMENT |
| LOW | gpustack/envs/__init__.py | 201 | # short on environments with replication lag concerns; larger batches reduce | COMMENT |
| LOW | gpustack/routes/auth.py | 141 | # full-page IdP redirect: a JSON exception raised inside them would | COMMENT |
| LOW | gpustack/routes/auth.py | 481 | if _saml_unsigned_escape_hatch(config): | COMMENT |
| LOW | gpustack/routes/resource_usage.py | 121 | # Optional "filter by user" — restricts to these creator (principal) ids. | COMMENT |
| LOW | gpustack/routes/resource_usage.py | 681 | group_member_ids=group_member_ids, | COMMENT |
| LOW | gpustack/routes/resource_usage.py | 741 | group_cols.extend(gc) | COMMENT |
| LOW | gpustack/routes/models.py | 681 | model_in_dict = model_in.model_dump(exclude={"enable_model_route"}) | COMMENT |
| LOW | gpustack/routes/users.py | 261 | COMMENT | |
| LOW | gpustack/routes/inference_backend.py | 301 | COMMENT | |
| LOW | gpustack/routes/me_orgs.py | 81 | group_pm.deleted_at.is_(None), | COMMENT |
| LOW | gpustack/routes/dashboard.py | 161 | COMMENT | |
| LOW | gpustack/routes/model_routes.py | 921 | # the stale column. | COMMENT |
| LOW | gpustack/routes/model_routes.py | 941 | if type_switched and field == "overridden_model_name": | COMMENT |
| LOW | gpustack/gateway/__init__.py | 341 | # which share the ``ai-route-route-`` prefix. Other routes -- the gpustack | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/websocket_proxy/test_server_federation.py | 378 | # Step 1: Server1 connects to Server2 as peer | COMMENT |
| LOW⚡ | tests/websocket_proxy/test_server_federation.py | 382 | # Step 2: Connect a client to Server2 (not Server1) | COMMENT |
| LOW⚡ | tests/websocket_proxy/test_server_federation.py | 395 | # Step 3: Server2 syncs its client to Server1 via peer connection | COMMENT |
| LOW⚡ | tests/websocket_proxy/test_server_federation.py | 400 | # Step 4: Server1 disconnects from Server2 | COMMENT |
| LOW⚡ | tests/websocket_proxy/test_server_federation.py | 404 | # Step 5: Server1 should clean up clients synced from Server2 | COMMENT |
| LOW⚡ | gpustack/scheduler/calculator.py | 914 | # Step 1: Apply filters to reduce broadcast scope | COMMENT |
| LOW | gpustack/scheduler/calculator.py | 941 | # Step 2: Broadcast to filtered workers | COMMENT |
| LOW | gpustack/scheduler/calculator.py | 1022 | # Step 1: Apply worker filters before broadcasting | COMMENT |
| LOW | gpustack/scheduler/calculator.py | 1057 | # Step 2: Broadcasting to filtered workers | COMMENT |
| LOW | …es/candidate_selectors/sglang_resource_fit_selector.py | 1008 | # Step 1: Use the minimum GPU memory of all workers to calculate _chunked_prefill_size and _cuda_graph_max_bs. | COMMENT |
| LOW | …es/candidate_selectors/sglang_resource_fit_selector.py | 1094 | # Step 2: Calculate reserved memory by other configs | COMMENT |
| LOW | …es/candidate_selectors/sglang_resource_fit_selector.py | 1146 | # Step 3: adjust mem_fraction_static for VL models | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/routes/test_openai_routing.py | 56 | # GPUStack would auto-orchestrate and the user's params would break it. | COMMENT |
| MEDIUM | gpustack/worker/serve_manager.py | 607 | # Use the event-driven local cache instead of an API call. | COMMENT |
| MEDIUM | gpustack/assets/model-catalog-modelscope.yaml | 1852 | # SGLang INT4 alternative (better for long agentic sessions via RadixAttention) | COMMENT |
| MEDIUM | gpustack/assets/model-catalog.yaml | 1720 | # SGLang INT4 alternative (better for long agentic sessions via RadixAttention) | COMMENT |
| MEDIUM | gpustack/routes/models.py | 400 | # GPUStack's auto-orchestration (it would register a gateway upstream the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/worker/backends/test_backend.py | 883 | # Script + command is None: just pass the args through under the script. | COMMENT |
| LOW | gpustack/server/cache.py | 155 | # but for now we just use the class name and suffix for simplicity. | COMMENT |
| MEDIUM | gpustack/utils/hub.py | 538 | # Return an empty dict here to facilitate special handling by upstream methods. | COMMENT |
| MEDIUM⚡ | gpustack/schemas/metered_usage.py | 121 | # the collector's upsert is robust even when owner_principal_id / sku | COMMENT |
| MEDIUM⚡ | gpustack/routes/worker/filesystem.py | 267 | # 2. Path validation - use validate_path_security for robust security | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/websocket_proxy/test_connection.py | 89 | async def handle_request(reader, writer): | CODE |
| LOW | tests/websocket_proxy/test_proxy_server.py | 72 | async def handle_request(reader, writer): | CODE |
| LOW | tests/websocket_proxy/test_proxy_server.py | 166 | async def handle_request(reader, writer): | CODE |
| LOW | tests/websocket_proxy/test_proxy_server.py | 343 | async def handle_request(reader, writer): | CODE |
| LOW | tests/websocket_proxy/test_proxy_server.py | 443 | async def handle_request(reader, writer): | CODE |
| LOW | tests/websocket_proxy/test_websocket_bench.py | 86 | async def handle_request(reader, writer): | CODE |
| LOW | tests/websocket_proxy/test_websocket_bench.py | 181 | async def handle_request(reader, writer): | CODE |
| LOW | tests/websocket_proxy/test_websocket_bench.py | 277 | async def handle_request(reader, writer): | CODE |
| LOW | tests/websocket_proxy/test_websocket_bench.py | 369 | async def handle_request(reader, writer): | CODE |
| LOW | tests/websocket_proxy/test_websocket_bench.py | 458 | async def handle_request(reader, writer): | CODE |
| LOW | tests/websocket_proxy/test_websocket_bench.py | 552 | async def handle_request(reader, writer): | CODE |
| LOW | tests/websocket_proxy/test_websocket_bench.py | 648 | async def handle_request(reader, writer): | CODE |
| LOW | tests/websocket_proxy/test_websocket_bench.py | 784 | async def handle_request(reader, writer): | CODE |
| LOW | tests/websocket_proxy/test_websocket_bench.py | 914 | async def handle_request(reader, writer): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/routes/test_model_routes.py | 226 | CODE | |
| MEDIUM | tests/routes/test_model_routes.py | 658 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/utils/model.py | 33 | CODE | |
| LOW | gpustack/server/worker_request.py | 214 | CODE | |
| LOW | gpustack/routes/resource_usage.py | 1080 | CODE | |
| LOW | gpustack/routes/model_routes.py | 279 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/cloud_providers/test_digital_ocean.py | 64 | return DigitalOceanClient(token='dummy-token') | CODE |
| LOW | tests/api/test_auth.py | 435 | AsyncMock(return_value={"email": "user@example.com", "name": "Test User"}), | CODE |
| LOW | docs/image-selector/index.html | 148 | <pre id="image-list" class="image-commands"><code class="placeholder" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | hack/perf/plot_tps_comparison.py | 114 | # Example usage | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | gpustack/server/controllers.py | 3190 | # sync targets will update model route record so make sure to do it before other operations | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | gpustack/gateway/__init__.py | 464 | # TODO: add validation in the future | COMMENT |