Lemonade helps users discover and run local AI apps by serving optimized LLMs right from their own GPUs and NPUs. Join our discord: https://discord.gg/5xXzkMu8Zk
This report summarizes scanner evidence for lemonade-sdk/lemonade, a C++ project with 5,866 GitHub stars. SynthScan examined 272,942 lines of code across 806 source files, recording 1242 pattern matches distributed across 18 syntactic categories. The legacy adjusted pattern signal is 8.3 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 643 finding(s).
Are imports declared and package/API names verified? 82 finding(s).
Are wrappers, guards, and repeated structures necessary? 734 finding(s).
Which changes need focused human review? 1242 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 1242 distinct pattern matches across 18 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. 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 configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | CMakeLists.txt | 750 | # ============================================================ | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 752 | # ============================================================ | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 757 | # ============================================================ | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 759 | # ============================================================ | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 1139 | # ============================================================ | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 1141 | # ============================================================ | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 1144 | # ============================================================ | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 1146 | # ============================================================ | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 1153 | # ============================================================ | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 1155 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 162 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 164 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 201 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 203 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 223 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 225 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 344 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 346 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 493 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 495 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 564 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 566 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 789 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 791 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 808 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 810 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 995 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 997 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 1079 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 1081 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 1175 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 1177 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 1317 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 1319 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 1380 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 1382 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 1517 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 1519 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 1670 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 1672 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 1923 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 1925 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 2174 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 2176 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 2264 | # ============================================================ | COMMENT |
| MEDIUM | CMakeLists.txt | 2266 | # ============================================================ | COMMENT |
| MEDIUM | test/test_ollama.py | 108 | # ======================================================================== | COMMENT |
| MEDIUM | test/test_ollama.py | 110 | # ======================================================================== | COMMENT |
| MEDIUM | test/test_ollama.py | 304 | # ======================================================================== | COMMENT |
| MEDIUM | test/test_ollama.py | 306 | # ======================================================================== | COMMENT |
| MEDIUM | test/test_ollama.py | 491 | # ======================================================================== | COMMENT |
| MEDIUM | test/test_ollama.py | 493 | # ======================================================================== | COMMENT |
| MEDIUM | test/test_ollama.py | 619 | # ======================================================================== | COMMENT |
| MEDIUM | test/test_ollama.py | 621 | # ======================================================================== | COMMENT |
| MEDIUM | test/test_ollama.py | 650 | # ======================================================================== | COMMENT |
| MEDIUM | test/test_ollama.py | 652 | # ======================================================================== | COMMENT |
| MEDIUM | test/test_ollama.py | 674 | # ======================================================================== | COMMENT |
| MEDIUM | test/test_ollama.py | 676 | # ======================================================================== | COMMENT |
| MEDIUM | test/test_ollama.py | 770 | # ======================================================================== | COMMENT |
| MEDIUM | test/test_ollama.py | 772 | # ======================================================================== | COMMENT |
| 199 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/benchmark_large_request_memory.py | 243 | except OSError: | CODE |
| HIGH | tools/benchmark_large_request_memory.py | 203 | except OSError: | CODE |
| HIGH | tools/moonshine-server/main.py | 394 | except Exception: | CODE |
| HIGH | tools/moonshine-server/main.py | 365 | except Exception: | CODE |
| HIGH | tools/moonshine-server/main.py | 369 | except Exception: | CODE |
| HIGH | tools/moonshine-server/main.py | 487 | except Exception: | CODE |
| HIGH | tools/moonshine-server/main.py | 342 | except Exception: | CODE |
| HIGH | test/server_websocket_auth.py | 90 | except Exception: | CODE |
| HIGH | test/server_websocket_auth.py | 368 | except Exception: | CODE |
| HIGH | test/server_websocket_auth.py | 443 | except Exception: | CODE |
| HIGH | test/server_log_rotation.py | 259 | except Exception: | CODE |
| HIGH | test/server_watchdog_lifecycle.py | 79 | except Exception: | CODE |
| HIGH | test/server_jobs.py | 129 | except requests.RequestException: | CODE |
| HIGH | test/server_jobs.py | 170 | except requests.RequestException: | CODE |
| HIGH | test/server_websocket_telemetry.py | 96 | except Exception: | CODE |
| HIGH | test/server_websocket_telemetry.py | 104 | except Exception: | CODE |
| HIGH | test/server_websocket_telemetry.py | 160 | except Exception: | CODE |
| HIGH | test/server_websocket_telemetry.py | 284 | except ( | CODE |
| HIGH | test/server_websocket_telemetry.py | 751 | except ( | CODE |
| HIGH | test/server_websocket_telemetry.py | 760 | except ( | CODE |
| HIGH | test/server_websocket_telemetry.py | 797 | except ( | CODE |
| HIGH | test/server_websocket_telemetry.py | 810 | except ( | CODE |
| HIGH | test/server_websocket_telemetry.py | 823 | except ( | CODE |
| HIGH | test/server_websocket_telemetry.py | 853 | except ( | CODE |
| HIGH | test/server_websocket_telemetry.py | 92 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 3188 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 4162 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 347 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 3398 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 3617 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 3706 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 3821 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 3886 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 4414 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 4422 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 4531 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 4539 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 4596 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 5306 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 5314 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 5322 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 5583 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 5758 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 5766 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 5822 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 5830 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 5875 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 6128 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 6255 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 6421 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 7643 | except requests.RequestException: | CODE |
| HIGH | test/server_endpoints.py | 8099 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 8167 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 448 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 4023 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 4315 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 5575 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 5750 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 6367 | except Exception: | CODE |
| HIGH | test/server_endpoints.py | 6560 | except Exception: | CODE |
| 28 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | CMakeLists.txt | 61 | ) | COMMENT |
| LOW | CMakeLists.txt | 161 | COMMENT | |
| LOW | CMakeLists.txt | 761 | # Common compiler definitions | COMMENT |
| LOW | CMakeLists.txt | 1321 | # Resources are self-contained in src/cpp/resources/: | COMMENT |
| LOW | CMakeLists.txt | 1441 | endif() | COMMENT |
| LOW | mkdocs.yml | 1 | # Configuration for the Lemonade Server documentation site. | COMMENT |
| LOW | test/cpp/test_backend_mode_contract.cpp | 1 | // Proves each backend descriptor's declared `supported_modes` matches the | COMMENT |
| LOW | test/cpp/test_rocm_root_resolution.cpp | 1 | // Unit tests for lemon::backends::BackendUtils::resolve_rocm_root() and its | COMMENT |
| LOW | test/cpp/test_install_atomicity.cpp | 1 | // Standalone test for lemon::backends::commit_staged_install. | COMMENT |
| LOW | test/cpp/test_request_cancellation.cpp | 1 | // Comprehensive test suite for client request cancellation. | COMMENT |
| LOW | test/cpp/test_directory_watcher.cpp | 1 | // Standalone test for lemon::DirectoryWatcher. | COMMENT |
| LOW | test/cpp/test_http_client_timeout.cpp | 1 | // Unit tests for the timeout convention shared by lemon::utils::HttpClient's | COMMENT |
| LOW | test/cpp/test_routing_policy_llm_router.cpp | 1 | // Unit + end-to-end tests for the `llm` router classifier and the | COMMENT |
| LOW | test/cpp/test_routing_policy_contract.cpp | 1 | // Foundation contract test for the generic routing engine. | COMMENT |
| LOW | test/cpp/test_routing_policy_contract.cpp | 21 | COMMENT | |
| LOW | test/cpp/test_config_discovery.cpp | 1 | #include <cstdio> | COMMENT |
| LOW | test/cpp/fake_classifier_services.h | 1 | #pragma once | COMMENT |
| LOW | test/cpp/test_routing_policy_store.cpp | 1 | // Unit tests for the directory-backed RoutingPolicyStore (#2383). | COMMENT |
| LOW | test/cpp/test_routing_helper_reconcile.cpp | 1 | // Concurrency/residency test for routing-helper reconciliation. | COMMENT |
| LOW | test/cpp/test_routing_helper_reconcile.cpp | 21 | COMMENT | |
| LOW | test/cpp/test_pip_download_parser.cpp | 1 | // Unit tests for lemon::backends::BackendUtils::parse_pip_download_line(). | COMMENT |
| LOW | test/cpp/test_latest_version_fallback.cpp | 1 | // Standalone unit tests for lemon::resolve_latest_pin() — the pure policy that | COMMENT |
| LOW | test/cpp/test_backend_utils_dll_version.cpp | 1 | // Unit tests for BackendUtils::read_dll_version(). | COMMENT |
| LOW | test/cpp/test_routing_policy_engine.cpp | 1 | // Unit tests for the RoutingPolicyEngine assembly (#2382). | COMMENT |
| LOW | test/cpp/test_config_migration.cpp | 1 | // Standalone unit tests for lemon::config_get_version(), | COMMENT |
| LOW | test/cpp/test_routing_policy_deterministic.cpp | 1 | // Unit tests for the Lemonade Router deterministic leaf conditions (#2380). | COMMENT |
| LOW | test/cpp/test_anthropic_relay_headers.cpp | 1 | // Unit tests for the /v1/messages relay header allowlists. | COMMENT |
| LOW | test/cpp/test_backend_utils_gpu_env.cpp | 1 | // Unit tests for lemon::backends::BackendUtils::validate_device_backend_match() | COMMENT |
| LOW | test/cpp/test_log_rotation.cpp | 1 | #include "lemon/logging_config.h" | COMMENT |
| LOW | test/cpp/test_gguf_capabilities.cpp | 1 | // Standalone test for lemon GGUF capability detection (src/cpp/include/lemon/gguf_capabilities.h). | COMMENT |
| LOW | test/cpp/test_network_utils.cpp | 1 | // Windows header discipline — must precede all other includes. | COMMENT |
| LOW | test/cpp/test_hrx_contract.cpp | 1 | // Proves HRX keeps its narrow install, custom-argument, and process-launch | COMMENT |
| LOW | test/cpp/test_routing_policy_parser.cpp | 1 | // Unit tests for the Lemonade Router policy parser (#2383). | COMMENT |
| LOW | test/cpp/test_cloud_discovery_policy.cpp | 1 | // Unit tests for the CloudServer statics that address an outbound provider | COMMENT |
| LOW | test/cpp/test_llamacpp_system_backend.cpp | 1 | // Direct coverage for the Linux llamacpp "system" backend resolver. | COMMENT |
| LOW | test/cpp/test_github_api.cpp | 1 | #include <lemon/utils/github_api.h> | COMMENT |
| LOW | test/cpp/test_routing_policy_evaluator.cpp | 1 | // Unit tests for the Lemonade Router match evaluator (#2378). | COMMENT |
| LOW | test/cpp/test_telemetry_helpers.cpp | 1 | #include <algorithm> | COMMENT |
| LOW | test/cpp/test_routing_conformance_corpus.cpp | 1 | // Back-compat conformance corpus runner (#2425). | COMMENT |
| LOW | test/cpp/test_recipe_hiding.cpp | 1 | // Tests for the rule that reports a backend as unavailable (so clients hide it | COMMENT |
| LOW | test/cpp/test_model_alias.cpp | 1 | #include "lemon/alias_manager.h" | COMMENT |
| LOW | test/cpp/test_system_info_helpers.cpp | 1 | // C++ coverage for the pure SystemInfo CUDA mapping and device-family matching | COMMENT |
| LOW | test/cpp/test_launch_command.cpp | 1 | // Checks that WrappedServer::get_process_info(), which /health reports, takes the | COMMENT |
| LOW | test/cpp/test_config_dir_migration.cpp | 1 | #include <cassert> | COMMENT |
| LOW | test/cpp/test_routing_policy_semantic.cpp | 1 | // Unit tests for the Lemonade Router semantic_similarity classifier (#2381). | COMMENT |
| LOW | test/cpp/test_process_manager.cpp | 1 | #include <lemon/utils/process_manager.h> | COMMENT |
| LOW | test/cpp/test_model_sync_and_auto_update.cpp | 1 | // Contract and unit tests for Model Sync and Auto-Update features. | COMMENT |
| LOW | test/cpp/test_config_merging.cpp | 1 | #include <cassert> | COMMENT |
| LOW | test/cpp/test_cloud_provider_registry_config.cpp | 1 | // Unit tests for the CloudProviderRegistry per-provider config fields that | COMMENT |
| LOW | test/cpp/test_session_utils.cpp | 1 | // Unit tests for session/client identity resolution in session_utils.h: | COMMENT |
| LOW | test/cpp/test_http_client_security.cpp | 1 | // Unit tests for the HttpSecurityPolicy trust boundaries applied by | COMMENT |
| LOW | docs/dev/getting-started.md | 741 | ## Usage | COMMENT |
| LOW | docs/assets/flowchart.js | 1 | // ============================================================================ | COMMENT |
| LOW | docs/assets/flowchart.js | 61 | // durations are fixed (in ms); within a route the dot moves at constant | COMMENT |
| LOW | docs/assets/flowchart.js | 461 | var opacityTimes = routerTimes([0, fadeIn, routerFrac(t.end), routerFrac(t.end + routerFlow.dotFade), 1]); | COMMENT |
| LOW | docs/assets/flowchart.js | 821 | // ------------------------------------------------------------------------ | COMMENT |
| LOW | docs/assets/flowchart.js | 1301 | COMMENT | |
| LOW | docs/assets/flowchart.js | 1501 | function routerDemo(kind) { | COMMENT |
| LOW | docs/assets/persona-demo/framework.js | 1 | // ============================================================================ | COMMENT |
| LOW | docs/assets/persona-demo/common.js | 1 | // ============================================================================ | COMMENT |
| 211 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/moonshine-server/main.py | 61 | def convert_tokenizer_json_to_bin( | CODE |
| LOW | tools/moonshine-server/main.py | 276 | async def _handle_streaming_session(reader, sender: _EventSender, transcriber_factory): | CODE |
| LOW⚡ | test/test_release.py | 54 | def test_select_branch_picks_newest_by_year_week(self): | CODE |
| LOW⚡ | test/test_release.py | 63 | def test_select_branch_honors_explicit_hotfix_branch(self): | CODE |
| LOW⚡ | test/test_release.py | 72 | def test_missing_explicit_branch_raises(self): | CODE |
| LOW⚡ | test/test_release.py | 78 | def test_dry_run_computes_version_without_tagging(self): | CODE |
| LOW | test/test_release.py | 90 | def test_create_release_tags_and_pushes(self): | CODE |
| LOW | test/test_release.py | 106 | def test_signed_tag_failure_explains_how_to_proceed(self): | CODE |
| LOW | test/test_release.py | 134 | def test_existing_tag_is_rejected(self): | CODE |
| LOW | test/test_version.py | 15 | def test_workflow_cron_matches_the_cutoff(self): | CODE |
| LOW⚡ | test/test_version.py | 30 | def test_before_cutoff_targets_next_week(self): | CODE |
| LOW⚡ | test/test_version.py | 34 | def test_at_cutoff_targets_week_after_next(self): | CODE |
| LOW⚡ | test/test_version.py | 38 | def test_iso_year_follows_release_date(self): | CODE |
| LOW⚡ | test/test_version.py | 44 | def test_at_cutoff_names_next_week(self): | CODE |
| LOW⚡ | test/test_version.py | 48 | def test_late_cutoff_day_run_still_names_next_week(self): | CODE |
| LOW⚡ | test/test_version.py | 52 | def test_before_cutoff_names_the_branch_cut_last_week(self): | CODE |
| LOW⚡ | test/test_version.py | 56 | def test_branch_week_matches_dev_version_week_before_cutoff(self): | CODE |
| LOW⚡ | test/test_version.py | 64 | def test_iso_year_follows_release_date(self): | CODE |
| LOW⚡ | test/test_version.py | 97 | def test_without_git_falls_back_to_dated_placeholder(self): | CODE |
| LOW⚡ | test/test_version.py | 104 | def test_version_file_overrides_git(self): | CODE |
| LOW⚡ | test/test_version.py | 108 | def test_non_candidate_version_contains_count_and_hash(self): | CODE |
| LOW⚡ | test/test_version.py | 115 | def test_release_branch_counts_commits_after_main(self): | CODE |
| LOW⚡ | test/test_version.py | 121 | def test_release_branch_continues_from_existing_tag(self): | CODE |
| LOW⚡ | test/test_version.py | 131 | def test_exact_release_tag_works_in_detached_checkout(self): | CODE |
| LOW⚡ | test/test_version.py | 137 | def test_github_branch_name_works_in_detached_checkout(self): | CODE |
| LOW | test/server_log_rotation.py | 70 | def test_log_rotation_and_retention_cap(self): | CODE |
| LOW | test/server_log_rotation.py | 193 | def test_runtime_log_rotation(self): | CODE |
| LOW | test/server_log_rotation.py | 281 | def test_reject_directory_path(self): | CODE |
| LOW | test/server_log_rotation.py | 335 | def test_invalid_cli_does_not_corrupt_config_json(self): | CODE |
| LOW | test/server_watchdog_lifecycle.py | 135 | def _wait_for_model_absent_from_health( | CODE |
| LOW | test/server_watchdog_lifecycle.py | 184 | def _non_streaming_chat_completion(self, model_name, max_tokens=8): | CODE |
| LOW | test/server_watchdog_lifecycle.py | 264 | def _assert_fresh_backend_pid(self, model_name, old_pid): | CODE |
| LOW | test/server_watchdog_lifecycle.py | 275 | def test_idle_crashed_backend_is_reaped_and_removed_from_health(self): | CODE |
| LOW | test/server_watchdog_lifecycle.py | 296 | def test_next_streaming_request_reaps_and_reloads_crashed_backend(self): | CODE |
| LOW | test/server_watchdog_lifecycle.py | 320 | def test_active_non_streaming_request_reloads_and_replays_after_backend_crash(self): | CODE |
| LOW | test/server_watchdog_lifecycle.py | 377 | def test_next_non_streaming_request_reaps_reloads_and_returns_completion(self): | CODE |
| LOW | test/server_watchdog_lifecycle.py | 405 | def test_concurrent_non_streaming_request_during_reload_also_completes(self): | CODE |
| LOW | test/server_jobs.py | 250 | def installed_llamacpp_backend(self): | CODE |
| LOW | test/server_jobs.py | 298 | def test_system_info_job_completes(self): | CODE |
| LOW | test/server_jobs.py | 317 | def test_invalid_graph_rejected(self): | CODE |
| LOW | test/server_jobs.py | 365 | def test_on_fail_goto_recovery(self): | CODE |
| LOW | test/server_jobs.py | 405 | def test_delete_terminal_and_active(self): | CODE |
| LOW | test/server_jobs.py | 423 | def test_persistence_across_restart(self): | CODE |
| LOW | test/server_jobs.py | 443 | def test_persistence_multiple_writes(self): | CODE |
| LOW | test/server_jobs.py | 471 | def test_delete_active_is_durable_across_crash(self): | CODE |
| LOW | test/server_jobs.py | 506 | def test_pause_and_interrupt_queued_jobs_take_effect_immediately(self): | CODE |
| LOW | test/server_jobs.py | 547 | def test_job_cap_rejected_when_nothing_evictable(self): | CODE |
| LOW | test/server_jobs.py | 575 | def test_progress_counts_handled_failures(self): | CODE |
| LOW | test/server_jobs.py | 660 | def test_queue_behind_exclusive_job(self): | CODE |
| LOW | test/server_jobs.py | 728 | def test_tokenize_gated_behind_exclusive_job(self): | CODE |
| LOW | test/server_jobs.py | 783 | def test_exclusive_job_drains_inflight_chat(self): | CODE |
| LOW | test/server_jobs.py | 866 | def test_interrupt_mid_job_cleans_up(self): | CODE |
| LOW | test/server_jobs.py | 921 | def test_delete_active_exclusive_cleans_up(self): | CODE |
| LOW | test/server_jobs.py | 958 | def test_preexisting_model_survives_job_interrupt(self): | CODE |
| LOW | test/server_jobs.py | 1022 | def test_delete_active_pinned_model_cleans_up(self): | CODE |
| LOW | test/server_jobs.py | 1042 | def test_interrupt_pinned_model_cleans_up(self): | CODE |
| LOW | test/server_jobs.py | 1062 | def test_preexisting_pinned_model_survives_job_interrupt(self): | CODE |
| LOW | test/server_jobs.py | 1106 | def loaded_model_pinned_state(self, model): | CODE |
| LOW | test/server_jobs.py | 1109 | def test_pin_state_of_preexisting_model_restored_after_job(self): | CODE |
| LOW | test/server_jobs.py | 1180 | def test_job_ownership_survives_pause_resume_interrupt(self): | CODE |
| 154 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/benchmark_large_request_memory.py | 311 | except Exception as error: | CODE |
| MEDIUM | tools/moonshine-server/main.py | 208 | def _drain(self): | CODE |
| LOW⚡ | tools/moonshine-server/main.py | 197 | except Exception: | CODE |
| LOW⚡ | tools/moonshine-server/main.py | 205 | except Exception: | CODE |
| LOW⚡ | tools/moonshine-server/main.py | 211 | except Exception: | CODE |
| LOW | tools/moonshine-server/main.py | 173 | except Exception: | CODE |
| LOW | tools/moonshine-server/main.py | 319 | except Exception: | CODE |
| LOW | tools/moonshine-server/main.py | 342 | except Exception: | CODE |
| LOW | tools/moonshine-server/main.py | 365 | except Exception: | CODE |
| LOW | tools/moonshine-server/main.py | 369 | except Exception: | CODE |
| LOW | tools/moonshine-server/main.py | 394 | except Exception: | CODE |
| LOW | tools/moonshine-server/main.py | 481 | except Exception as e: | CODE |
| LOW | tools/moonshine-server/main.py | 487 | except Exception: | CODE |
| LOW | tools/moonshine-server/main.py | 518 | except Exception as e: | CODE |
| LOW | test/server_websocket_auth.py | 90 | except Exception: | CODE |
| LOW | test/server_websocket_auth.py | 105 | except Exception: | CODE |
| LOW | test/server_websocket_auth.py | 368 | except Exception: | CODE |
| LOW | test/server_websocket_auth.py | 443 | except Exception: | CODE |
| LOW | test/validate_sdcpp.py | 41 | except Exception as exc: # noqa: BLE001 - argparse shows the clean message | CODE |
| LOW | test/validate_sdcpp.py | 283 | except Exception as exc: # noqa: BLE001 - keep JSON on all failures | CODE |
| LOW | test/validate_sdcpp.py | 354 | except Exception as exc: # noqa: BLE001 - keep JSON on all failures | CODE |
| LOW | test/server_log_rotation.py | 65 | except Exception: | CODE |
| LOW | test/server_log_rotation.py | 151 | except Exception: | CODE |
| LOW | test/server_log_rotation.py | 156 | except Exception: | CODE |
| LOW | test/server_log_rotation.py | 238 | except Exception: | CODE |
| LOW | test/server_log_rotation.py | 259 | except Exception: | CODE |
| LOW | test/server_log_rotation.py | 266 | except Exception: | CODE |
| LOW | test/server_watchdog_lifecycle.py | 79 | except Exception: | CODE |
| MEDIUM | test/server_watchdog_lifecycle.py | 71 | def tearDownClass(cls): | CODE |
| LOW | test/server_jobs.py | 111 | except Exception: | CODE |
| LOW | test/validate_vllm.py | 52 | except Exception as exc: | CODE |
| MEDIUM | test/server_websocket_telemetry.py | 629 | print("Error parsing mock OTLP data:", e) | CODE |
| LOW⚡ | test/server_websocket_telemetry.py | 88 | except Exception: | CODE |
| LOW⚡ | test/server_websocket_telemetry.py | 92 | except Exception: | CODE |
| LOW⚡ | test/server_websocket_telemetry.py | 96 | except Exception: | CODE |
| LOW⚡ | test/server_websocket_telemetry.py | 104 | except Exception: | CODE |
| LOW | test/server_websocket_telemetry.py | 160 | except Exception: | CODE |
| LOW | test/server_websocket_telemetry.py | 168 | except Exception: | CODE |
| LOW | test/server_websocket_telemetry.py | 628 | except Exception as e: | CODE |
| LOW | test/validate_llamacpp.py | 53 | except Exception as exc: | CODE |
| LOW | test/test_ollama.py | 446 | except Exception as exc: # noqa: BLE001 - best-effort cleanup | CODE |
| LOW | test/test_ollama.py | 946 | except Exception as exc: # noqa: BLE001 - best-effort cleanup | CODE |
| LOW | test/server_cli_apikey.py | 159 | except Exception: | CODE |
| LOW⚡ | test/server_endpoints.py | 5306 | except Exception: | CODE |
| LOW⚡ | test/server_endpoints.py | 5314 | except Exception: | CODE |
| LOW⚡ | test/server_endpoints.py | 5322 | except Exception: | CODE |
| LOW⚡ | test/server_endpoints.py | 5750 | except Exception: | CODE |
| LOW⚡ | test/server_endpoints.py | 5758 | except Exception: | CODE |
| LOW⚡ | test/server_endpoints.py | 5766 | except Exception: | CODE |
| LOW | test/server_endpoints.py | 347 | except Exception: | CODE |
| LOW | test/server_endpoints.py | 448 | except Exception: | CODE |
| LOW | test/server_endpoints.py | 545 | except Exception as e: | CODE |
| LOW | test/server_endpoints.py | 3188 | except Exception: | CODE |
| LOW | test/server_endpoints.py | 3398 | except Exception: | CODE |
| LOW | test/server_endpoints.py | 3617 | except Exception: | CODE |
| LOW | test/server_endpoints.py | 3706 | except Exception: | CODE |
| LOW | test/server_endpoints.py | 3821 | except Exception: | CODE |
| LOW | test/server_endpoints.py | 3886 | except Exception: | CODE |
| LOW | test/server_endpoints.py | 4023 | except Exception: | CODE |
| LOW | test/server_endpoints.py | 4162 | except Exception: | CODE |
| 109 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | test/server_endpoints.py | 1686 | print("[OK] Options merge on POST, clear on null, and are erased by DELETE") | CODE |
| HIGH | .github/scripts/triage_dashboard.py | 247 | let dateFrom = null; // "YYYY-MM-DD" or null | CODE |
| HIGH | .github/scripts/triage_dashboard.py | 248 | let dateTo = null; // "YYYY-MM-DD" or null | CODE |
| HIGH⚡ | .github/scripts/triage_dashboard.py | 262 | if (dateFrom && day < dateFrom) return false; | CODE |
| HIGH⚡ | .github/scripts/triage_dashboard.py | 263 | if (dateTo && day > dateTo) return false; | CODE |
| HIGH⚡ | .github/scripts/triage_dashboard.py | 268 | return activeFilters.size > 0 || dateFrom || dateTo; | CODE |
| HIGH | .github/scripts/triage_dashboard.py | 282 | const isCollapsed = collapsible && collapsedFamilies.has(fname); | CODE |
| HIGH⚡ | .github/scripts/triage_dashboard.py | 326 | if (f === ASSIGNEE_UNASSIGNED || f.startsWith("assignee::")) assigneeFilters.push(f); | CODE |
| HIGH⚡ | .github/scripts/triage_dashboard.py | 326 | if (f === ASSIGNEE_UNASSIGNED || f.startsWith("assignee::")) assigneeFilters.push(f); | CODE |
| HIGH⚡ | .github/scripts/triage_dashboard.py | 327 | else labelFilters.push(f); | CODE |
| HIGH⚡ | .github/scripts/triage_dashboard.py | 377 | matches.sort((a, b) => b.comments - a.comments || b.number - a.number); | CODE |
| HIGH⚡ | .github/scripts/triage_dashboard.py | 379 | if (dateFrom) dateBits.push("from " + dateFrom); | CODE |
| HIGH⚡ | .github/scripts/triage_dashboard.py | 380 | if (dateTo) dateBits.push("to " + dateTo); | CODE |
| HIGH⚡ | .github/scripts/triage_dashboard.py | 450 | dateFromEl.addEventListener("change", () => { dateFrom = dateFromEl.value || null; render(); }); | CODE |
| HIGH⚡ | .github/scripts/triage_dashboard.py | 450 | dateFromEl.addEventListener("change", () => { dateFrom = dateFromEl.value || null; render(); }); | CODE |
| HIGH⚡ | .github/scripts/triage_dashboard.py | 451 | dateToEl.addEventListener("change", () => { dateTo = dateToEl.value || null; render(); }); | CODE |
| HIGH⚡ | .github/scripts/triage_dashboard.py | 451 | dateToEl.addEventListener("change", () => { dateTo = dateToEl.value || null; render(); }); | CODE |
| HIGH⚡ | .github/scripts/triage_dashboard.py | 453 | dateFrom = null; dateTo = null; | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/server_log_rotation.py | 81 | # Step 1: Pre-exist 1.2MB file and launch instance 1 -> rotates to .1 | COMMENT |
| LOW⚡ | test/server_log_rotation.py | 113 | # Step 2: Pre-exist 1.2MB file and launch instance 2 -> shifts .1 to .2, creates new .1 | COMMENT |
| LOW⚡ | test/server_log_rotation.py | 122 | # Step 3: Pre-exist 1.2MB file and launch instance 3 -> shifts .1->.2, prunes .3 | COMMENT |
| LOW | test/cpp/test_config_migration.cpp | 329 | // Step 1: merge with fresh defaults | COMMENT |
| LOW | test/cpp/test_config_merging.cpp | 433 | // Step 1: User previously configured custom port 9000 and custom backend vulkan | COMMENT |
| LOW | test/cpp/test_config_merging.cpp | 444 | // Step 2: User resets port back to default 13305 via handle_config_set workflow | COMMENT |
| LOW⚡ | test/cpp/test_config_merging.cpp | 455 | // Step 3: User resets backend back to "auto" | COMMENT |
| LOW⚡ | test/cpp/test_config_merging.cpp | 464 | // Step 4: load() still returns full defaults seamlessly | COMMENT |
| LOW | docs/guide/telemetry.md | 43 | #### Step 1: Start Arize Phoenix | COMMENT |
| LOW | docs/guide/telemetry.md | 67 | #### Step 2: Verify Arize Phoenix is Ready | COMMENT |
| LOW | docs/guide/telemetry.md | 79 | #### Step 3: Configure Lemonade Telemetry | COMMENT |
| LOW | docs/guide/telemetry.md | 115 | #### Step 4: Send a Test Request | COMMENT |
| LOW | docs/guide/telemetry.md | 130 | #### Step 5: Flush Traces Immediately (Optional) | COMMENT |
| LOW | docs/guide/telemetry.md | 138 | #### Step 6: View Traces in the UI | COMMENT |
| LOW | docs/guide/install/ubuntu.md | 7 | ## Step 1: Install lemonade-server | COMMENT |
| LOW | docs/guide/install/ubuntu.md | 22 | ## Step 2: Choose your frontend | COMMENT |
| LOW | docs/guide/install/arch.md | 3 | ## Step 1: Install lemonade-server | COMMENT |
| LOW | docs/guide/install/arch.md | 11 | ## Step 2: Choose your frontend | COMMENT |
| LOW | docs/api/openai.md | 799 | # Step 1: Generate an image and save the base64 response | COMMENT |
| LOW | docs/api/openai.md | 810 | # Step 2: Build the upscale JSON payload and pipe it to curl via stdin | COMMENT |
| LOW | docs/api/openai.md | 824 | # Step 1: Generate an image | COMMENT |
| LOW | docs/api/openai.md | 837 | # Step 2: Extract the base64 image | COMMENT |
| LOW | docs/api/openai.md | 840 | # Step 3: Upscale the image with Real-ESRGAN | COMMENT |
| LOW⚡ | docs/api/openai.md | 857 | # Step 1: Generate an image | COMMENT |
| LOW⚡ | docs/api/openai.md | 867 | # Step 2: Upscale the image with Real-ESRGAN (512x512 -> 2048x2048) | COMMENT |
| LOW⚡ | docs/api/openai.md | 873 | # Step 3: Save the upscaled image to a file | COMMENT |
| LOW | src/app/src/renderer/utils/backendInstaller.ts | 776 | // Step 1: Check if model is already loaded via health endpoint | COMMENT |
| LOW⚡ | src/app/src/renderer/utils/backendInstaller.ts | 802 | // Step 2: Signal UI that model loading is in progress | COMMENT |
| LOW⚡ | src/app/src/renderer/utils/backendInstaller.ts | 805 | // Step 3: Ensure backend is installed (fetch fresh system info to avoid stale closure) | COMMENT |
| LOW | src/app/src/renderer/utils/backendInstaller.ts | 855 | // Step 4: Check if model is downloaded | COMMENT |
| LOW⚡ | src/app/src/renderer/utils/backendInstaller.ts | 872 | // Step 5: Pull model if not downloaded (shows in Download Manager) | COMMENT |
| LOW⚡ | src/app/src/renderer/utils/backendInstaller.ts | 877 | // Step 6: Load model into memory (merge loadBody if provided) | COMMENT |
| LOW | src/cpp/server/system_info.cpp | 871 | // NOTE: This function collects hardware info only (no inference engines). | COMMENT |
| LOW | src/cpp/server/model_manager.cpp | 3125 | // Step 1: Load ALL models from JSON (server models) | COMMENT |
| LOW⚡ | src/cpp/server/model_manager.cpp | 3382 | // Step 2: Filter by backend availability. This is the full-registry pass, so | COMMENT |
| LOW⚡ | src/cpp/server/model_manager.cpp | 3387 | // Step 3: Check download status for all models. Dynamic-discovery backends | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/benchmark_large_request_memory.py | 256 | CODE | |
| LOW | tools/benchmark_large_request_memory.py | 399 | CODE | |
| LOW | tools/check_comment_slop.py | 193 | CODE | |
| LOW | tools/check_comment_slop.py | 238 | CODE | |
| LOW | tools/model_sizes.py | 183 | CODE | |
| LOW | tools/model_sizes.py | 304 | CODE | |
| LOW | tools/moonshine-server/main.py | 61 | CODE | |
| LOW | tools/moonshine-server/main.py | 276 | CODE | |
| LOW | tools/moonshine-server/main.py | 398 | CODE | |
| LOW | tools/moonshine-server/main.py | 423 | CODE | |
| LOW | test/server_websocket_auth.py | 339 | CODE | |
| LOW | test/server_websocket_auth.py | 413 | CODE | |
| LOW | test/validate_sdcpp.py | 245 | CODE | |
| LOW | test/server_websocket_telemetry.py | 82 | CODE | |
| LOW | test/server_websocket_telemetry.py | 108 | CODE | |
| LOW | test/server_websocket_telemetry.py | 616 | CODE | |
| LOW | test/server_gfx_topology.py | 144 | CODE | |
| LOW | test/test_ollama.py | 989 | CODE | |
| LOW | test/server_llm.py | 398 | CODE | |
| LOW | test/server_llm.py | 1047 | CODE | |
| LOW | test/server_llm.py | 1180 | CODE | |
| LOW | test/server_endpoints.py | 395 | CODE | |
| LOW | test/server_endpoints.py | 986 | CODE | |
| LOW | test/server_endpoints.py | 2451 | CODE | |
| LOW | test/server_endpoints.py | 7142 | CODE | |
| LOW | test/server_endpoints.py | 7268 | CODE | |
| LOW | test/server_endpoints.py | 7485 | CODE | |
| LOW | test/server_endpoints.py | 7743 | CODE | |
| LOW | test/server_endpoints.py | 8501 | CODE | |
| LOW | test/server_endpoints.py | 440 | CODE | |
| LOW | test/server_moonshine.py | 293 | CODE | |
| LOW | test/test_model_name_normalization.py | 59 | CODE | |
| LOW | test/test_model_name_normalization.py | 123 | CODE | |
| LOW | test/test_flm_status.py | 74 | CODE | |
| LOW | test/test_flm_status.py | 255 | CODE | |
| LOW | test/test_flm_status.py | 296 | CODE | |
| LOW | test/test_flm_status.py | 937 | CODE | |
| LOW | test/server_cli2.py | 86 | CODE | |
| LOW | test/server_cli2.py | 665 | CODE | |
| LOW | test/server_cli2.py | 2506 | CODE | |
| LOW | test/test_gpu_hang_retry.py | 335 | CODE | |
| LOW | test/test_gpu_hang_retry.py | 434 | CODE | |
| LOW | test/server_telemetry.py | 57 | CODE | |
| LOW | test/server_telemetry.py | 86 | CODE | |
| LOW | test/server_telemetry.py | 125 | CODE | |
| LOW | test/server_telemetry.py | 383 | CODE | |
| LOW | test/server_whisper.py | 262 | CODE | |
| LOW | test/server_whisper.py | 616 | CODE | |
| LOW | test/utils/server_base.py | 283 | CODE | |
| LOW | test/utils/server_base.py | 369 | CODE | |
| LOW | docs/tools/gen_backend_boilerplate.py | 171 | CODE | |
| LOW | examples/realtime_transcription.py | 86 | CODE | |
| LOW | examples/realtime_transcription.py | 129 | CODE | |
| LOW | examples/realtime_transcription.py | 169 | CODE | |
| LOW | .github/scripts/validate_backend_bench.py | 472 | CODE | |
| LOW | .github/scripts/validate_backend_bench.py | 567 | CODE | |
| LOW | .github/scripts/render_sdcpp_pr_body.py | 140 | CODE | |
| LOW | .github/scripts/update_llamacpp_architectures.py | 120 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/benchmark_large_request_memory.py | 4 | CODE | |
| LOW | tools/moonshine-server/main.py | 25 | CODE | |
| LOW | tools/moonshine-server/main.py | 27 | CODE | |
| LOW | tools/moonshine-server/main.py | 41 | CODE | |
| LOW | test/server_webapp.py | 17 | CODE | |
| LOW | test/server_webapp.py | 18 | CODE | |
| LOW | test/server_webapp.py | 19 | CODE | |
| LOW | test/validate_sdcpp.py | 11 | CODE | |
| LOW | test/server_pinning.py | 6 | CODE | |
| LOW | test/test_benchmark_large_request_memory.py | 4 | CODE | |
| LOW | test/server_gfx_topology.py | 29 | CODE | |
| LOW | test/test_ollama.py | 16 | CODE | |
| LOW | test/test_ollama.py | 30 | CODE | |
| LOW | test/server_tts.py | 11 | CODE | |
| LOW | test/server_tts.py | 18 | CODE | |
| LOW | test/server_llm.py | 30 | CODE | |
| LOW | test/server_llm.py | 30 | CODE | |
| LOW | test/server_llm.py | 30 | CODE | |
| LOW | test/server_llm.py | 38 | CODE | |
| LOW | test/server_llm.py | 38 | CODE | |
| LOW | test/server_llm.py | 44 | CODE | |
| LOW | test/server_llm.py | 44 | CODE | |
| LOW | test/server_llm.py | 44 | CODE | |
| LOW | test/server_endpoints.py | 38 | CODE | |
| LOW | test/server_endpoints.py | 45 | CODE | |
| LOW | test/server_moonshine.py | 16 | CODE | |
| LOW | test/server_moonshine.py | 18 | CODE | |
| LOW | test/server_thenoise.py | 30 | CODE | |
| LOW | test/server_omni.py | 32 | CODE | |
| LOW | test/server_omni.py | 32 | CODE | |
| LOW | test/server_omni.py | 43 | CODE | |
| LOW | test/server_sd.py | 24 | CODE | |
| LOW | test/test_glibc_allocator_policy.py | 4 | CODE | |
| LOW | test/server_cancellation.py | 24 | CODE | |
| LOW | test/server_downloads.py | 18 | CODE | |
| LOW | test/test_comment_slop.py | 4 | CODE | |
| LOW | test/utils/server_base.py | 36 | CODE | |
| LOW | test/utils/server_base.py | 36 | CODE | |
| LOW | examples/api_image_edits.py | 21 | CODE | |
| LOW | examples/api_text_to_speech.py | 14 | CODE | |
| LOW | examples/api_text_to_speech.py | 16 | CODE | |
| LOW | examples/realtime_transcription.py | 49 | CODE | |
| LOW | examples/api_image_variations.py | 22 | CODE | |
| LOW | .github/scripts/validate_backend_bench.py | 18 | CODE | |
| LOW | .github/scripts/render_sdcpp_pr_body.py | 10 | CODE | |
| LOW | .github/scripts/update_sdcpp_versions.py | 10 | CODE | |
| LOW | .github/scripts/update_llamacpp_architectures.py | 4 | CODE | |
| LOW | src/cpp/installer/generate_tauri_fragment.py | 16 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | test/server_router.py | 166 | # Small embedding model that backs the semantic_similarity classifier. | COMMENT |
| MEDIUM | docs/guide/configuration/custom-models.md | 672 | ### Example 3: Adding an embedding model | COMMENT |
| MEDIUM | docs/integrations/langchain.md | 72 | ## Example 2 — RAG Pipeline (Chat with Your Documents) | COMMENT |
| MEDIUM | docs/integrations/langchain.md | 107 | # Requires the embedding model to be pulled first: | COMMENT |
| MEDIUM⚡ | docs/integrations/langchain.md | 129 | # ── Build RAG chain ────────────────────────────────────── | COMMENT |
| MEDIUM | docs/integrations/anythingLLM.md | 80 | You can always use the built in no-code [Agent Flow builder](https://docs.anythingllm.com/agent-flows/overview), [create | CODE |
| MEDIUM | docs/integrations/anythingLLM.md | 100 | <img src="https://github.com/lemonade-sdk/assets/blob/main/anythingllm/tool-calling.png?raw=true" alt="Complex multi-s | CODE |
| MEDIUM | docs/news/muse-glimmer.html | 476 | <p class="mg-lede">Meta Superintelligence Labs released <a href="https://huggingface.co/meta-models/Muse-Glimm | CODE |
| MEDIUM | docs/dev/app.md | 44 | │ ├── App.tsx # Root component, layout orchestration | CODE |
| MEDIUM | docs/assets/news-data.js | 212 | url: "https://styrk.ai/styrk-ai-and-amd-guardrails-for-your-on-device-ai-revolution/", | CODE |
| MEDIUM | .github/workflows/routing_schema_tests.yml | 27 | # policy/decision schemas. Keeps the back-compat guardrails enforced. | COMMENT |
| MEDIUM | src/app/src/renderer/ChatWindow.tsx | 117 | // to a component. The agentic tool loop is a collection.omni feature; running | COMMENT |
| MEDIUM | src/app/src/renderer/utils/chatTypes.ts | 29 | // Wire protocol types for tool-calling agentic loop | COMMENT |
| MEDIUM | src/app/src/renderer/components/panels/LLMChatPanel.tsx | 1174 | // Assistant-generated TTS audio (from the collection agentic loop) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/server_log_rotation.py | 81 | # Step 1: Pre-exist 1.2MB file and launch instance 1 -> rotates to .1 | COMMENT |
| LOW⚡ | test/server_log_rotation.py | 113 | # Step 2: Pre-exist 1.2MB file and launch instance 2 -> shifts .1 to .2, creates new .1 | COMMENT |
| LOW⚡ | test/server_log_rotation.py | 122 | # Step 3: Pre-exist 1.2MB file and launch instance 3 -> shifts .1->.2, prunes .3 | COMMENT |
| LOW | test/cpp/test_config_migration.cpp | 329 | // Step 1: merge with fresh defaults | COMMENT |
| LOW | test/cpp/test_config_merging.cpp | 433 | // Step 1: User previously configured custom port 9000 and custom backend vulkan | COMMENT |
| LOW | test/cpp/test_config_merging.cpp | 444 | // Step 2: User resets port back to default 13305 via handle_config_set workflow | COMMENT |
| LOW⚡ | test/cpp/test_config_merging.cpp | 455 | // Step 3: User resets backend back to "auto" | COMMENT |
| LOW⚡ | test/cpp/test_config_merging.cpp | 464 | // Step 4: load() still returns full defaults seamlessly | COMMENT |
| LOW | src/app/src/renderer/utils/backendInstaller.ts | 776 | // Step 1: Check if model is already loaded via health endpoint | COMMENT |
| LOW⚡ | src/app/src/renderer/utils/backendInstaller.ts | 802 | // Step 2: Signal UI that model loading is in progress | COMMENT |
| LOW⚡ | src/app/src/renderer/utils/backendInstaller.ts | 805 | // Step 3: Ensure backend is installed (fetch fresh system info to avoid stale closure) | COMMENT |
| LOW | src/app/src/renderer/utils/backendInstaller.ts | 855 | // Step 4: Check if model is downloaded | COMMENT |
| LOW⚡ | src/app/src/renderer/utils/backendInstaller.ts | 872 | // Step 5: Pull model if not downloaded (shows in Download Manager) | COMMENT |
| LOW⚡ | src/app/src/renderer/utils/backendInstaller.ts | 877 | // Step 6: Load model into memory (merge loadBody if provided) | COMMENT |
| LOW | src/cpp/server/model_manager.cpp | 3125 | // Step 1: Load ALL models from JSON (server models) | COMMENT |
| LOW⚡ | src/cpp/server/model_manager.cpp | 3382 | // Step 2: Filter by backend availability. This is the full-registry pass, so | COMMENT |
| LOW⚡ | src/cpp/server/model_manager.cpp | 3387 | // Step 3: Check download status for all models. Dynamic-discovery backends | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | docs/guide/cli.md | 99 | export LEMONADE_API_KEY=your-api-key-here | CODE |
| HIGH⚡ | docs/guide/cli.md | 107 | set LEMONADE_API_KEY=your-api-key-here | CODE |
| HIGH⚡ | docs/guide/cli.md | 115 | $env:LEMONADE_API_KEY="your-api-key-here" | CODE |
| HIGH | docs/guide/telemetry.md | 159 | telemetry.otlp.headers='{"x-honeycomb-team": "YOUR_API_KEY"}' | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | setup.sh | 30 | # Check if command exists | COMMENT |
| LOW⚡ | setup.sh | 35 | # Check if system is managed by rpm-ostree | COMMENT |
| LOW⚡ | setup.sh | 40 | # Check if running as root | COMMENT |
| LOW | setup.sh | 615 | # Check if running in CI environment | COMMENT |
| LOW | setup.sh | 634 | # Check if pre-commit needs pip | COMMENT |
| LOW⚡ | test/server_cli2.py | 668 | # Set host to 0.0.0.0 (listen on all interfaces). | COMMENT |
| LOW | docs/update_readme_marketplace.py | 84 | # Check if markers exist | COMMENT |
| LOW | examples/migrate-to-systemd.sh | 11 | # Check if running as root | COMMENT |
| LOW | examples/migrate-to-systemd.sh | 43 | # Check if lemonade user exists | COMMENT |
| LOW | examples/migrate-to-systemd.sh | 140 | # Check if destination already exists | COMMENT |
| LOW | .github/workflows/validate_llamacpp.yml | 1105 | # Check if a PR already exists for this update | COMMENT |
| LOW | .github/actions/cleanup-processes-linux/action.yml | 24 | # Check if the process matches lemond, lemonade, or llama-server | COMMENT |
| LOW | .github/actions/install-lemonade-server-msi/action.yml | 118 | # Check if installation directory exists | COMMENT |
| LOW | .github/actions/cleanup-ci-paths-linux/action.yml | 36 | # Check if path is under expected root | COMMENT |
| LOW | .github/actions/cleanup-ci-paths-linux/action.yml | 53 | # Check if full_path starts with full_root | COMMENT |
| LOW | .github/actions/build-macos-dmg/action.yml | 87 | # Check if binaries are signed (non-fatal) | COMMENT |
| LOW | .github/actions/setup-python/action.yml | 43 | # Check if already installed | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | test/server_moonshine.py | 335 | # Create an invalid WAV file (just some text content) using NamedTemporaryFile | COMMENT |
| MEDIUM | examples/api_image_edits.py | 32 | # Create a 512x512 white image with a simple shape | COMMENT |
| MEDIUM | examples/api_image_variations.py | 33 | # Create a 512x512 image with a simple pattern | COMMENT |
| MEDIUM | .github/actions/setup-venv/action.yml | 113 | # Create the venv using the explicit Python path | COMMENT |
| MEDIUM | .github/actions/setup-venv/action.yml | 165 | # Create the venv using the explicit Python path | COMMENT |
| MEDIUM | .github/actions/setup-macos-keychain/action.yml | 34 | # Create a temporary keychain | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | test/server_watchdog_lifecycle.py | 59 | # Make the file usable under pytest too. The existing test harness calls | COMMENT |
| MEDIUM | docs/index.html | 755 | // Duplicate for seamless loop | COMMENT |
| MEDIUM | .github/actions/install-lemonade-deb/action.yml | 136 | # an in-use port. The resolved port is exported so the test harness | COMMENT |
| LOW | src/app/src/renderer/utils/toolDefinitions.json | 139 | "description": "Transcribe audio to text (speech-to-text). Use this when the user provides an audio file or when | CODE |
| MEDIUM | src/cpp/server/model_manager.cpp | 469 | // TODO: A more robust approach would be to extend cleanup_orphaned_cache() | COMMENT |
| MEDIUM | src/cpp/server/model_manager.cpp | 5501 | // Download each file with robust retry and resume support | COMMENT |
| MEDIUM | src/cpp/cli/main.cpp | 742 | // This preserves existing user configuration while providing seamless first-time UX. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/server_endpoints.py | 2202 | "api_key": "dummy-key", | CODE |
| LOW | test/server_endpoints.py | 2651 | "api_key": "dummy-key", | CODE |
| LOW | test/server_endpoints.py | 2665 | "api_key": "dummy-key", | CODE |
| LOW | test/server_endpoints.py | 2699 | json={"provider": provider, "api_key": "dummy-key"}, | CODE |
| LOW | test/server_endpoints.py | 2710 | "api_key": "dummy-key", | CODE |
| LOW | test/server_endpoints.py | 2833 | f"LEMONADE_{provider.upper()}_API_KEY": "dummy-key", | CODE |
| LOW | test/server_endpoints.py | 5202 | "api_key": "dummy-key", | CODE |
| LOW | test/server_endpoints.py | 5638 | "api_key": "dummy-key", | CODE |
| LOW | test/server_router.py | 573 | "api_key": "dummy-key", | CODE |
| LOW | test/server_router.py | 700 | "api_key": "dummy-key", | CODE |
| LOW | test/server_router.py | 818 | "api_key": "dummy-key", | CODE |
| LOW | test/server_router.py | 1030 | "api_key": "dummy-key", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/server_gfx_topology.py | 101 | CODE | |
| LOW | test/utils/server_base.py | 215 | CODE | |
| LOW | test/utils/server_base.py | 276 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/utils/server_base.py | 671 | __all__ = [ | CODE |