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,571 GitHub stars. SynthScan v2.0 examined 266,999 lines of code across 765 source files, recording 5273 pattern matches distributed across 25 syntactic categories. The overall adjusted score of 23.1 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 5273 distinct pattern matches across 25 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/test_security.py | 22 | def test_generated_secret_key_shape(): | CODE |
| LOW | tests/test_security.py | 41 | def test_both_verifiers_accept_the_same_plaintext(): | CODE |
| LOW | tests/test_security.py | 59 | def test_digest_is_salted_per_key(): | CODE |
| LOW | tests/test_security.py | 86 | def test_malformed_or_unknown_digest_never_verifies(digest): | CODE |
| LOW | tests/test_security.py | 103 | def test_unusable_digest_is_reported_as_such(digest): | CODE |
| LOW | tests/test_security.py | 111 | def test_a_real_digest_is_usable_whether_or_not_it_matches(): | CODE |
| LOW | tests/test_security.py | 126 | def test_a_custom_key_follows_the_deployment_switch(monkeypatch, allowed): | CODE |
| LOW | tests/test_security.py | 143 | def test_the_shape_test_does_not_apply_to_a_custom_key(monkeypatch): | CODE |
| LOW | tests/test_security.py | 160 | def test_a_generated_key_still_has_to_look_generated(monkeypatch): | CODE |
| LOW | tests/test_security.py | 176 | def test_deployment_token_never_gets_a_digest(): | CODE |
| LOW | tests/test_security.py | 207 | def test_secret_not_shaped_like_our_output_is_refused(secret_key): | CODE |
| LOW | tests/test_security.py | 213 | def test_generated_secret_is_eligible(): | CODE |
| LOW | tests/test_security.py | 239 | def test_verify_memo_is_bounded(monkeypatch): | CODE |
| LOW | tests/test_security.py | 272 | def test_gateway_digest_matches_the_shared_vector(): | CODE |
| LOW | tests/test_security.py | 276 | def test_gateway_digest_is_derived_not_recomputed(): | CODE |
| LOW | tests/test_security.py | 295 | def test_gateway_digest_is_shorter_by_the_amount_the_budget_counts_on(): | CODE |
| LOW | tests/test_security.py | 312 | def test_the_algorithm_name_changes_with_the_encoding(): | CODE |
| LOW | tests/test_security.py | 323 | def test_an_underivable_digest_yields_nothing(digest): | CODE |
| 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_host(): | CODE |
| LOW | tests/routers/test_clusters.py | 59 | def test_cluster_update_normalizes_server_url(): | CODE |
| LOW | tests/routers/test_clusters.py | 68 | def test_get_trusted_hosts_resolution(tmp_path): | CODE |
| LOW | tests/routers/test_clusters.py | 105 | def test_config_normalizes_server_external_url(monkeypatch, tmp_path): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 97 | def test_a_wrong_case_load_type_is_refused(self): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 101 | def test_the_two_valid_axes_survive_as_their_wire_values(self): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 107 | def test_the_axis_name_the_runner_wants_is_derived_not_repeated(self): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 131 | def test_an_empty_stage_list_is_not_the_stages_shape(self): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 137 | def test_auto_tune_and_stages_together_are_refused(self): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 144 | def test_an_inverted_search_range_is_refused(self): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 151 | def test_an_empty_search_range_is_refused(self): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 156 | def test_a_valid_range_passes(self): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 162 | def test_non_positive_budgets_are_refused(self, field): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 167 | def test_a_point_budget_the_grid_cannot_hold_is_refused(self): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 179 | def test_the_ceiling_itself_is_allowed(self): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 184 | def test_more_manual_stages_than_the_grid_can_hold_is_refused(self): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 192 | def test_every_slo_threshold_must_be_positive(self, t): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 199 | def test_a_stage_without_a_numeric_rate_is_refused(self): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 204 | def test_a_stage_that_is_not_an_object_never_reaches_the_check(self): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 211 | def test_a_non_positive_stage_rate_is_refused(self): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 221 | def test_an_unusable_per_stage_constraint_is_refused(self, key): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 229 | def test_a_stage_constraint_left_out_is_fine(self): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 236 | def test_a_negative_pass_through_knob_is_refused(self, field): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 242 | def test_zero_stays_a_legal_setting(self, field): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 247 | def test_an_inverted_token_window_is_refused(self): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 252 | def test_a_valid_token_window_passes(self): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 272 | def test_a_backward_report_is_held_at_the_floor(self): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 278 | def test_forward_progress_passes_through(self): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 283 | def test_entering_running_resets_a_stale_progress(self): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 290 | def test_entering_running_keeps_a_progress_the_caller_stated(self): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 297 | def test_a_patch_without_progress_is_left_alone(self): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 367 | def test_the_summary_never_reads_the_deferred_column(self): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 375 | def test_asking_for_the_raw_dump_reads_it(self): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 379 | def test_every_response_field_is_populated(self): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 384 | def test_raw_metrics_are_returned_by_default(self): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 416 | def test_seeds_inside_the_range_pass(self, seed): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 419 | def test_a_generated_seed_always_passes_its_own_check(self): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 425 | def test_a_non_random_dataset_is_not_seed_checked(self): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 487 | def test_readers_still_see_it(self, field): | CODE |
| LOW⚡ | tests/routers/test_benchmarks.py | 495 | def test_the_column_still_exists(self, field): | CODE |
| 3278 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/routers/test_usage_export_integration.py | 377 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/routers/test_usage_export_integration.py | 383 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/routers/test_usage_export_integration.py | 452 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/routers/test_usage_export_integration.py | 454 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/routers/test_usage_export.py | 144 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/routers/test_usage_export.py | 146 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/routers/test_usage_export.py | 243 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/routers/test_usage_export.py | 245 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/routers/test_usage_export.py | 449 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/routers/test_usage_export.py | 451 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/routers/test_usage_export.py | 550 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/routers/test_usage_export.py | 552 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/cmd/test_reload_config_auth.py | 31 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/cmd/test_reload_config_auth.py | 33 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/cmd/test_reload_config_auth.py | 56 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/cmd/test_reload_config_auth.py | 58 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/cmd/test_reload_config_auth.py | 111 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/cmd/test_reload_config_auth.py | 113 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/cmd/test_reload_config_auth.py | 198 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/cmd/test_reload_config_auth.py | 200 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/cloud_providers/test_shuihua.py | 95 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/cloud_providers/test_shuihua.py | 97 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/cloud_providers/test_shuihua.py | 176 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/cloud_providers/test_shuihua.py | 178 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/cloud_providers/test_shuihua.py | 218 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/cloud_providers/test_shuihua.py | 220 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/cloud_providers/test_shuihua.py | 308 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/cloud_providers/test_shuihua.py | 310 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/k8s/test_template_render.py | 65 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/k8s/test_template_render.py | 67 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/k8s/test_template_render.py | 124 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/k8s/test_template_render.py | 127 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/k8s/test_template_render.py | 198 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/k8s/test_template_render.py | 201 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/k8s/test_template_render.py | 305 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/k8s/test_template_render.py | 307 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/k8s/test_template_render.py | 652 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/k8s/test_template_render.py | 654 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/k8s/test_template_render.py | 703 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/k8s/test_template_render.py | 709 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/k8s/test_template_render.py | 823 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/k8s/test_template_render.py | 829 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/k8s/test_template_render.py | 859 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/k8s/test_template_render.py | 867 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/k8s/test_template_render.py | 466 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/k8s/test_template_render.py | 468 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/k8s/test_template_render.py | 586 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/k8s/test_template_render.py | 589 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/k8s/test_template_render.py | 752 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/k8s/test_template_render.py | 758 | # --------------------------------------------------------------------------- | 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⚡ | …/server/test_resource_usage_collector_type_snapshot.py | 172 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …/server/test_resource_usage_collector_type_snapshot.py | 174 | # --------------------------------------------------------------------------- | COMMENT |
| 176 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 | 68 | 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 | 284 | except Exception as e: | CODE |
| LOW | gpustack/cmd/reload_config.py | 318 | except Exception: | CODE |
| MEDIUM | gpustack/cmd/reload_config.py | 102 | def run(args): | CODE |
| LOW | gpustack/cmd/start.py | 704 | except Exception as e: | CODE |
| LOW | gpustack/cmd/start.py | 723 | except Exception as e: | CODE |
| LOW | gpustack/cmd/start.py | 745 | except Exception as e: | CODE |
| LOW | gpustack/cmd/start.py | 760 | except Exception: | CODE |
| LOW | gpustack/cmd/start.py | 790 | 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 |
| 527 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/schemas/runner_source.py | 0 | validate raw community-backend yaml and return the canonical text stored in a source's ``content`` (the ``normalize`` fo | STRING |
| HIGH | gpustack/schemas/catalog_source.py | 0 | validate raw community-backend yaml and return the canonical text stored in a source's ``content`` (the ``normalize`` fo | STRING |
| HIGH | gpustack/schemas/inference_backend_source.py | 0 | validate raw community-backend yaml and return the canonical text stored in a source's ``content`` (the ``normalize`` fo | STRING |
| HIGH | gpustack/schemas/gpu_instance_types.py | 0 | created name of the gpu instance template. must be unique in the scope of the owning principal. | STRING |
| HIGH | …ustack/schemas/gpu_instance_persistent_volume_types.py | 0 | created name of the gpu instance template. must be unique in the scope of the owning principal. | STRING |
| HIGH | gpustack/schemas/gpu_instance_templates.py | 0 | created name of the gpu instance template. must be unique in the scope of the owning principal. | 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 | …tack/client/generated_cache_service_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_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_cache_service_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 | …tack/client/generated_cache_service_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_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_cache_service_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 | …tack/client/generated_cache_service_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_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_cache_service_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 | …tack/client/generated_cache_service_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_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_cache_service_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 | 26 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/cmd/start.py | 22 | 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/shuihua.py | 52 | 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 | 83 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/scheduler/evaluator.py | 53 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/catalog.py | 25 | 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/cache_provider_catalog.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/services.py | 46 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/server.py | 148 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/scaling_scheduler.py | 16 | 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/cache_service_metrics.py | 36 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/controllers.py | 172 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/resource_event_logger.py | 53 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/gateway_auth_reconciler.py | 75 | 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 | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/bus.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/bus.py | 40 | __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 | 92 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | gpustack/server/resource_usage_collector.py | 977 | 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/cache_services.py | 29 | 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 | 45 | 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/server/sources/core.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | gpustack/server/sources/probe.py | 50 | logger = logging.getLogger(__name__) | CODE |
| 132 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 | 1444 | 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 | 323 | CODE | |
| LOW | gpustack/cmd/reset_admin_password.py | 47 | CODE | |
| LOW | gpustack/mixins/active_record.py | 47 | CODE | |
| LOW | gpustack/mixins/active_record.py | 506 | CODE | |
| LOW | gpustack/mixins/active_record.py | 726 | CODE | |
| LOW | gpustack/mixins/active_record.py | 822 | CODE | |
| LOW | gpustack/config/config.py | 339 | CODE | |
| LOW | gpustack/config/config.py | 638 | CODE | |
| LOW | gpustack/scheduler/calculator.py | 1090 | CODE | |
| LOW | gpustack/scheduler/calculator.py | 1305 | CODE | |
| LOW | gpustack/scheduler/calculator.py | 1341 | CODE | |
| LOW | gpustack/scheduler/calculator.py | 266 | CODE | |
| LOW | gpustack/scheduler/calculator.py | 525 | CODE | |
| LOW | gpustack/scheduler/scheduler.py | 424 | CODE | |
| LOW | gpustack/scheduler/scheduler.py | 177 | CODE | |
| LOW | gpustack/scheduler/evaluator.py | 342 | CODE | |
| LOW | gpustack/scheduler/meta_registry.py | 122 | CODE | |
| LOW | gpustack/server/cache_provider_catalog.py | 18 | CODE | |
| LOW | gpustack/server/services.py | 318 | CODE | |
| LOW | gpustack/server/services.py | 749 | CODE | |
| LOW | gpustack/server/server.py | 690 | CODE | |
| LOW | gpustack/server/server.py | 910 | CODE | |
| LOW | gpustack/server/server.py | 1445 | CODE | |
| LOW | gpustack/server/cache_service_metrics.py | 173 | CODE | |
| LOW | gpustack/server/cache_service_metrics.py | 328 | CODE | |
| LOW | gpustack/server/controllers.py | 870 | CODE | |
| LOW | gpustack/server/controllers.py | 1107 | CODE | |
| LOW | gpustack/server/controllers.py | 505 | CODE | |
| LOW | gpustack/server/controllers.py | 609 | CODE | |
| LOW | gpustack/server/controllers.py | 782 | CODE | |
| LOW | gpustack/server/controllers.py | 2141 | CODE | |
| LOW | gpustack/server/controllers.py | 3075 | CODE | |
| LOW | gpustack/server/controllers.py | 3145 | CODE | |
| LOW | gpustack/server/gateway_auth_reconciler.py | 519 | 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 | 768 | 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/usage_export.py | 463 | CODE | |
| 160 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/bus.py | 9 | CODE | |
| LOW | gpustack/server/bus.py | 9 | 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/policies/candidate_selectors/__init__.py | 5 | CODE | |
| LOW | gpustack/schemas/models.py | 32 | CODE | |
| LOW | gpustack/schemas/models.py | 41 | CODE | |
| LOW | gpustack/schemas/models.py | 42 | 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 | 29 | CODE | |
| LOW | gpustack/schemas/__init__.py | 29 | CODE | |
| 211 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 | 138 | 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 | 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 | tests/server/test_cache_provider_catalog.py | 161 | provider = get_cache_provider("LMCache") | 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 | 101 | # template rendering (ArgoCD/Flux, `helm template`). In those environments a | COMMENT |
| LOW | charts/gpustack-chart/values.yaml | 121 | # back to `global.nodeSelector`. | COMMENT |
| LOW | charts/gpustack-chart/values.yaml | 221 | # GPU vendors for the worker nodes. Accepts a list to allow a single | COMMENT |
| LOW | charts/gpustack-chart/values.yaml | 241 | # - [] (empty): only the CPU DaemonSet `<release>-worker` is rendered | COMMENT |
| LOW | charts/gpustack-chart/values.yaml | 261 | # on conflict). | COMMENT |
| LOW | charts/gpustack-chart/values.yaml | 301 | 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/security.py | 21 | GENERATED_SECRET_KEY_BYTES = 16 | COMMENT |
| LOW | gpustack/__init__.py | 1 | __version__ = '0.0.0' | COMMENT |
| LOW | gpustack/config/config.py | 221 | # Testing against self-signed IdPs only; never enable in production. | COMMENT |
| LOW | gpustack/config/config.py | 261 | # validator parses CAS 2.0 / 3.0 ``serviceValidate`` responses, | COMMENT |
| LOW | gpustack/config/config.py | 281 | server_external_url: Optional[str] = None | COMMENT |
| LOW | gpustack/config/config.py | 421 | # Signing key for the ``x-gpustack-auth-cache`` marker, which the gateway | COMMENT |
| LOW | gpustack/server/services.py | 81 | self.session.expunge(result) | COMMENT |
| LOW | gpustack/server/controllers.py | 281 | COMMENT | |
| LOW | gpustack/server/gateway_auth_reconciler.py | 301 | dropped = False | COMMENT |
| LOW | gpustack/server/gateway_auth_reconciler.py | 321 | # expired: a key can expire between two passes, and this is what makes | COMMENT |
| LOW | gpustack/server/gateway_auth_reconciler.py | 561 | raise | COMMENT |
| LOW | gpustack/server/metrics_collector.py | 541 | # becomes an attribution: a spoofed / stale id would silently mis-attribute | COMMENT |
| LOW | gpustack/server/metrics_collector.py | 561 | # is personal. It covers | COMMENT |
| LOW | gpustack/server/bus.py | 221 | self._coordinator = None | COMMENT |
| LOW | gpustack/server/resource_usage_collector.py | 101 | SKU_SOURCE_TYPE_NAME = "type_name" | COMMENT |
| LOW | gpustack/server/resource_usage_collector.py | 181 | # ``type_snapshot`` is the authoritative reference into ``gpu_instance_types`` | COMMENT |
| LOW | gpustack/server/resource_usage_collector.py | 581 | if card_memory_mib: | COMMENT |
| LOW | gpustack/utils/tabular_export.py | 381 | buffer = io.BytesIO() | 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/benchmark.py | 141 | ), | COMMENT |
| LOW | gpustack/schemas/benchmark.py | 361 | load_type: Optional[BenchmarkLoadTypeEnum] = Field(default=None, sa_type=AutoString) | COMMENT |
| LOW | gpustack/schemas/benchmark.py | 381 | # source of truth that drifts the moment either is retuned. | COMMENT |
| LOW | gpustack/schemas/models.py | 461 | COMMENT | |
| LOW | gpustack/schemas/users.py | 161 | # would honour it. | COMMENT |
| LOW | gpustack/schemas/clusters.py | 361 | return is_gpu_service_k8s_options(cluster.k8s_options) | COMMENT |
| LOW | gpustack/schemas/stmt.py | 221 | COMMENT | |
| LOW | gpustack/schemas/stmt.py | 261 | # ``principal_users``, which maps a USER-principal to itself — so a | 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/gpu_instance_types.py | 581 | COMMENT | |
| LOW | gpustack/schemas/model_usage.py | 41 | api_key_id: Optional[int] = Field(default=None, sa_column=Column(Integer)) | COMMENT |
| LOW | gpustack/schemas/model_provider.py | 41 | COMMENT | |
| LOW | gpustack/schemas/organizations.py | 21 | COMMENT | |
| LOW | gpustack/schemas/model_sets.py | 41 | # (never trusted from the client). Lets compatibility checks see | COMMENT |
| LOW | gpustack/schemas/api_keys.py | 61 | # ``security.secret_key_digest_eligible``). Both columns are permanent and | COMMENT |
| 76 more matches not shown… | ||||
| 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 | 1031 | # Step 1: Apply worker filters before broadcasting | COMMENT |
| LOW | gpustack/scheduler/calculator.py | 1066 | # 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 | 381 | # Check if this is a cross-instance event (only has ID) | COMMENT |
| LOW | gpustack/policies/utils.py | 204 | # Check if this GPU can be added to the current group | COMMENT |
| LOW | gpustack/policies/utils.py | 210 | # Check if min_allocatable_memory >= current_gpu_allocatable_memory * 0.9 | COMMENT |
| LOW | gpustack/policies/utils.py | 530 | # Check if this is a main worker instance | COMMENT |
| LOW | gpustack/policies/utils.py | 533 | # Check if this worker is used as a subordinate worker | COMMENT |
| LOW | gpustack/policies/utils.py | 787 | # Check if this GPU can be added to the current group | COMMENT |
| LOW | gpustack/policies/utils.py | 793 | # 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 | 114 | # Check if gpu_type is supported by custom_framework | COMMENT |
| LOW | …ck/policies/worker_filters/backend_framework_filter.py | 120 | # Check if gpu_type is supported by built_in_frameworks | COMMENT |
| LOW | …ck/policies/worker_filters/backend_framework_filter.py | 178 | # Check if model has specified backend_version | COMMENT |
| LOW | …ck/policies/worker_filters/backend_framework_filter.py | 185 | # 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 | 582 | # Check if this is a multi-node deployment | COMMENT |
| LOW | gpustack/worker/backends/sglang.py | 758 | # Check if tensor parallelism is already specified | COMMENT |
| LOW | gpustack/client/generated_benchmark_client.py | 249 | # Check if we have accumulated enough items (heuristic) | COMMENT |
| LOW | …tack/client/generated_cache_service_instance_client.py | 254 | # Check if we have accumulated enough items (heuristic) | COMMENT |
| LOW | gpustack/client/generated_user_client.py | 247 | # Check if we have accumulated enough items (heuristic) | COMMENT |
| LOW | gpustack/client/generated_model_client.py | 247 | # Check if we have accumulated enough items (heuristic) | COMMENT |
| LOW | gpustack/client/generated_model_instance_client.py | 250 | # Check if we have accumulated enough items (heuristic) | COMMENT |
| LOW | gpustack/client/generated_cache_service_client.py | 250 | # Check if we have accumulated enough items (heuristic) | COMMENT |
| LOW | gpustack/client/generated_model_file_client.py | 249 | # Check if we have accumulated enough items (heuristic) | COMMENT |
| LOW | gpustack/client/generated_model_route_target_client.py | 252 | # Check if we have accumulated enough items (heuristic) | COMMENT |
| LOW | gpustack/client/generated_worker_client.py | 249 | # Check if we have accumulated enough items (heuristic) | COMMENT |
| LOW | gpustack/client/generated_inference_backend_client.py | 252 | # 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 | 1446 | # Check if the backend is being used by any models | COMMENT |
| LOW | gpustack/routes/inference_backend.py | 569 | # Check if this version has any built-in frameworks | COMMENT |
| LOW | gpustack/routes/inference_backend.py | 1357 | # Check if updating to a name that already exists (excluding current backend) | COMMENT |
| LOW | gpustack/routes/inference_backend.py | 1614 | # Check if updating to a name that already exists (excluding current backend) | COMMENT |
| LOW | gpustack/routes/inference_backend.py | 1644 | # Check if any versions are being removed and validate they're not in use | COMMENT |
| LOW | gpustack/routes/inference_backend.py | 1733 | # 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 | 401 | 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 | 992 | Get pretrained config from remote workers for LOCAL_PATH models. Args: model: Model with source LOCAL_ | STRING |
| HIGH | gpustack/scheduler/calculator.py | 1016 | Calculate model resource claim by running gguf-parser on a worker. Args: model: Model to calculate the | STRING |
| HIGH | gpustack/scheduler/calculator.py | 1272 | Read and parse model_index.json from local directory. Args: path: Directory path containing model_inde | STRING |
| HIGH | gpustack/scheduler/calculator.py | 1306 | Calculate total size of LLM model weights in root directory. Args: path: Directory path to scan R | STRING |
| HIGH | gpustack/scheduler/calculator.py | 1342 | Calculate total size of diffusion model weights. Logic: 1. Read model_index.json to get pipeline component | STRING |
| HIGH | gpustack/scheduler/calculator.py | 1408 | 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 | 169 | Get configuration for a specific version. Args: version: Version string, uses default_vers | STRING |
| HIGH | gpustack/worker/backends/base.py | 595 | 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 |
|---|---|---|---|---|
| HIGH | tests/routers/test_usage_export_integration.py | 952 | # Untracked carries no identity at all (the field is omitted, not null), | COMMENT |
| HIGH | tests/routes/test_gpu_service_search_alignment.py | 3 | All of them render ``displayName || name`` in the Name column and all of them | STRING |
| 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/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/worker/backends/base.py | 865 | rm -rf /usr/local/cuda/compat 2>/dev/null || true | CODE |
| HIGH | gpustack/worker/backends/base.py | 866 | ldconfig 2>/dev/null || true | CODE |
| HIGH | gpustack/routes/users.py | 281 | # ``{"source": null}`` explicitly would otherwise write NULL | COMMENT |
| HIGH | gpustack/routes/gpu_instances_helper.py | 74 | ``display_name || name`` as the UI writes it, where ``nullif(..., '')`` is | 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 | 100 | # Create a mock session that returns the backend | COMMENT |
| MEDIUM | …licies/worker_filters/test_backend_framework_filter.py | 255 | # Create a worker with mixed GPU types (simulate by modifying the worker) | COMMENT |
| MEDIUM | …licies/worker_filters/test_backend_framework_filter.py | 393 | # Create a worker with empty GPU list | COMMENT |
| MEDIUM | …licies/worker_filters/test_backend_framework_filter.py | 508 | # Create a model that will result in backend_name being None | COMMENT |
| MEDIUM | …licies/worker_filters/test_backend_framework_filter.py | 1022 | # 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 | 300 | # Create a closure that captures the topic | COMMENT |
| MEDIUM | gpustack/policies/utils.py | 945 | # 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 | 1564 | # Create the backend | COMMENT |
| MEDIUM | gpustack/routes/inference_backend.py | 1096 | # Create the response with the same structure as the original | 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 | 1031 | # Step 1: Apply worker filters before broadcasting | COMMENT |
| LOW | gpustack/scheduler/calculator.py | 1066 | # 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_gpu_service_search_alignment.py | 373 | # which has the cluster-visibility scaffolding this module does not. | COMMENT |
| MEDIUM⚡ | gpustack/server/controllers.py | 623 | # The snapshot convergence path is event-driven; the | COMMENT |
| MEDIUM | gpustack/schemas/benchmark.py | 419 | # across requests (system prompt / RAG context) to exercise prefix-cache | COMMENT |
| MEDIUM | gpustack/worker/serve_manager.py | 876 | # 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 |
| 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 |
|---|---|---|---|---|
| LOW | tests/worker/backends/test_backend.py | 1042 | # 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/routes/worker/filesystem.py | 267 | # 2. Path validation - use validate_path_security for robust security | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | tests/k8s/test_template_render.py | 879 | processor = Cluster.__table__.c.k8s_options.type.bind_processor(sqlite.dialect()) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/gpu_instances/test_operator_settings.py | 732 | CODE | |
| MEDIUM | tests/routes/test_model_routes.py | 226 | CODE | |
| MEDIUM | tests/routes/test_model_routes.py | 677 | CODE | |
| MEDIUM | tests/routes/test_gpu_instance_type_flavors.py | 233 | CODE | |
| MEDIUM | tests/gateway/test_operator_subscription.py | 301 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/server/test_resource_usage_collector_type_snapshot.py | 65 | CODE | |
| LOW | tests/utils/model.py | 33 | CODE | |
| LOW | tests/routes/test_gpu_instance_types.py | 246 | CODE | |
| LOW | gpustack/server/worker_request.py | 214 | CODE | |
| LOW | gpustack/routes/resource_usage.py | 2259 | CODE | |
| LOW | gpustack/routes/model_routes.py | 279 | CODE | |
| LOW | gpustack/routes/benchmarks.py | 108 | 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 | 943 | AsyncMock(return_value={"email": "user@example.com", "name": "Test User"}), | CODE |
| LOW | tests/routes/test_cache_services.py | 2239 | assert "placeholder" in exc_info.value.message | 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 | 3911 | # 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 | 424 | # TODO: add validation in the future | COMMENT |