Turn your PC, Mac, or Linux box into an AI server. LLM inference, chat UI, voice, agents, workflows, RAG, and image generation.
This report presents the forensic synthetic code analysis of Osmantic/ODS, a Shell project with 3,068 GitHub stars. SynthScan v2.0 examined 207,551 lines of code across 999 source files, recording 3402 pattern matches distributed across 21 syntactic categories. The overall adjusted score of 33.8 places this repository in the Strong 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).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
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 3402 distinct pattern matches across 21 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 |
|---|---|---|---|---|
| MEDIUM⚡ | ods/test-stack.sh | 2 | #============================================================================= | COMMENT |
| MEDIUM⚡ | ods/test-stack.sh | 18 | #============================================================================= | COMMENT |
| MEDIUM⚡ | ods/test-stack.sh | 110 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | ods/test-stack.sh | 112 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | ods/test-stack.sh | 120 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | ods/test-stack.sh | 122 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | ods/test-stack.sh | 128 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | ods/test-stack.sh | 130 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | ods/test-stack.sh | 157 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | ods/test-stack.sh | 160 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | ods/test-stack.sh | 169 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | ods/test-stack.sh | 171 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | ods/test-stack.sh | 199 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | ods/test-stack.sh | 201 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | ods/ods-update.sh | 629 | # ── Step 1: rollback snapshot ───────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | ods/ods-update.sh | 639 | # ── Step 2: pull latest changes ─────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | ods/ods-update.sh | 648 | # ── Step 3: migrations ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ods/ods-update.sh | 18 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 20 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 43 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 45 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 430 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 432 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 498 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 500 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 552 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 554 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 615 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 617 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 664 | # ── Step 4: restart services ────────────────────────────────────────────── | COMMENT |
| MEDIUM | ods/ods-update.sh | 689 | # ── Step 5: health-check with timeout ──────────────────────────────────── | COMMENT |
| MEDIUM | ods/ods-update.sh | 697 | # ── Step 6: record new version ──────────────────────────────────────────── | COMMENT |
| MEDIUM | ods/ods-update.sh | 713 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 715 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 812 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 814 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 844 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 846 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 937 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 939 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 985 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 987 | #============================================================================== | COMMENT |
| MEDIUM | ods/install-core.sh | 2 | # ============================================================================ | COMMENT |
| MEDIUM | ods/install-core.sh | 4 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | ods/install-core.sh | 15 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | ods/install-core.sh | 19 | #============================================================================= | COMMENT |
| MEDIUM⚡ | ods/install-core.sh | 21 | #============================================================================= | COMMENT |
| MEDIUM | ods/install-core.sh | 40 | #============================================================================= | COMMENT |
| MEDIUM | ods/install-core.sh | 42 | #============================================================================= | COMMENT |
| MEDIUM | ods/install-core.sh | 63 | #============================================================================= | COMMENT |
| MEDIUM | ods/install-core.sh | 65 | #============================================================================= | COMMENT |
| MEDIUM | ods/install-core.sh | 90 | #============================================================================= | COMMENT |
| MEDIUM | ods/install-core.sh | 92 | #============================================================================= | COMMENT |
| MEDIUM⚡ | ods/install-core.sh | 299 | #============================================================================= | COMMENT |
| MEDIUM⚡ | ods/install-core.sh | 301 | #============================================================================= | COMMENT |
| MEDIUM⚡ | ods/install-core.sh | 307 | #============================================================================= | COMMENT |
| MEDIUM⚡ | ods/install-core.sh | 309 | #============================================================================= | COMMENT |
| MEDIUM⚡ | ods/docker-compose.base.yml | 9 | # ============================================ | COMMENT |
| MEDIUM⚡ | ods/docker-compose.base.yml | 11 | # ============================================ | COMMENT |
| MEDIUM⚡ | ods/docker-compose.base.yml | 19 | # ============================================ | COMMENT |
| 1258 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ods/bin/ods-host-agent.py | 118 | def _ensure_windows_resolver_pyyaml(python_cmd: str) -> None: | CODE |
| LOW | ods/bin/ods-host-agent.py | 249 | def _detect_docker_network_gateway(network_name: str) -> str: | CODE |
| LOW | ods/bin/ods-host-agent.py | 283 | def _detect_docker_bridge_gateway() -> str: | CODE |
| LOW | ods/bin/ods-host-agent.py | 533 | def validate_core_recreate_ids(service_ids: list[str]) -> tuple[bool, str]: | CODE |
| LOW | ods/bin/ods-host-agent.py | 567 | def _post_install_core_recreate(service_id: str) -> None: | CODE |
| LOW | ods/bin/ods-host-agent.py | 651 | def _local_model_name_from_gguf(gguf_file: str) -> str: | CODE |
| LOW | ods/bin/ods-host-agent.py | 656 | def _local_gguf_filename_from_id(model_id: str) -> str | None: | CODE |
| LOW | ods/bin/ods-host-agent.py | 669 | def _resolve_local_gguf_filename(model_id: str, models_dir: Path) -> str | None: | CODE |
| LOW | ods/bin/ods-host-agent.py | 1140 | def _service_has_docker_container(service_id: str) -> tuple[bool, str]: | CODE |
| LOW | ods/bin/ods-host-agent.py | 1189 | def _narrow_install_pull_flags(flags: list, service_id: str) -> list: | CODE |
| LOW | ods/bin/ods-host-agent.py | 1207 | def _narrowed_compose_set_resolves(narrowed_flags: list, service_id: str, | CODE |
| LOW | ods/bin/ods-host-agent.py | 1258 | def _fail_stale_update_status(data: dict) -> dict: | CODE |
| LOW | ods/bin/ods-host-agent.py | 1400 | def _write_tailscale_status_payload(self, payload: dict, source: str): | CODE |
| LOW | ods/bin/ods-host-agent.py | 1424 | def _find_native_tailscale_cli(self) -> str | None: | CODE |
| LOW | ods/bin/ods-host-agent.py | 1441 | def _try_native_tailscale_status(self) -> bool: | CODE |
| LOW | ods/bin/ods-host-agent.py | 1681 | def _handle_invalidate_compose_cache(self): | CODE |
| LOW | ods/bin/ods-host-agent.py | 1849 | def _handle_network_wifi_scan(self): | CODE |
| LOW | ods/bin/ods-host-agent.py | 1920 | def _handle_network_wifi_connect(self): | CODE |
| LOW | ods/bin/ods-host-agent.py | 1985 | def _handle_network_wifi_forget(self): | CODE |
| LOW | ods/bin/ods-host-agent.py | 2351 | def _handle_extension_compose_toggle(self, activate: bool): | CODE |
| LOW | ods/bin/ods-host-agent.py | 2409 | def _handle_extension_sync_config(self): | CODE |
| LOW | ods/bin/ods-host-agent.py | 3434 | def _handle_model_download_cancel(self): | CODE |
| LOW | ods/bin/ods-host-agent.py | 4033 | def _lemonade_completion_ready(host: str, port: str, gguf_file: str) -> bool: | CODE |
| LOW | ods/bin/ods-host-agent.py | 4057 | def _is_windows_host_lemonade(env: dict) -> bool: | CODE |
| LOW | ods/bin/ods-host-agent.py | 4069 | def _restart_windows_lemonade(env: dict): | CODE |
| LOW | ods/bin/ods-host-agent.py | 4328 | def _patch_hermes_model_config( | STRING |
| LOW | ods/bin/ods-host-agent.py | 4500 | def _launch_native_llama_server(env_path: Path, llama_bin: Path, llama_log: Path, pid_file: Path): | STRING |
| LOW | ods/bin/ods-host-agent.py | 4548 | def _compose_restart_llama_server(env: dict): | STRING |
| LOW | ods/bin/ods-mdns.py | 161 | def _direct_ports_lan_reachable(env: dict[str, str]) -> bool: | CODE |
| LOW | ods/tests/test-fedora-strix-compat.py | 49 | def test_amd_dockerfile_arg_scope() -> None: | CODE |
| LOW | ods/tests/test-fedora-strix-compat.py | 63 | def test_selinux_labels_on_relative_bind_mounts() -> None: | CODE |
| LOW | ods/tests/test-fedora-strix-compat.py | 83 | def test_ods_doctor_all_backend_wildcard() -> None: | CODE |
| LOW | ods/tests/test-fedora-strix-compat.py | 89 | def test_token_spy_key_wiring() -> None: | CODE |
| LOW⚡ | ods/tests/test-runtime-config-wiring.py | 16 | def test_linux_installer_uses_renderer_with_fallback() -> None: | CODE |
| LOW⚡ | ods/tests/test-runtime-config-wiring.py | 24 | def test_bootstrap_upgrade_uses_renderer_with_fallback() -> None: | CODE |
| LOW⚡ | ods/tests/test-runtime-config-wiring.py | 32 | def test_host_agent_uses_renderer_with_fallback() -> None: | CODE |
| LOW | ods/tests/test_todo_fixes.py | 30 | def test_vad_patch_single_line_transcribe_call() -> None: | CODE |
| LOW | ods/tests/test_todo_fixes.py | 43 | def test_vad_patch_multiline_transcribe_call() -> None: | CODE |
| LOW | ods/tests/test_todo_fixes.py | 60 | def test_vad_patch_is_idempotent_when_kwargs_already_exist() -> None: | CODE |
| LOW | ods/tests/test_todo_fixes.py | 72 | def test_vad_patch_uses_rightmost_paren_for_nested_single_line_call() -> None: | STRING |
| LOW⚡ | ods/tests/test-assign-gpus.py | 57 | def test_model_too_large_errors(self): | CODE |
| LOW⚡ | ods/tests/test-assign-gpus.py | 67 | def test_no_topology_analysis_needed(self): | CODE |
| LOW⚡ | ods/tests/test-assign-gpus.py | 81 | def test_omitting_llama_server_does_not_crash(self): | CODE |
| LOW⚡ | ods/tests/test-assign-gpus.py | 85 | def test_llama_server_assigned_even_when_omitted(self): | CODE |
| LOW⚡ | ods/tests/test-assign-gpus.py | 90 | def test_only_requested_services_plus_llama(self): | CODE |
| LOW⚡ | ods/tests/test-assign-gpus.py | 94 | def test_explicit_llama_server_unchanged(self): | CODE |
| LOW⚡ | ods/tests/test-assign-gpus.py | 107 | def test_model_fits_one_gpu_rank_first_takes_pair(self): | CODE |
| LOW⚡ | ods/tests/test-assign-gpus.py | 113 | def test_model_fits_one_gpu_strategy_colocated(self): | CODE |
| LOW⚡ | ods/tests/test-assign-gpus.py | 118 | def test_model_fits_one_gpu_services_share_last(self): | CODE |
| LOW⚡ | ods/tests/test-assign-gpus.py | 123 | def test_model_fits_one_gpu_pipeline(self): | CODE |
| LOW⚡ | ods/tests/test-assign-gpus.py | 131 | def test_model_needs_both_gpus_strategy_colocated(self): | CODE |
| LOW⚡ | ods/tests/test-assign-gpus.py | 135 | def test_model_needs_both_gpus_llama_gets_both(self): | CODE |
| LOW⚡ | ods/tests/test-assign-gpus.py | 139 | def test_model_needs_both_gpus_services_share_llamas_last(self): | CODE |
| LOW⚡ | ods/tests/test-assign-gpus.py | 144 | def test_model_needs_both_gpus_llama_pipeline(self): | CODE |
| LOW⚡ | ods/tests/test-assign-gpus.py | 212 | def test_model_fits_one_gpu_picks_phb_pair(self): | CODE |
| LOW⚡ | ods/tests/test-assign-gpus.py | 220 | def test_model_fits_one_gpu_colocated(self): | CODE |
| LOW⚡ | ods/tests/test-assign-gpus.py | 225 | def test_model_fits_one_gpu_pipeline(self): | CODE |
| LOW⚡ | ods/tests/test-assign-gpus.py | 232 | def test_model_fits_one_gpu_no_gpu_idle(self): | CODE |
| LOW⚡ | ods/tests/test-assign-gpus.py | 236 | def test_model_needs_two_gpus_colocated(self): | CODE |
| LOW⚡ | ods/tests/test-assign-gpus.py | 240 | def test_model_needs_two_gpus_picks_phb_pair(self): | CODE |
| 1191 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | ods/bin/ods-host-agent.py | 3836 | # Lemonade returns {"status":"ok","model_loaded":null} | COMMENT |
| HIGH | ods/bin/ods-host-agent.py | 4148 | $cacheBin = if ($userProfile) { Join-Path (Join-Path (Join-Path $userProfile ".cache") "lemonade") "bin" } else { $null | CODE |
| HIGH | ods/bin/ods-host-agent.py | 3993 | Lemonade returns {"status": "ok", "model_loaded": null} when healthy | STRING |
| HIGH⚡ | ods/tests/test-perplexica-entrypoint.py | 46 | sample = 'g.push({content:k,metadata:{url:a,title:j}})' | CODE |
| HIGH⚡ | ods/tests/test-perplexica-entrypoint.py | 53 | assert patched == 'g.push({content:k.slice(0,30000),metadata:{url:a,title:j}})' | CODE |
| HIGH | …xtensions/services/dashboard-api/routers/extensions.py | 493 | # `deploy: { resources: null }` or `resources: { reservations: null }` | COMMENT |
| HIGH | ods/extensions/services/dashboard-api/routers/talk.py | 571 | "status": "ok", "warning": null} | STRING |
| HIGH | …nsions/services/dashboard-api/tests/test_extensions.py | 2643 | ' "phase_label": "stale", "error": null,' | CODE |
| HIGH | …nsions/services/dashboard-api/tests/test_extensions.py | 2091 | """Strict regression for the audit-flagged bug: `deploy: { resources: null }`. | STRING |
| HIGH | …nsions/services/dashboard-api/tests/test_extensions.py | 2111 | """Defense-in-depth: `resources: { reservations: null }`. | STRING |
| HIGH | …ns/services/dashboard-api/tests/test_model_activate.py | 40 | body = '{"status": "ok", "model_loaded": null}' | CODE |
| HIGH⚡ | …ns/services/dashboard-api/tests/test_model_activate.py | 54 | """model_loaded=false is unusual but non-null, so should be True.""" | STRING |
| HIGH⚡ | …ns/services/dashboard-api/tests/test_model_activate.py | 59 | """model_loaded="" is non-null, so should be True.""" | STRING |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2067 | totalCost += d.total_cost || 0; | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2068 | totalInput += d.total_input_tokens || 0; | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2069 | totalOutput += d.total_output_tokens || 0; | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2070 | totalTurns += d.turns || 0; | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2071 | totalCacheRead += d.total_cache_read || 0; | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2072 | totalCacheWrite += d.total_cache_write || 0; | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2154 | { label: 'Input', data: sorted.map(u => u.input_tokens || 0), color: '#58a6ff' }, | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2155 | { label: 'Output', data: sorted.map(u => u.output_tokens || 0), color: '#f0883e' }, | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2156 | { label: 'Cache Read', data: sorted.map(u => u.cache_read_tokens || 0), color: '#3fb950' }, | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2157 | { label: 'Cache Write', data: sorted.map(u => u.cache_write_tokens || 0), color: '#da3633' }, | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2167 | cacheRead += (u.cache_read_tokens || 0); | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2168 | cacheWrite += (u.cache_write_tokens || 0); | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2169 | input += (u.input_tokens || 0); | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2170 | output += (u.output_tokens || 0); | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2172 | const total = cacheRead + cacheWrite + input + output || 1; | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2202 | const cost = u.estimated_cost_usd || 0; | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2205 | totalData.push({x: ts, y: runningTotal}); | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2206 | if (running[u.agent] !== undefined) { | CODE |
| HIGH | ods/extensions/services/token-spy/main.py | 1943 | let tokensChart = null, breakdownChart = null, costChart = null, historyChart = null, cumulativeChart = null; | CODE |
| HIGH | ods/extensions/services/token-spy/main.py | 1964 | window._scl = sessions.reduce((max, s) => Math.max(max, s.session_char_limit || 200000), 200000); | CODE |
| HIGH | ods/extensions/services/token-spy/main.py | 1989 | if (n == null) return '\\u2014'; | CODE |
| HIGH | ods/extensions/services/token-spy/main.py | 1996 | if (n == null) return '$0.00'; | CODE |
| HIGH | ods/extensions/services/token-spy/main.py | 2036 | const limit = s.session_char_limit || 200000; | CODE |
| HIGH | ods/extensions/services/token-spy/main.py | 2102 | points: agentData.map(u => ({x: parseTs(u.timestamp), y: u.estimated_cost_usd || 0})), | CODE |
| HIGH | ods/extensions/services/token-spy/main.py | 2126 | points: agentData.map(u => ({x: parseTs(u.timestamp), y: u.conversation_history_chars || 0})), | CODE |
| HIGH | ods/extensions/services/token-spy/main.py | 2138 | { value: window._scl || 200000, color: '#f0883e', label: fmt(window._scl || 200000) + ' (~' + fmt(Math.round((wind | CODE |
| HIGH | ods/extensions/services/token-spy/main.py | 2139 | { value: (window._scl || 200000) * 2.5, color: '#da3633', label: fmt((window._scl || 200000) * 2.5) + ' (~' + fmt( | CODE |
| HIGH | ods/extensions/services/token-spy/main.py | 2273 | window._scl = s.session_char_limit || 200000; | CODE |
| HIGH | ods/extensions/services/token-spy/main.py | 2300 | if (cfg.session_char_limit != null) { | CODE |
| HIGH | ods/extensions/services/token-spy/main.py | 2319 | if (!el) return null; | CODE |
| HIGH | ods/extensions/services/token-spy/main.py | 2329 | if (!h4 || h4.textContent === 'Global Defaults') return; | CODE |
| HIGH | ods/extensions/services/token-spy/main.py | 2355 | window._scl = body.session_char_limit || window._scl; | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ods/test-stack.sh | 1 | #!/bin/bash | COMMENT |
| LOW | ods/ods-update.sh | 1 | #!/bin/bash | COMMENT |
| LOW | ods/docker-compose.intel.yml | 1 | # ODS — Intel Arc GPU Overlay (SYCL backend) | COMMENT |
| LOW | ods/docker-compose.lemonade-external.yml | 1 | # ODS - external Lemonade SDK runtime overlay | COMMENT |
| LOW | ods/docker-compose.multigpu-amd.yml | 1 | # ODS — AMD Multi-GPU Overlay | COMMENT |
| LOW | ods/test-install.sh | 1 | #!/bin/bash | COMMENT |
| LOW | ods/install-core.sh | 1 | #!/bin/bash | COMMENT |
| LOW | ods/install-core.sh | 221 | --no-openclaw) ENABLE_OPENCLAW=false; OPENCLAW_EXPLICIT=true; shift ;; | COMMENT |
| LOW | ods/docker-compose.arc.yml | 1 | # ODS — Intel Arc GPU Overlay (oneAPI SYCL, build-from-source) | COMMENT |
| LOW | ods/docker-compose.base.yml | 101 | # links into the install. | COMMENT |
| LOW | ods/docker-compose.base.yml | 221 | # aligned with ods-proxy and ods-mdns so invite QR codes point at | COMMENT |
| LOW | ods/docker-compose.base.yml | 241 | # routing collapses our model id down to whatever's loaded). | COMMENT |
| LOW | ods/ods-uninstall.sh | 181 | systemctl --user disable --now "$unit" 2>/dev/null || true | COMMENT |
| LOW | ods/ods-uninstall.sh | 201 | # spawn the Metal binary directly and track it via a PID file. If the file | COMMENT |
| LOW | ods/ods-uninstall.sh | 281 | mkdir -p "$MODELS_BACKUP" | COMMENT |
| LOW | ods/bin/ods-host-agent.py | 1821 | _update_thread.start() | COMMENT |
| LOW | ods/bin/ods-host-agent.py | 2441 | return | COMMENT |
| LOW | ods/bin/ods-host-agent.py | 2941 | # compose so we don't refetch images for every other installed | COMMENT |
| LOW | ods/bin/ods-host-agent.py | 3601 | hermes_live_exists_for_context = hermes_live_config.exists() | COMMENT |
| LOW | ods/config/ape/policy.yaml | 1 | # APE Policy Configuration | COMMENT |
| LOW | ods/config/openclaw/inject-token.js | 1 | // Inject gateway auth token into Control UI so it auto-connects | COMMENT |
| LOW | ods/config/openclaw/inject-token.js | 41 | // ON, so device auth defaults to ON regardless of bind mode. Disabling it is an | COMMENT |
| LOW | ods/tests/test-service-registry.sh | 1 | #!/bin/bash | COMMENT |
| LOW | ods/tests/test-openclaw-device-auth-default.sh | 1 | #!/bin/bash | COMMENT |
| LOW | ods/tests/test-preflight.sh | 1 | #!/bin/bash | COMMENT |
| LOW | ods/tests/test-jetson-detection.sh | 1 | #!/bin/bash | COMMENT |
| LOW | ods/tests/test-doc-links.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | ods/tests/test-tier-map.sh | 1 | #!/bin/bash | COMMENT |
| LOW | ods/tests/test-extension-integration.sh | 1 | #!/bin/bash | COMMENT |
| LOW | ods/tests/test-openclaw-inject-token.sh | 1 | #!/bin/bash | COMMENT |
| LOW | ods/tests/test-hardware-compatibility.sh | 1 | #!/bin/bash | COMMENT |
| LOW | ods/tests/test-bind-address-sweep.sh | 1 | #!/bin/bash | COMMENT |
| LOW | ods/tests/test-validate-env.sh | 1 | #!/bin/bash | COMMENT |
| LOW | ods/tests/test-network-security.sh | 1 | #!/bin/bash | COMMENT |
| LOW | ods/tests/test-hooks.sh | 1 | #!/bin/bash | COMMENT |
| LOW | ods/tests/test-bootstrap-openclaw-compose-guard.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | ods/tests/test-bootstrap-openclaw-compose-guard.sh | 61 | echo ""; echo "Result: $PASSED passed, $FAILED failed"; exit 1 | COMMENT |
| LOW | ods/tests/test-fleet-multi-distro-keep-going.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | ods/tests/test-gpu-apple.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | ods/tests/test-ods-test.sh | 1 | #!/bin/bash | COMMENT |
| LOW | ods/tests/fleet-external-lemonade-e2e.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | ods/tests/test-multi-distro.sh | 1 | #!/bin/bash | COMMENT |
| LOW | ods/tests/test-ods-config-secret-mask.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | ods/tests/test-secret-security.sh | 1 | #!/bin/bash | COMMENT |
| LOW | ods/tests/test-macos-host-agent-verification.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | ods/tests/smoke/installer-env-smoke.sh | 1 | #!/bin/bash | COMMENT |
| LOW | ods/tests/contracts/test-ods-doctor.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | …tests/contracts/test-windows-hermes-config-patching.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | ods/tests/contracts/test-overlay-map-coherence.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | ods/tests/contracts/test-windows-lemonade-swap-wait.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | ods/tests/contracts/test-windows-lemonade-swap-wait.sh | 21 | # full model cannot be proven, it must restore the previous active config | COMMENT |
| LOW | ods/tests/reproducers/langfuse-uid-check.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | ods/docs/TAILSCALE.md | 61 | # 1. Generate an auth key. | COMMENT |
| LOW | ods/docs/TAILSCALE.md | 101 | # "hostname": "ods", | COMMENT |
| LOW | ods/docs/HERMES-SSO.md | 41 | # 3. Generate an owner card from the dashboard | COMMENT |
| LOW | ods/docs/HERMES.md | 141 | # 1. Pick a published upstream image tag. | COMMENT |
| LOW | ods/extensions/library/templates/compose-gpu-swap.yaml | 1 | # ============================================================================= | COMMENT |
| LOW | ods/extensions/library/templates/compose-gpu-swap.yaml | 21 | # extensions/services/my-service/ | COMMENT |
| LOW | ods/extensions/library/templates/compose-gpu-swap.yaml | 61 | # compose.amd.yaml — AMD ROCm overlay (same file, different name) | COMMENT |
| LOW | ods/extensions/library/templates/compose-gpu-swap.yaml | 81 | # # The container user must belong to the video and render groups on the host. | COMMENT |
| 149 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | ods/bin/ods-host-agent.py | 2930 | # Step 1: Setup hook (if requested). The helper is a no-op | COMMENT |
| LOW⚡ | ods/bin/ods-host-agent.py | 2939 | # Step 2: Pull (best-effort — failure is non-fatal if cached image exists). | COMMENT |
| LOW⚡ | ods/bin/ods-host-agent.py | 3045 | # Step 4: Success | COMMENT |
| LOW⚡ | ods/bin/ods-host-agent.py | 3048 | # Step 5: Post-install core recreate (best-effort, non-fatal). | COMMENT |
| LOW | ods/bin/ods-host-agent.py | 2011 | # Step 1: resolve and verify this is a Wi-Fi profile. Use -t for | COMMENT |
| LOW | ods/bin/ods-host-agent.py | 2051 | # Step 2: type-confirmed Wi-Fi → safe to delete. | COMMENT |
| LOW | ods/bin/ods-host-agent.py | 2977 | # Step 3: Start | COMMENT |
| LOW | ods/docs/EXTENSIONS.md | 45 | ### Step 1: Create the extension directory | COMMENT |
| LOW | ods/docs/EXTENSIONS.md | 55 | ### Step 2: Create the manifest | COMMENT |
| LOW | ods/docs/EXTENSIONS.md | 68 | ### Step 3: Create the compose fragment | COMMENT |
| LOW | ods/docs/EXTENSIONS.md | 95 | ### Step 4: Validate | COMMENT |
| LOW | ods/docs/EXTENSIONS.md | 114 | ### Step 5: Test it | COMMENT |
| LOW | ods/docs/WINDOWS-INSTALL-WALKTHROUGH.md | 21 | ## Step 1: Enable WSL2 | COMMENT |
| LOW | ods/docs/WINDOWS-INSTALL-WALKTHROUGH.md | 41 | ## Step 2: Install GPU Drivers | COMMENT |
| LOW | ods/docs/WINDOWS-INSTALL-WALKTHROUGH.md | 61 | ## Step 3: Install Docker Desktop | COMMENT |
| LOW | ods/docs/WINDOWS-INSTALL-WALKTHROUGH.md | 79 | ## Step 4: Run ODS Installer | COMMENT |
| LOW | ods/docs/WINDOWS-INSTALL-WALKTHROUGH.md | 170 | ## Step 5: Verify Installation | COMMENT |
| LOW | ods/docs/WINDOWS-INSTALL-WALKTHROUGH.md | 201 | ## Step 6: Run Diagnostics | COMMENT |
| LOW | ods/docs/WINDOWS-WSL2-GPU-GUIDE.md | 45 | ### Step 1: Enable WSL2 | COMMENT |
| LOW⚡ | ods/docs/WINDOWS-WSL2-GPU-GUIDE.md | 60 | ### Step 2: Install Docker Desktop | COMMENT |
| LOW⚡ | ods/docs/WINDOWS-WSL2-GPU-GUIDE.md | 68 | ### Step 3: Install NVIDIA Drivers | COMMENT |
| LOW⚡ | ods/docs/WINDOWS-WSL2-GPU-GUIDE.md | 78 | ### Step 4: Run ODS Installer | COMMENT |
| LOW | ods/docs/WINDOWS-TROUBLESHOOTING-GUIDE.md | 103 | ### Step 1: Check Your Windows Version | COMMENT |
| LOW | ods/docs/WINDOWS-TROUBLESHOOTING-GUIDE.md | 113 | ### Step 2: Install WSL2 (Windows Subsystem for Linux) | COMMENT |
| LOW | ods/docs/WINDOWS-TROUBLESHOOTING-GUIDE.md | 131 | ### Step 3: Install Docker Desktop | COMMENT |
| LOW | ods/docs/WINDOWS-TROUBLESHOOTING-GUIDE.md | 145 | ### Step 4: Install NVIDIA Drivers | COMMENT |
| LOW | ods/docs/WINDOWS-TROUBLESHOOTING-GUIDE.md | 157 | ### Step 5: Run ODS Installer | COMMENT |
| LOW | ods/docs/WINDOWS-TROUBLESHOOTING-GUIDE.md | 175 | ### Step 6: Wait for Model Download | COMMENT |
| LOW | ods/docs/WINDOWS-TROUBLESHOOTING-GUIDE.md | 191 | ### Step 7: Access Your AI | COMMENT |
| LOW | …ashboard/src/components/__tests__/SetupWizard.test.jsx | 79 | // Step 4: type a name so Next becomes enabled | COMMENT |
| LOW | …/extensions/services/dashboard/src/pages/FirstBoot.jsx | 302 | // Step 1 - Welcome / setup label | COMMENT |
| LOW | …/extensions/services/dashboard/src/pages/FirstBoot.jsx | 351 | // Step 2 - First user | COMMENT |
| LOW | …/extensions/services/dashboard/src/pages/FirstBoot.jsx | 407 | // Step 3 - Stack picker | COMMENT |
| LOW | …/extensions/services/dashboard/src/pages/FirstBoot.jsx | 472 | // Step 4 - Confirm & finish | COMMENT |
| LOW⚡ | ods/extensions/services/token-spy/filters.py | 228 | # Step 1: Separate system messages from conversation messages | COMMENT |
| LOW⚡ | ods/extensions/services/token-spy/filters.py | 237 | # Step 2: Group conversation messages into atomic units | COMMENT |
| LOW⚡ | ods/extensions/services/token-spy/filters.py | 242 | # Step 3: Apply max_pairs — keep only the N most recent units | COMMENT |
| LOW⚡ | ods/extensions/services/token-spy/filters.py | 249 | # Step 4: Drop old tool calls from older units | COMMENT |
| LOW⚡ | ods/extensions/services/token-spy/filters.py | 281 | # Step 6: Flatten units back into message list | COMMENT |
| LOW⚡ | ods/extensions/services/token-spy/filters.py | 286 | # Step 7: Apply always_keep_last_n safety — ensure the last N raw messages | COMMENT |
| LOW | ods/extensions/services/token-spy/filters.py | 268 | # Step 5: Truncate tool result content in all kept messages | COMMENT |
| LOW | ods/extensions/services/token-spy/filters.py | 301 | # Step 8: Apply max_total_chars if set | COMMENT |
| LOW⚡ | ods/installers/macos/install-macos.sh | 2047 | # Step 2: skip if already cached. | COMMENT |
| LOW⚡ | ods/installers/macos/install-macos.sh | 2051 | # Step 3: POST to trigger download. | COMMENT |
| LOW⚡ | ods/installers/macos/install-macos.sh | 2061 | # Step 4: verify the model is actually cached. | COMMENT |
| LOW | ods/installers/macos/install-macos.sh | 2034 | # Step 1: wait briefly for the models API to be ready (max 15s). | COMMENT |
| LOW⚡ | ods/installers/lib/detection.sh | 618 | # Step 1: Is there even NVIDIA hardware on this machine? | COMMENT |
| LOW⚡ | ods/installers/lib/detection.sh | 625 | # Step 2: Ensure a driver package is installed | COMMENT |
| LOW | ods/installers/lib/detection.sh | 657 | # Step 3: Try loading the module — see why it fails | COMMENT |
| LOW⚡ | ods/installers/lib/detection.sh | 671 | # Step 4: If it's not a Secure Boot issue, bail out | COMMENT |
| LOW⚡ | ods/installers/lib/detection.sh | 677 | # Step 5: Secure Boot is blocking the module — ensure it's properly signed | COMMENT |
| LOW | ods/installers/lib/detection.sh | 749 | # Step 6: Try loading — if MOK key is already enrolled, this works immediately | COMMENT |
| LOW | ods/installers/lib/detection.sh | 760 | # Step 7: MOK key needs firmware enrollment — one reboot required | COMMENT |
| LOW⚡ | ods/installers/phases/11-services.sh | 955 | # Step 1: start any containers already in Created state | COMMENT |
| LOW⚡ | ods/installers/phases/11-services.sh | 957 | # Step 2: wait for services to stabilize, then compose pass | COMMENT |
| LOW⚡ | ods/installers/phases/11-services.sh | 960 | # Step 3: catch any stragglers from the second pass | COMMENT |
| LOW | ods/installers/phases/12-health.sh | 451 | # Step 1: wait briefly for the models API to be ready. Whisper's /health | COMMENT |
| LOW⚡ | ods/installers/phases/12-health.sh | 466 | # Step 2: skip download if already cached. | COMMENT |
| LOW⚡ | ods/installers/phases/12-health.sh | 470 | # Step 3: POST to trigger download. Log stdout/stderr to install log. | COMMENT |
| LOW⚡ | ods/installers/phases/12-health.sh | 480 | # Step 4: verify the model is actually cached. POST can return 200 | COMMENT |
| 18 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ods/bin/ods-host-agent.py | 870 | def _thread_target() -> None: | CODE |
| MEDIUM | ods/bin/ods-host-agent.py | 1723 | def _handle_update_check(self): | CODE |
| MEDIUM | ods/bin/ods-host-agent.py | 2726 | def restart_container_later(): | CODE |
| LOW⚡ | ods/bin/ods-host-agent.py | 3054 | except Exception: | CODE |
| LOW | ods/bin/ods-host-agent.py | 881 | except Exception: | CODE |
| LOW | ods/bin/ods-host-agent.py | 890 | except Exception: | CODE |
| LOW | ods/bin/ods-host-agent.py | 1633 | except Exception as exc: | CODE |
| LOW | ods/bin/ods-host-agent.py | 1812 | except Exception as exc: | CODE |
| LOW | ods/bin/ods-host-agent.py | 2614 | except Exception as exc: | CODE |
| LOW | ods/bin/ods-host-agent.py | 2667 | except Exception as exc: | CODE |
| LOW | ods/bin/ods-host-agent.py | 2737 | except Exception as exc: | CODE |
| LOW | ods/bin/ods-host-agent.py | 2757 | except Exception as exc: | CODE |
| LOW | ods/bin/ods-host-agent.py | 3073 | except Exception: | CODE |
| LOW | ods/bin/ods-host-agent.py | 3122 | except Exception as exc: | CODE |
| LOW | ods/bin/ods-host-agent.py | 3425 | except Exception as exc: | CODE |
| LOW | ods/bin/ods-host-agent.py | 3926 | except Exception as exc: | CODE |
| LOW | ods/tests/test-service-registry.sh | 203 | except Exception: | CODE |
| LOW | ods/tests/test-openclaw-device-auth-default.sh | 54 | except Exception: print("__MISSING__") | CODE |
| LOW | ods/tests/test-templates.sh | 88 | except Exception: | CODE |
| LOW | ods/tests/dashboard-load-test.py | 62 | except Exception as e: | CODE |
| LOW | ods/tests/dashboard-load-test.py | 87 | except Exception as e: | CODE |
| LOW | ods/tests/validate-agent-templates.py | 139 | except Exception as exc: # noqa: BLE001 - diagnostic script should continue | CODE |
| LOW | ods/extensions/library/services/bark/server.py | 175 | except Exception as e: | CODE |
| LOW | ods/extensions/library/services/bark/server.py | 197 | except Exception as e: | CODE |
| LOW | ods/extensions/library/services/bark/test_server.py | 177 | except Exception as e: | CODE |
| LOW | ods/extensions/library/services/bark/test_server.py | 274 | except Exception as e: | CODE |
| MEDIUM | ods/extensions/library/services/bark/test_server.py | 173 | def make_request(): | CODE |
| MEDIUM | ods/extensions/library/services/bark/test_server.py | 270 | def load_and_check(): | CODE |
| LOW⚡ | ods/extensions/services/ape/main.py | 420 | except Exception: # pragma: no cover - best effort | CODE |
| LOW⚡ | ods/extensions/services/ape/main.py | 426 | except Exception as e: | CODE |
| LOW | ods/extensions/services/ape/main.py | 77 | except Exception: # pragma: no cover - platform dependent | CODE |
| LOW | ods/extensions/services/ape/main.py | 214 | except Exception as e: | CODE |
| LOW | ods/extensions/services/ape/main.py | 281 | except Exception: # pragma: no cover - non-serialisable args | CODE |
| LOW | ods/extensions/services/ape/main.py | 404 | except Exception as e: # corrupt / partial file → start clean, keep file | CODE |
| LOW | ods/extensions/services/ape/main.py | 705 | except Exception as e: | CODE |
| LOW | ods/extensions/services/ape/main.py | 1040 | except Exception as e: | CODE |
| LOW | ods/extensions/services/dashboard-api/hermes_bridge.py | 195 | except Exception: # pragma: no cover — best-effort cleanup | CODE |
| LOW | ods/extensions/services/dashboard-api/hermes_bridge.py | 199 | except Exception: # pragma: no cover | CODE |
| LOW | ods/extensions/services/dashboard-api/hermes_bridge.py | 215 | except Exception: | CODE |
| LOW | ods/extensions/services/dashboard-api/hermes_bridge.py | 220 | except Exception: | CODE |
| LOW | ods/extensions/services/dashboard-api/hermes_bridge.py | 287 | except Exception: # pragma: no cover — keep sweeper alive on bugs | CODE |
| LOW | ods/extensions/services/dashboard-api/main.py | 957 | except Exception: | CODE |
| LOW | ods/extensions/services/dashboard-api/main.py | 1614 | except Exception: | CODE |
| LOW | ods/extensions/services/dashboard-api/routers/voice.py | 31 | except Exception: | CODE |
| LOW | ods/extensions/services/dashboard-api/routers/voice.py | 43 | except Exception: | CODE |
| LOW | ods/extensions/services/dashboard-api/routers/setup.py | 179 | except Exception as exc: # noqa: BLE001 — sentinel contract requires *some* terminal signal | CODE |
| LOW | ods/extensions/services/dashboard-api/routers/gpu.py | 555 | except Exception: # Broad catch: background task must survive transient failures | CODE |
| LOW | ods/extensions/services/dashboard-api/routers/talk.py | 212 | except Exception: | CODE |
| LOW | …s/extensions/services/dashboard-api/routers/privacy.py | 76 | except Exception: | CODE |
| LOW | ods/extensions/services/token-spy/db_postgres.py | 137 | except Exception: | CODE |
| LOW | ods/extensions/services/token-spy/db_postgres.py | 210 | except Exception: | CODE |
| LOW⚡ | ods/extensions/services/token-spy/main.py | 1011 | except Exception as e: | CODE |
| LOW⚡ | ods/extensions/services/token-spy/main.py | 1020 | except Exception: | CODE |
| LOW⚡ | ods/extensions/services/token-spy/main.py | 1508 | except Exception as e: | CODE |
| LOW | ods/extensions/services/token-spy/main.py | 405 | except Exception as e: | CODE |
| LOW | ods/extensions/services/token-spy/main.py | 459 | except Exception as e: | CODE |
| LOW | ods/extensions/services/token-spy/main.py | 756 | except Exception as e: | CODE |
| LOW | ods/extensions/services/token-spy/main.py | 788 | except Exception as e: | CODE |
| LOW | ods/extensions/services/token-spy/main.py | 797 | except Exception: | CODE |
| LOW | ods/extensions/services/token-spy/main.py | 984 | except Exception as e: | CODE |
| 59 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ods/bin/ods-host-agent.py | 370 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 419 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 669 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 791 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 1045 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 4069 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 4600 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 1330 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 1636 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 1920 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 2071 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 2409 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 2903 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 3080 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 3139 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 3475 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 3934 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 2920 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 3246 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 3282 | CODE | |
| LOW | ods/tests/dashboard-load-test.py | 38 | CODE | |
| LOW | ods/tests/validate-agent-templates.py | 75 | CODE | |
| LOW | ods/tests/test_mdns_subdomains.py | 45 | CODE | |
| LOW | ods/tests/contracts/test-port-contracts.py | 55 | CODE | |
| LOW | ods/extensions/services/ape/main.py | 293 | CODE | |
| LOW | ods/extensions/services/ape/main.py | 409 | CODE | |
| LOW | ods/extensions/services/ape/main.py | 482 | CODE | |
| LOW | ods/extensions/services/ape/main.py | 790 | CODE | |
| LOW | ods/extensions/services/ape/main.py | 1011 | CODE | |
| LOW | ods/extensions/services/dashboard-api/hermes_bridge.py | 257 | CODE | |
| LOW | ods/extensions/services/dashboard-api/hermes_bridge.py | 321 | CODE | |
| LOW | ods/extensions/services/dashboard-api/config.py | 55 | CODE | |
| LOW | ods/extensions/services/dashboard-api/config.py | 316 | CODE | |
| LOW | ods/extensions/services/dashboard-api/config.py | 410 | CODE | |
| LOW | ods/extensions/services/dashboard-api/settings.py | 178 | CODE | |
| LOW | …xtensions/services/dashboard-api/performance_oracle.py | 866 | CODE | |
| LOW | ods/extensions/services/dashboard-api/gpu.py | 37 | CODE | |
| LOW | ods/extensions/services/dashboard-api/gpu.py | 144 | CODE | |
| LOW | ods/extensions/services/dashboard-api/gpu.py | 257 | CODE | |
| LOW | ods/extensions/services/dashboard-api/gpu.py | 487 | CODE | |
| LOW | ods/extensions/services/dashboard-api/gpu.py | 660 | CODE | |
| LOW | ods/extensions/services/dashboard-api/main.py | 137 | CODE | |
| LOW | ods/extensions/services/dashboard-api/main.py | 268 | CODE | |
| LOW | ods/extensions/services/dashboard-api/main.py | 427 | CODE | |
| LOW | ods/extensions/services/dashboard-api/main.py | 591 | CODE | |
| LOW | ods/extensions/services/dashboard-api/main.py | 1368 | CODE | |
| LOW | ods/extensions/services/dashboard-api/main.py | 1370 | CODE | |
| LOW | ods/extensions/services/dashboard-api/helpers.py | 564 | CODE | |
| LOW | ods/extensions/services/dashboard-api/helpers.py | 610 | CODE | |
| LOW | ods/extensions/services/dashboard-api/helpers.py | 676 | CODE | |
| LOW | ods/extensions/services/dashboard-api/helpers.py | 748 | CODE | |
| LOW | ods/extensions/services/dashboard-api/helpers.py | 776 | CODE | |
| LOW | ods/extensions/services/dashboard-api/helpers.py | 847 | CODE | |
| LOW | ods/extensions/services/dashboard-api/helpers.py | 880 | CODE | |
| LOW | …s/extensions/services/dashboard-api/user_extensions.py | 19 | CODE | |
| LOW | ods/extensions/services/dashboard-api/routers/models.py | 81 | CODE | |
| LOW | ods/extensions/services/dashboard-api/routers/models.py | 413 | CODE | |
| LOW | ods/extensions/services/dashboard-api/routers/models.py | 514 | CODE | |
| LOW | …s/extensions/services/dashboard-api/routers/updates.py | 38 | CODE | |
| LOW | …s/extensions/services/dashboard-api/routers/updates.py | 273 | CODE | |
| 52 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ARCHITECTURE.md | 144 | ### 5. RAG Pipeline | COMMENT |
| MEDIUM | CONTRIBUTORS.md | 36 | * [Tony363 (Tony Siu)](https://github.com/Tony363) — Raised dashboard-api test coverage to 95% with 3,500+ lines of te | COMMENT |
| MEDIUM | ods/config/n8n/06-rag-demo.json | 14 | "content": "## RAG Demo\n\nThis is a template workflow for retrieval-augmented generation.\n\nCustomize the node | CODE |
| MEDIUM | ods/config/n8n/rag-pipeline-trigger.json | 14 | "content": "## RAG Pipeline Trigger\n\nThis is a template workflow for ingesting documents from a watched folder | CODE |
| MEDIUM | ods/tests/test-phase-c-p1.sh | 94 | # Test RAG test endpoint | COMMENT |
| MEDIUM | ods/tests/contracts/test-installer-contracts.sh | 179 | # RAG = qdrant (vector store) + embeddings (TEI). Both default from | COMMENT |
| MEDIUM | ods/docs/PLATFORM-TRUTH-TABLE.md | 20 | ## Release language guardrails | COMMENT |
| MEDIUM | ods/docs/M1-OFFLINE-MODE.md | 60 | # Test local embeddings/RAG if enabled. | COMMENT |
| MEDIUM | ods/docs/M1-OFFLINE-MODE.md | 104 | ### Option 2: Configure Legacy OpenClaw for Local RAG | COMMENT |
| MEDIUM | ods/docs/INTEGRATION-GUIDE.md | 89 | ### With RAG (Qdrant + Embeddings) | COMMENT |
| MEDIUM | ods/extensions/library/services/crewai/compose.yaml | 1 | # CrewAI Studio — no-code multi-agent UI (https://github.com/strnad/CrewAI-Studio) | COMMENT |
| MEDIUM | ods/scripts/showcase.sh | 174 | echo -e "${YELLOW}Qdrant not running. Enable with: docker compose ps qdrant # RAG services start with the stack | CODE |
| MEDIUM | ods/scripts/showcase.sh | 198 | # Simple RAG demo using direct LLM (without full workflow for CLI demo) | COMMENT |
| MEDIUM | ods/scripts/bootstrap-upgrade.sh | 1425 | # the 8k context window. OpenCode hits the same wall. | COMMENT |
| MEDIUM⚡ | ods/scripts/session-cleanup.sh | 11 | # The agent doesn't notice — it just gets a clean context window. | COMMENT |
| MEDIUM | ods/scripts/demo-offline.sh | 164 | # ── Demo 3: RAG ────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | ods/installers/macos/lib/tier-map.sh | 12 | # Each tier maps to a specific GGUF quantization and context window. | COMMENT |
| MEDIUM⚡ | ods/installers/macos/lib/tier-map.sh | 225 | # Hermes requires at least a 64K context window. Keep the fast-start model at | COMMENT |
| MEDIUM⚡ | ods/installers/lib/bootstrap-model.sh | 16 | # Hermes requires at least a 64K context window, so fast-start installs keep | COMMENT |
| MEDIUM⚡ | ods/installers/lib/tier-map.sh | 14 | # Each tier maps to a specific GGUF quantization and context window. | COMMENT |
| MEDIUM⚡ | ods/installers/phases/09-offline.sh | 45 | # Use local RAG instead of web search | COMMENT |
| MEDIUM | ods/installers/phases/09-offline.sh | 63 | # Use local RAG with Qdrant instead | COMMENT |
| MEDIUM | ods/installers/phases/03-features.sh | 172 | # RAG = qdrant (vector store) + embeddings (TEI). Both default from | COMMENT |
| MEDIUM | ods/installers/phases/07-devtools.sh | 120 | # ── OpenCode (local agentic coding platform) ── | COMMENT |
| MEDIUM | ods/installers/phases/12-health.sh | 300 | # Perplexica auto-config: seed chat model + embedding model on first boot. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | install.sh | 16 | # Check if ods directory exists | COMMENT |
| LOW | ods/ods-backup.sh | 687 | # Check if running in ODS directory | COMMENT |
| LOW | ods/ods-restore.sh | 633 | # Check if running in ODS directory | COMMENT |
| LOW | ods/ods-preflight.sh | 222 | # Check if container is running but model still loading | COMMENT |
| LOW | ods/tests/test-tts-full.sh | 27 | # Check if we got audio data (MP3 starts with ID3 or empty binary) | COMMENT |
| LOW | ods/tests/test-phase-c-p1.sh | 55 | # Check if values are hardcoded (static string detection) | COMMENT |
| LOW | ods/tests/test-phase-c-p1.sh | 131 | # Check if settings endpoint returns data | COMMENT |
| LOW | ods/tests/test-phase-c-p1.sh | 145 | # Check if voice agent service is running properly | COMMENT |
| LOW⚡ | ods/tests/test-hardware-compatibility.sh | 230 | # Check if installer validates disk space | COMMENT |
| LOW | ods/tests/test-network-security.sh | 107 | # Check if ports are bound to localhost only | COMMENT |
| LOW | ods/tests/test-network-security.sh | 113 | # Check if this is intentional (dashboard, API endpoints) | COMMENT |
| LOW | ods/tests/benchmark-status-performance.sh | 25 | # Check if ods-cli exists | COMMENT |
| LOW | ods/tests/test-network-timeouts.sh | 53 | # Check if timeout is present on the same line or nearby | COMMENT |
| LOW | ods/tests/test-network-timeouts.sh | 60 | # Check if timeout is on the same line (use grep -F for fixed string) | COMMENT |
| LOW | ods/tests/test-stt-full.sh | 18 | # Check if we can generate a simple test | COMMENT |
| LOW | ods/tests/test-secret-security.sh | 303 | # Check if there's allowlist validation to mitigate the risk | COMMENT |
| LOW | ods/tests/smoke/installer-env-smoke.sh | 337 | # Check if it's defined anywhere else | COMMENT |
| LOW | …xtensions/services/dashboard-api/routers/extensions.py | 1801 | # Check if service is still enabled (built-in or user extension) | COMMENT |
| LOW | …nsions/services/dashboard-api/tests/test_extensions.py | 3119 | # Set updated_at to far in the past (well over 1 hour) | COMMENT |
| LOW | ods/extensions/services/token-spy/db_postgres.py | 72 | # Check if tenant exists | COMMENT |
| LOW⚡ | ods/extensions/services/token-spy/main.py | 1511 | # Check if this agent needs an auto-reset | COMMENT |
| LOW⚡ | ods/extensions/services/token-spy/filters.py | 290 | # Check if tail messages are already in filtered_conv | COMMENT |
| LOW | ods/extensions/services/privacy-shield/pii_scrubber.py | 90 | # Check if we've seen this PII before | COMMENT |
| LOW | ods/extensions/services/whisper/docker-entrypoint.sh | 59 | # Check if VAD parameters already exist | COMMENT |
| LOW⚡ | ods/scripts/migrate-config.sh | 9 | # ./migrate-config.sh check # Check if migration needed | COMMENT |
| LOW | ods/scripts/migrate-config.sh | 166 | # Check if migration is needed | COMMENT |
| LOW | ods/scripts/migrate-config.sh | 242 | # Check if this migration is needed | COMMENT |
| LOW⚡ | ods/scripts/pre-download.sh | 194 | # Check if model is cached | COMMENT |
| LOW | ods/scripts/validate.sh | 123 | # Check if container is running | COMMENT |
| LOW | ods/scripts/ods-test-functional.sh | 114 | # Check if response contains "4" (the answer to 2+2) | COMMENT |
| LOW | ods/scripts/ods-test-functional.sh | 200 | # Check if response contains array of numbers | COMMENT |
| LOW | ods/scripts/session-cleanup.sh | 94 | # Check if this session is active | COMMENT |
| LOW | ods/scripts/validate-compose-stack.sh | 47 | # Check if docker/docker compose is available | COMMENT |
| LOW | ods/scripts/ods-doctor.sh | 221 | # Check if extension is enabled | COMMENT |
| LOW | ods/scripts/llm-cold-storage.sh | 55 | # Check if any running process references this model | COMMENT |
| LOW | ods/memory-shepherd/memory-shepherd.sh | 307 | # Check if the agent exists in config | COMMENT |
| LOW | ods/installers/macos/install-macos.sh | 1283 | # Check if process died | COMMENT |
| LOW | ods/installers/macos/install-macos.sh | 1402 | # Check if "apple" is not listed but service works on CPU | COMMENT |
| LOW | ods/installers/macos/lib/env-generator.sh | 700 | # Check if Perplexica is responding | COMMENT |
| LOW | ods/installers/macos/lib/env-generator.sh | 712 | # Check if already configured for this served model. | COMMENT |
| LOW | ods/installers/macos/lib/detection.sh | 103 | # Check if docker CLI is available | COMMENT |
| LOW | ods/installers/macos/lib/detection.sh | 127 | # Check if Docker daemon is responsive | COMMENT |
| LOW | ods/installers/lib/packaging.sh | 210 | # Check if a package is available in the repos | COMMENT |
| LOW | ods/installers/lib/background-tasks.sh | 85 | # Check if process is still running | COMMENT |
| LOW | ods/installers/lib/background-tasks.sh | 163 | # Check if still running | COMMENT |
| LOW | ods/installers/lib/path-utils.sh | 83 | # Check if path is empty | COMMENT |
| LOW | ods/installers/lib/path-utils.sh | 89 | # Check if parent directory exists and is writable | COMMENT |
| LOW | ods/installers/phases/13-summary.sh | 72 | # Check if any background tasks are registered | COMMENT |
| LOW | ods/installers/phases/11-services.sh | 439 | # Check if model exists and verify integrity | COMMENT |
| LOW | ods/installers/phases/02-detection.sh | 237 | # Check if upgrade succeeded | COMMENT |
| LOW | .github/workflows/autonomous-code-scanner.yml | 363 | # Check if budget exceeded | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ods/docker-compose.lemonade-external.yml | 7 | # This file is intentionally not standalone. It is selected by | COMMENT |
| MEDIUM | ods/config/litellm/lemonade.yaml | 6 | # This file is a template. The installer (06-directories.sh) generates | COMMENT |
| MEDIUM | ods/tests/benchmark-status-performance.sh | 35 | # Create a simple HTTP server that responds to health checks | COMMENT |
| MEDIUM⚡ | ods/tests/test-hooks.sh | 76 | # Create a test extension with both setup_hook and hooks.post_install | COMMENT |
| MEDIUM | ods/tests/test-restore-safety-ux.sh | 28 | # Create a minimal backup (manifest only, no data dirs) | COMMENT |
| MEDIUM | ods/tests/test-doctor-command.sh | 123 | # Create a mock report with failures | COMMENT |
| MEDIUM | ods/tests/test-backup-integrity.sh | 25 | # Create a minimal fake ODS directory with some data | COMMENT |
| MEDIUM | ods/tests/test-stt-full.sh | 14 | # Create a small test audio file (silence + tone) | COMMENT |
| MEDIUM | ods/tests/test-disk-space-preflight.sh | 37 | # Create a minimal fake ODS dir with some data so the estimated size is > ~0 | COMMENT |
| MEDIUM | ods/tests/test-disk-space-preflight.sh | 57 | # Create a minimal backup directory for restore size estimation | COMMENT |
| MEDIUM⚡ | ods/extensions/library/templates/compose-template.yaml | 5 | # This file is merged into the compose stack via: | COMMENT |
| MEDIUM⚡ | ods/extensions/templates/compose-template.yaml | 5 | # This file is merged into the compose stack via: | COMMENT |
| MEDIUM | …nsions/services/dashboard-api/tests/test_extensions.py | 421 | # Create a broken user extension directory (no compose.yaml or compose.yaml.disabled) | COMMENT |
| MEDIUM | …nsions/services/dashboard-api/tests/test_extensions.py | 2568 | # Create a real file and symlink compose.yaml to it | COMMENT |
| MEDIUM | …nsions/services/dashboard-api/tests/test_extensions.py | 2590 | # Create a real file and symlink the .disabled to it | COMMENT |
| MEDIUM | ods/extensions/services/dashboard/entrypoint.sh | 6 | # This file is generated by dashboard-api on first start. | COMMENT |
| MEDIUM | ods/extensions/services/token-spy/db_postgres.py | 83 | # Create the default tenant | COMMENT |
| MEDIUM | ods/scripts/ods-test-functional.sh | 218 | # Create a simple test audio file or use existing | COMMENT |
| MEDIUM | ods/lib/service-registry.sh | 85 | # Create the cache as a race-safe, private (mode 0600) temp file. Its | COMMENT |
| MEDIUM | ods/lib/python-cmd.sh | 5 | # This file is sourced by other scripts, so it must not change the caller's shell options. | COMMENT |
| MEDIUM | ods/installers/phases/04-requirements.sh | 296 | # This file is sourced by install-core.sh under `set -e`. Keep the phase's | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | ods/bin/ods-host-agent.py | 2930 | # Step 1: Setup hook (if requested). The helper is a no-op | COMMENT |
| LOW⚡ | ods/bin/ods-host-agent.py | 2939 | # Step 2: Pull (best-effort — failure is non-fatal if cached image exists). | COMMENT |
| LOW⚡ | ods/bin/ods-host-agent.py | 3045 | # Step 4: Success | COMMENT |
| LOW⚡ | ods/bin/ods-host-agent.py | 3048 | # Step 5: Post-install core recreate (best-effort, non-fatal). | COMMENT |
| LOW | ods/bin/ods-host-agent.py | 2011 | # Step 1: resolve and verify this is a Wi-Fi profile. Use -t for | COMMENT |
| LOW | ods/bin/ods-host-agent.py | 2051 | # Step 2: type-confirmed Wi-Fi → safe to delete. | COMMENT |
| LOW | ods/bin/ods-host-agent.py | 2977 | # Step 3: Start | COMMENT |
| LOW | …ashboard/src/components/__tests__/SetupWizard.test.jsx | 79 | // Step 4: type a name so Next becomes enabled | COMMENT |
| LOW⚡ | ods/extensions/services/token-spy/filters.py | 228 | # Step 1: Separate system messages from conversation messages | COMMENT |
| LOW⚡ | ods/extensions/services/token-spy/filters.py | 237 | # Step 2: Group conversation messages into atomic units | COMMENT |
| LOW⚡ | ods/extensions/services/token-spy/filters.py | 242 | # Step 3: Apply max_pairs — keep only the N most recent units | COMMENT |
| LOW⚡ | ods/extensions/services/token-spy/filters.py | 249 | # Step 4: Drop old tool calls from older units | COMMENT |
| LOW⚡ | ods/extensions/services/token-spy/filters.py | 281 | # Step 6: Flatten units back into message list | COMMENT |
| LOW⚡ | ods/extensions/services/token-spy/filters.py | 286 | # Step 7: Apply always_keep_last_n safety — ensure the last N raw messages | COMMENT |
| LOW | ods/extensions/services/token-spy/filters.py | 268 | # Step 5: Truncate tool result content in all kept messages | COMMENT |
| LOW | ods/extensions/services/token-spy/filters.py | 301 | # Step 8: Apply max_total_chars if set | COMMENT |
| LOW⚡ | ods/installers/macos/install-macos.sh | 2047 | # Step 2: skip if already cached. | COMMENT |
| LOW⚡ | ods/installers/macos/install-macos.sh | 2051 | # Step 3: POST to trigger download. | COMMENT |
| LOW⚡ | ods/installers/macos/install-macos.sh | 2061 | # Step 4: verify the model is actually cached. | COMMENT |
| LOW | ods/installers/macos/install-macos.sh | 2034 | # Step 1: wait briefly for the models API to be ready (max 15s). | COMMENT |
| LOW⚡ | ods/installers/lib/detection.sh | 618 | # Step 1: Is there even NVIDIA hardware on this machine? | COMMENT |
| LOW⚡ | ods/installers/lib/detection.sh | 625 | # Step 2: Ensure a driver package is installed | COMMENT |
| LOW | ods/installers/lib/detection.sh | 657 | # Step 3: Try loading the module — see why it fails | COMMENT |
| LOW⚡ | ods/installers/lib/detection.sh | 671 | # Step 4: If it's not a Secure Boot issue, bail out | COMMENT |
| LOW⚡ | ods/installers/lib/detection.sh | 677 | # Step 5: Secure Boot is blocking the module — ensure it's properly signed | COMMENT |
| LOW | ods/installers/lib/detection.sh | 749 | # Step 6: Try loading — if MOK key is already enrolled, this works immediately | COMMENT |
| LOW | ods/installers/lib/detection.sh | 760 | # Step 7: MOK key needs firmware enrollment — one reboot required | COMMENT |
| LOW⚡ | ods/installers/phases/11-services.sh | 955 | # Step 1: start any containers already in Created state | COMMENT |
| LOW⚡ | ods/installers/phases/11-services.sh | 957 | # Step 2: wait for services to stabilize, then compose pass | COMMENT |
| LOW⚡ | ods/installers/phases/11-services.sh | 960 | # Step 3: catch any stragglers from the second pass | COMMENT |
| LOW | ods/installers/phases/12-health.sh | 451 | # Step 1: wait briefly for the models API to be ready. Whisper's /health | COMMENT |
| LOW⚡ | ods/installers/phases/12-health.sh | 466 | # Step 2: skip download if already cached. | COMMENT |
| LOW⚡ | ods/installers/phases/12-health.sh | 470 | # Step 3: POST to trigger download. Log stdout/stderr to install log. | COMMENT |
| LOW⚡ | ods/installers/phases/12-health.sh | 480 | # Step 4: verify the model is actually cached. POST can return 200 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ods/bin/ods-host-agent.py | 12 | CODE | |
| LOW | ods/bin/ods-mdns.py | 27 | CODE | |
| LOW | ods/tests/test-fedora-strix-compat.py | 10 | CODE | |
| LOW | ods/tests/test-runtime-config-wiring.py | 4 | CODE | |
| LOW | ods/tests/test_todo_fixes.py | 4 | CODE | |
| LOW | ods/tests/test-dependency-pins.py | 4 | CODE | |
| LOW | ods/tests/test-perplexica-entrypoint.py | 4 | CODE | |
| LOW | ods/tests/test-render-runtime-configs.py | 4 | CODE | |
| LOW | ods/tests/validate-agent-templates.py | 11 | CODE | |
| LOW | ods/tests/test_mdns_subdomains.py | 18 | CODE | |
| LOW | ods/tests/test_setup_card.py | 72 | CODE | |
| LOW | ods/tests/test_setup_card.py | 73 | CODE | |
| LOW | ods/tests/contracts/test-hermes-worker-guardrails.py | 4 | CODE | |
| LOW | ods/tests/contracts/test-ods-cli-contracts.py | 9 | CODE | |
| LOW | ods/tests/contracts/test-port-contracts.py | 9 | CODE | |
| LOW | ods/tests/contracts/test-network-exposure-contracts.py | 4 | CODE | |
| LOW | ods/extensions/services/dashboard-api/hermes_bridge.py | 27 | CODE | |
| LOW | …s/extensions/services/dashboard-api/lemonade_client.py | 3 | CODE | |
| LOW | ods/extensions/services/dashboard-api/gguf_inspector.py | 8 | CODE | |
| LOW | …xtensions/services/dashboard-api/performance_oracle.py | 12 | CODE | |
| LOW | ods/extensions/services/dashboard-api/session_signer.py | 47 | CODE | |
| LOW | ods/extensions/services/dashboard-api/routers/auth.py | 28 | CODE | |
| LOW | …ns/services/dashboard-api/routers/oauth_passthrough.py | 51 | CODE | |
| LOW | …xtensions/services/dashboard-api/routers/magic_link.py | 49 | CODE | |
| LOW | ods/extensions/services/dashboard-api/routers/talk.py | 9 | CODE | |
| LOW | ods/extensions/services/dashboard-api/routers/usage.py | 3 | CODE | |
| LOW | …services/dashboard-api/tests/test_oauth_passthrough.py | 5 | CODE | |
| LOW | ods/extensions/services/dashboard-api/tests/conftest.py | 29 | CODE | |
| LOW | …ns/services/dashboard-api/tests/test_setup_sentinel.py | 10 | CODE | |
| LOW | …/extensions/services/dashboard-api/tests/test_usage.py | 3 | CODE | |
| LOW | …extensions/services/dashboard-api/tests/test_models.py | 3 | CODE | |
| LOW | …xtensions/services/dashboard-api/tests/test_routers.py | 3 | CODE | |
| LOW | ods/extensions/services/token-spy/providers/__init__.py | 6 | CODE | |
| LOW | ods/extensions/services/token-spy/providers/__init__.py | 7 | CODE | |
| LOW | ods/extensions/services/token-spy/providers/__init__.py | 7 | CODE | |
| LOW | ods/extensions/services/token-spy/providers/__init__.py | 8 | CODE | |
| LOW | ods/extensions/services/token-spy/providers/__init__.py | 9 | CODE | |
| LOW | …tensions/services/token-spy/tests/test_usage_report.py | 3 | CODE | |
| LOW | …s/extensions/services/privacy-shield/key_management.py | 6 | CODE | |
| LOW | ods/scripts/validate-generated-configs.py | 4 | CODE | |
| LOW | ods/scripts/patch-hermes-config.py | 10 | CODE | |
| LOW | ods/scripts/check-dependency-pins.py | 9 | CODE | |
| LOW | ods/scripts/audit-extensions.py | 7 | CODE | |
| LOW | ods/scripts/healthcheck.py | 46 | CODE | |
| LOW | ods/scripts/validate-golden-paths.py | 4 | CODE | |
| LOW | ods/scripts/build-installation-context.py | 25 | CODE | |
| LOW | ods/scripts/generate-extensions-catalog.py | 9 | CODE | |
| LOW | ods/scripts/validate-sim-summary.py | 27 | CODE | |
| LOW | ods/scripts/render-runtime-configs.py | 9 | CODE | |
| LOW | ods/scripts/generate-setup-card.py | 41 | CODE | |
| LOW | ods/scripts/generate-setup-card.py | 348 | CODE | |
| LOW | ods/scripts/select-model.py | 10 | CODE | |
| LOW | ods/scripts/check-version-consistency.py | 4 | CODE | |
| LOW | ods/scripts/maintainers/list-stale-branches.py | 9 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | ods/config/n8n/llm-summarizer.json | 14 | "content": "## LLM Summarizer\n\nThis is a template workflow for sending text or URLs to a webhook and getting a | CODE |
| HIGH | .claude/commands/deep-research.md | 527 | *Generated by Claude Code Deep Research with Rube MCP + PAL MCP* | COMMENT |
| HIGH | .claude/commands/code-review.md | 384 | *Generated by Claude Code Review with PAL MCP Consensus* | COMMENT |
| HIGH | .github/workflows/claude-review.yml | 390 | Generated by Claude Code Review. | CODE |
| HIGH | .github/workflows/autonomous-code-scanner.yml | 1029 | Types were generated by Claude Haiku 4.5 and applied via AST-based function lookup. | CODE |
| HIGH | .github/workflows/autonomous-code-scanner.yml | 1110 | Docstrings were generated by Claude Haiku 4.5 and inserted via AST-based function lookup. | CODE |
| HIGH | .github/workflows/nightly-docs-update.yml | 305 | Generated by Claude Code (claude-sonnet-4-6) | [Workflow Run](${{ github.server_url }}/${{ github.repository | CODE |
| HIGH | .github/workflows/nightly-code-review.yml | 249 | Automated code improvements generated by Claude Code. | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ods/bin/ods-mdns.py | 72 | logger = logging.getLogger(__name__) | CODE |
| LOW | ods/extensions/services/dashboard-api/hermes_bridge.py | 41 | logger = logging.getLogger(__name__) | CODE |
| LOW | ods/extensions/services/dashboard-api/config.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | ods/extensions/services/dashboard-api/gguf_inspector.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | ods/extensions/services/dashboard-api/security.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | ods/extensions/services/dashboard-api/agent_monitor.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | ods/extensions/services/dashboard-api/gpu.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | ods/extensions/services/dashboard-api/main.py | 127 | logger = logging.getLogger(__name__) | CODE |
| LOW | ods/extensions/services/dashboard-api/helpers.py | 55 | logger = logging.getLogger(__name__) | CODE |
| LOW | ods/extensions/services/dashboard-api/helpers.py | 468 | def set_services_cache(statuses: list) -> None: | CODE |
| LOW | ods/extensions/services/dashboard-api/session_signer.py | 58 | logger = logging.getLogger(__name__) | CODE |
| LOW | ods/extensions/services/dashboard-api/session_signer.py | 79 | def _set_secret_for_tests(value: str) -> None: | CODE |
| LOW | …s/extensions/services/dashboard-api/user_extensions.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | ods/extensions/services/dashboard-api/routers/auth.py | 39 | logger = logging.getLogger(__name__) | CODE |
| LOW | ods/extensions/services/dashboard-api/routers/models.py | 39 | logger = logging.getLogger(__name__) | CODE |
| LOW | …s/extensions/services/dashboard-api/routers/updates.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | …/extensions/services/dashboard-api/routers/features.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | …ns/services/dashboard-api/routers/oauth_passthrough.py | 66 | logger = logging.getLogger(__name__) | CODE |
| LOW | ods/extensions/services/dashboard-api/routers/voice.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | …extensions/services/dashboard-api/routers/templates.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | …xtensions/services/dashboard-api/routers/extensions.py | 40 | logger = logging.getLogger(__name__) | CODE |
| LOW | …xtensions/services/dashboard-api/routers/magic_link.py | 73 | logger = logging.getLogger(__name__) | CODE |
| LOW | ods/extensions/services/dashboard-api/routers/setup.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | …extensions/services/dashboard-api/routers/tailscale.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | …extensions/services/dashboard-api/routers/workflows.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | …extensions/services/dashboard-api/routers/resources.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | ods/extensions/services/dashboard-api/routers/gpu.py | 29 | logger = logging.getLogger(__name__) | CODE |
| LOW | ods/extensions/services/dashboard-api/routers/talk.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | …s/extensions/services/dashboard-api/routers/privacy.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | ods/extensions/services/token-spy/db_postgres.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | ods/extensions/services/token-spy/providers/__init__.py | 11 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ods/config/openclaw/inject-token.js | 77 | // (device auth ON). Deleting is more robust than setting false against | COMMENT |
| MEDIUM | ods/tests/fleet-multi-distro.sh | 6 | # harness without pre-created per-distro containers. | COMMENT |
| MEDIUM | ods/tests/test-bootstrap-upgrade-close-inherited-fds.sh | 5 | # opened (e.g. FD 9 from the fleet harness, or common FD 200 wrappers) for the | COMMENT |
| MEDIUM | ods/tests/test-docker-image-pull-retry.sh | 41 | # Run in a clean bash so we can stub sleep/spin_task without affecting this test harness. | COMMENT |
| MEDIUM⚡ | …tests/contracts/test-windows-hermes-config-patching.sh | 115 | # delegated Windows installer. The fleet harness and public docs call the | COMMENT |
| MEDIUM | ods/extensions/services/dashboard-api/routers/agents.py | 16 | """Get comprehensive agent monitoring metrics.""" | STRING |
| MEDIUM⚡ | …ns/services/dashboard-api/tests/test_setup_sentinel.py | 115 | # the test harness — but assert only the structural contract here so | COMMENT |
| MEDIUM⚡ | …ns/services/dashboard-api/tests/test_setup_sentinel.py | 116 | # this test stays robust against fixture changes. | COMMENT |
| MEDIUM⚡ | ods/scripts/validate-env.sh | 83 | # .env parsing (robust) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | ods/test-stack.sh | 8 | # Usage: | COMMENT |
| LOW | ods/test-install.sh | 7 | # Usage: | COMMENT |
| LOW⚡ | ods/tests/test-multi-distro.sh | 8 | # Usage: | COMMENT |
| LOW | ods/tests/reproducers/langfuse-uid-check.sh | 13 | # Usage: | COMMENT |
| LOW⚡ | ods/scripts/migrate-config.sh | 8 | # Usage: | COMMENT |
| LOW | ods/scripts/extension-runtime-check.sh | 6 | # Usage: | COMMENT |
| LOW | ods/scripts/validate-manifests.sh | 5 | # Usage: | COMMENT |
| LOW⚡ | ods/scripts/pre-download.sh | 10 | # Usage: | COMMENT |
| LOW⚡ | ods/scripts/ods-test.sh | 12 | # Usage: | COMMENT |
| LOW⚡ | ods/scripts/upgrade-model.sh | 10 | # Usage: | COMMENT |
| LOW | ods/scripts/llm-cold-storage.sh | 11 | # Usage: | COMMENT |
| LOW | ods/scripts/linux-install-preflight.sh | 5 | # Usage: | COMMENT |
| LOW⚡ | ods/lib/rsync.sh | 11 | # Usage: | COMMENT |
| LOW⚡ | ods/installers/macos/ods-macos.sh | 8 | # Usage: | COMMENT |
| LOW⚡ | ods/installers/macos/install-macos.sh | 11 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | ods/extensions/library/workflows/comfyui/README.md | 34 | -H "X-API-Key: your-api-key" \ | CODE |
| HIGH | ods/extensions/library/workflows/comfyui/README.md | 66 | -H "X-API-Key: your-api-key" \ | CODE |
| HIGH | ods/extensions/library/workflows/langflow/README.md | 32 | -H "X-API-Key: your-api-key" \ | CODE |
| HIGH | ods/extensions/library/workflows/flowise/README.md | 32 | -H "X-API-Key: your-api-key" \ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ods/docker-compose.base.yml | 132 | "6":{"inputs":{"text":"placeholder","clip":["4",1]},"class_type":"CLIPTextEncode"}, | CODE |
| LOW | ods/config/extensions-catalog.json | 645 | "default": "dummy-key", | CODE |
| LOW | …extensions/library/services/open-interpreter/server.py | 74 | interpreter.llm.api_key = "fake_key" | CODE |
| LOW | …extensions/library/services/open-interpreter/server.py | 97 | interpreter.llm.api_key = "fake_key" | CODE |
| LOW | ods/extensions/library/services/dify/README.md | 37 | | `DIFY_OPENAI_API_KEY` | API key for OpenAI-compatible endpoint | `dummy-key` | | CODE |
| LOW | ods/extensions/library/services/dify/manifest.yaml | 38 | default: "dummy-key" | CODE |
| LOW | …ervices/dashboard-api/tests/test_performance_oracle.py | 236 | (models_dir / "Qwen3.6-35B-A3B-UD-Q4_K_M.gguf").write_text("placeholder", encoding="utf-8") | CODE |
| LOW | …ons/services/privacy-shield/tests/test_pii_scrubber.py | 30 | assert "user@example.com" not in result | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ods/extensions/services/dashboard-api/main.py | 1362 | CODE | |
| LOW | ods/extensions/services/dashboard-api/helpers.py | 259 | CODE | |
| LOW | ods/extensions/services/dashboard-api/routers/models.py | 727 | CODE | |
| LOW | ods/extensions/services/dashboard-api/routers/models.py | 734 | CODE | |
| LOW | ods/extensions/services/dashboard-api/routers/models.py | 750 | CODE | |
| LOW | ods/extensions/services/dashboard-api/routers/models.py | 786 | CODE | |
| LOW | …ns/services/dashboard-api/tests/test_model_activate.py | 75 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | ods/extensions/services/token-spy/providers/registry.py | 30 | Get a provider instance by name. Creates a new instance with the given config. Does not cache instances | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .github/scripts/generate-type-hints.py | 115 | "original_signature": "def process_data(data, options=None):", | CODE |
| LOW | .github/scripts/generate-type-hints.py | 116 | "typed_signature": "def process_data(data: List[dict], options: Optional[dict] = None) -> dict:", | CODE |