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 Light-Heart-Labs/DreamServer, a Python project with 4,792 GitHub stars. SynthScan v2.0 examined 292,473 lines of code across 1165 source files, recording 4942 pattern matches distributed across 22 syntactic categories. The overall adjusted score of 29.2 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 4942 distinct pattern matches across 22 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 | 112 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | ods/test-stack.sh | 114 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | ods/test-stack.sh | 122 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | ods/test-stack.sh | 124 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | ods/test-stack.sh | 130 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | ods/test-stack.sh | 132 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | ods/test-stack.sh | 164 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | ods/test-stack.sh | 167 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | ods/test-stack.sh | 176 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | ods/test-stack.sh | 178 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | ods/test-stack.sh | 206 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | ods/test-stack.sh | 208 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | ods/ods-update.sh | 642 | # ── Step 1: rollback snapshot ───────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | ods/ods-update.sh | 652 | # ── Step 2: pull latest changes ─────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | ods/ods-update.sh | 661 | # ── 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 | 437 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 439 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 508 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 510 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 562 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 564 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 628 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 630 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 677 | # ── Step 4: restart services ────────────────────────────────────────────── | COMMENT |
| MEDIUM | ods/ods-update.sh | 702 | # ── Step 5: health-check with timeout ──────────────────────────────────── | COMMENT |
| MEDIUM | ods/ods-update.sh | 710 | # ── Step 6: record new version ──────────────────────────────────────────── | COMMENT |
| MEDIUM | ods/ods-update.sh | 729 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 731 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 865 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 867 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 897 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 899 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 990 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 992 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 1038 | #============================================================================== | COMMENT |
| MEDIUM | ods/ods-update.sh | 1040 | #============================================================================== | 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 | 66 | #============================================================================= | COMMENT |
| MEDIUM | ods/install-core.sh | 68 | #============================================================================= | COMMENT |
| MEDIUM | ods/install-core.sh | 95 | #============================================================================= | COMMENT |
| MEDIUM | ods/install-core.sh | 97 | #============================================================================= | COMMENT |
| MEDIUM⚡ | ods/install-core.sh | 327 | #============================================================================= | COMMENT |
| MEDIUM⚡ | ods/install-core.sh | 329 | #============================================================================= | COMMENT |
| MEDIUM⚡ | ods/install-core.sh | 335 | #============================================================================= | COMMENT |
| MEDIUM⚡ | ods/install-core.sh | 337 | #============================================================================= | 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 |
| 1431 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ods/bin/ods-host-agent.py | 241 | def _ensure_windows_resolver_pyyaml(python_cmd: str) -> None: | CODE |
| LOW | ods/bin/ods-host-agent.py | 299 | def _windows_whisper_cuda_supported(env: dict) -> bool: | CODE |
| LOW | ods/bin/ods-host-agent.py | 390 | def _model_download_thread_alive() -> bool: | CODE |
| LOW | ods/bin/ods-host-agent.py | 424 | def _model_lifecycle_conflict(requested_operation: str, active: dict) -> dict: | CODE |
| LOW | ods/bin/ods-host-agent.py | 457 | def _prepare_initial_switchboard_verification() -> bool: | CODE |
| LOW | ods/bin/ods-host-agent.py | 491 | def _download_status_model_token(value: object) -> str: | CODE |
| LOW | ods/bin/ods-host-agent.py | 496 | def _format_curl_download_error(returncode: int | None, stderr_text: object) -> str: | CODE |
| LOW | ods/bin/ods-host-agent.py | 516 | def _model_download_allowed_hosts() -> frozenset[str]: | CODE |
| LOW | ods/bin/ods-host-agent.py | 529 | def _model_download_url_error(url: object) -> str: | CODE |
| LOW | ods/bin/ods-host-agent.py | 546 | def _parse_huggingface_resolve_url(url: object) -> tuple[str, str, str] | None: | CODE |
| LOW | ods/bin/ods-host-agent.py | 577 | def _download_huggingface_artifact( | CODE |
| LOW⚡ | ods/bin/ods-host-agent.py | 2188 | def _remote_provider_route_state_path() -> Path: | STRING |
| LOW⚡ | ods/bin/ods-host-agent.py | 2192 | def _remote_provider_secret_path(ref: str) -> Path: | STRING |
| LOW⚡ | ods/bin/ods-host-agent.py | 2199 | def _remote_provider_secret_owner() -> tuple[int | None, int | None]: | STRING |
| LOW⚡ | ods/bin/ods-host-agent.py | 2289 | def _remote_provider_safe_text(value, *, max_length: int) -> str: | STRING |
| LOW⚡ | ods/bin/ods-host-agent.py | 2298 | def _remote_provider_safe_int(value) -> int | None: | STRING |
| LOW⚡ | ods/bin/ods-host-agent.py | 2302 | def _remote_provider_sanitize_probe_receipt(value) -> dict: | STRING |
| LOW⚡ | ods/bin/ods-host-agent.py | 2512 | def _remove_remote_provider_file(path: Path) -> None: | STRING |
| LOW⚡ | ods/bin/ods-host-agent.py | 2518 | def _remote_provider_mutation_paths(action: str) -> list[Path]: | STRING |
| LOW⚡ | ods/bin/ods-host-agent.py | 2528 | def _restore_remote_provider_snapshots(snapshots: dict[Path, dict]) -> None: | STRING |
| LOW⚡ | ods/bin/ods-host-agent.py | 2533 | def _apply_remote_provider_lifecycle_operation(payload: dict, plan: dict) -> dict: | STRING |
| LOW⚡ | ods/bin/ods-host-agent.py | 5044 | def _handle_remote_provider_ssh_supervisor_status(self): | STRING |
| LOW⚡ | ods/bin/ods-host-agent.py | 5050 | def _handle_invalidate_compose_cache(self): | STRING |
| LOW⚡ | ods/bin/ods-host-agent.py | 11405 | def _write_hermes_container_config(text: str) -> None: | STRING |
| LOW | ods/bin/ods-host-agent.py | 797 | def _load_model_library_records() -> list[dict]: | STRING |
| LOW | ods/bin/ods-host-agent.py | 863 | def _target_model_vram_budget_mb( | STRING |
| LOW | ods/bin/ods-host-agent.py | 911 | def _nvidia_mig_topology_is_explicit(topology: dict) -> bool: | STRING |
| LOW | ods/bin/ods-host-agent.py | 944 | def _legacy_nvidia_gpu_assignment(env: dict, topology: dict) -> dict | None: | STRING |
| LOW | ods/bin/ods-host-agent.py | 1089 | def _build_model_gpu_assignment_plan( | STRING |
| LOW | ods/bin/ods-host-agent.py | 1194 | def _plan_nvidia_model_gpu_assignment( | STRING |
| LOW | ods/bin/ods-host-agent.py | 1341 | def _legacy_amd_gpu_assignment(env: dict, topology: dict) -> dict | None: | STRING |
| LOW | ods/bin/ods-host-agent.py | 1478 | def _plan_amd_model_gpu_assignment( | STRING |
| LOW | ods/bin/ods-host-agent.py | 1554 | def _safe_model_artifact_path(models_dir: Path, filename: object) -> Path | None: | STRING |
| LOW | ods/bin/ods-host-agent.py | 1638 | def _catalog_manifest_for_status(model_label: object) -> tuple[dict | None, str]: | STRING |
| LOW | ods/bin/ods-host-agent.py | 1662 | def _normalize_model_download_status(status_path: Path, data: dict) -> dict: | STRING |
| LOW | ods/bin/ods-host-agent.py | 1765 | def _switchboard_state_needs_initial_verification(path: Path) -> bool: | STRING |
| LOW | ods/bin/ods-host-agent.py | 1784 | def _switchboard_state_needs_current_env_verification( | STRING |
| LOW | ods/bin/ods-host-agent.py | 1832 | def _catalog_model_for_current_env(env: dict) -> tuple[str, dict]: | STRING |
| LOW | ods/bin/ods-host-agent.py | 1854 | def _initial_switchboard_backend(env: dict) -> tuple[str, str, str | None]: | STRING |
| LOW | ods/bin/ods-host-agent.py | 1868 | def _publish_verified_initial_switchboard_route( | STRING |
| LOW | ods/bin/ods-host-agent.py | 1968 | def _schedule_initial_switchboard_verification(reason: str) -> None: | STRING |
| LOW | ods/bin/ods-host-agent.py | 1994 | def _bootstrap_status_allows_route_proof() -> bool: | STRING |
| LOW | ods/bin/ods-host-agent.py | 2008 | def _model_status_allows_route_proof(data: dict) -> bool: | STRING |
| LOW | ods/bin/ods-host-agent.py | 2015 | def _verify_switchboard_route_for_status(data: dict, reason: str) -> None: | STRING |
| LOW | ods/bin/ods-host-agent.py | 2210 | def _remote_provider_secret_file_status(path: Path) -> dict: | STRING |
| LOW | ods/bin/ods-host-agent.py | 2222 | def _remote_provider_ssh_secret_status() -> dict: | STRING |
| LOW | ods/bin/ods-host-agent.py | 2233 | def _remote_provider_projection(route: dict) -> dict: | STRING |
| LOW | ods/bin/ods-host-agent.py | 2245 | def _remote_provider_route_status( | STRING |
| LOW | ods/bin/ods-host-agent.py | 2262 | def _remote_provider_route_state_from_plan( | STRING |
| LOW | ods/bin/ods-host-agent.py | 2335 | def _remote_provider_probe_receipt_from_egress(payload: dict) -> dict: | STRING |
| LOW | ods/bin/ods-host-agent.py | 2344 | def _read_remote_provider_route_state_for_update() -> dict: | STRING |
| LOW | ods/bin/ods-host-agent.py | 2367 | def _record_remote_provider_egress_probe(payload: dict) -> dict: | STRING |
| LOW | ods/bin/ods-host-agent.py | 2391 | def _remote_provider_ssh_supervisor_error(reason: str, *, status: str = "invalid") -> dict: | STRING |
| LOW | ods/bin/ods-host-agent.py | 2405 | def _remote_provider_route_for_ssh_supervisor() -> tuple[dict, str | None]: | STRING |
| LOW | ods/bin/ods-host-agent.py | 2437 | def _remote_provider_ssh_supervisor_status() -> dict: | STRING |
| LOW | ods/bin/ods-host-agent.py | 2456 | def _remote_provider_secret_values(payload: dict, plan: dict) -> dict[str, str]: | STRING |
| LOW | ods/bin/ods-host-agent.py | 2468 | def _remote_provider_probe_lifecycle_test(payload: dict, plan: dict) -> dict: | STRING |
| LOW | ods/bin/ods-host-agent.py | 2485 | def _write_remote_provider_route_state( | STRING |
| LOW | ods/bin/ods-host-agent.py | 2501 | def _write_remote_provider_secret(ref: str, value: str) -> None: | STRING |
| LOW | ods/bin/ods-host-agent.py | 2608 | def _assert_text_file_matches_snapshot(path: Path, snapshot: dict) -> None: | STRING |
| 2321 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | ods/bin/ods-host-agent.py | 9824 | $cacheBin = if ($userProfile) { Join-Path (Join-Path (Join-Path $userProfile ".cache") "lemonade") "bin" } else { $null | CODE |
| HIGH | ods/bin/ods-host-agent.py | 9826 | $cachePrefix = if ($cacheBin) { $cacheBin.TrimEnd('\') + '\' } else { $null } | CODE |
| HIGH | ods/bin/ods-host-agent.py | 9840 | param($Proc, [hashtable]$PortOwners = $null) | CODE |
| HIGH⚡ | ods/bin/ods-host-agent.py | 11408 | "owner=$(stat -c '%u:%g' \"$target\" 2>/dev/null || printf '10000:10000'); " | STRING |
| HIGH⚡ | ods/bin/ods-host-agent.py | 11409 | "mode=$(stat -c '%a' \"$target\" 2>/dev/null || printf '600'); " | STRING |
| HIGH | ods/bin/ods-host-agent.py | 8889 | Lemonade returns {"status": "ok", "model_loaded": null} when healthy | STRING |
| HIGH⚡ | ods/tests/test-perplexica-entrypoint.py | 142 | sample = 'g.push({content:k,metadata:{url:a,title:j}})' | CODE |
| HIGH⚡ | ods/tests/test-perplexica-entrypoint.py | 149 | assert patched == 'g.push({content:k.slice(0,30000),metadata:{url:a,title:j}})' | CODE |
| HIGH | …xtensions/services/dashboard-api/routers/extensions.py | 679 | # `deploy: { resources: null }` or `resources: { reservations: null }` | COMMENT |
| HIGH | ods/extensions/services/dashboard-api/routers/talk.py | 640 | "status": "ok", "warning": null} | STRING |
| HIGH | …ervices/dashboard-api/tests/test_performance_oracle.py | 116 | """A catalog entry may carry an explicit ``"aliases": null`` (JSON null). | STRING |
| HIGH | …nsions/services/dashboard-api/tests/test_extensions.py | 2819 | ' "phase_label": "stale", "error": null,' | CODE |
| HIGH | …nsions/services/dashboard-api/tests/test_extensions.py | 2267 | """Strict regression for the audit-flagged bug: `deploy: { resources: null }`. | STRING |
| HIGH | …nsions/services/dashboard-api/tests/test_extensions.py | 2287 | """Defense-in-depth: `resources: { reservations: null }`. | STRING |
| HIGH⚡ | …ns/services/dashboard-api/tests/test_model_activate.py | 2053 | "function Get-CimInstance { return $null }\n" | CODE |
| HIGH⚡ | …ns/services/dashboard-api/tests/test_model_activate.py | 2054 | "function Get-Process { return $null }\n" | CODE |
| HIGH⚡ | …ns/services/dashboard-api/tests/test_model_activate.py | 2059 | "function Get-CimInstance { return $null }\n" | CODE |
| HIGH | …ns/services/dashboard-api/tests/test_model_activate.py | 143 | body = '{"status": "ok", "model_loaded": null}' | CODE |
| HIGH | …ns/services/dashboard-api/tests/test_model_activate.py | 2073 | "function Get-CimInstance { return $null }\n" | CODE |
| HIGH | …/extensions/services/model-router/tests/test_router.py | 880 | b'[{"delta":{"content":"hi"},"finish_reason":null}]}\n\n' | CODE |
| HIGH | …/extensions/services/model-router/tests/test_router.py | 911 | b'[{"delta":{"content":"partial"},"finish_reason":null}],' | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2097 | totalCost += d.total_cost || 0; | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2098 | totalInput += d.total_input_tokens || 0; | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2099 | totalOutput += d.total_output_tokens || 0; | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2100 | totalTurns += d.turns || 0; | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2101 | totalCacheRead += d.total_cache_read || 0; | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2102 | totalCacheWrite += d.total_cache_write || 0; | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2184 | { label: 'Input', data: sorted.map(u => u.input_tokens || 0), color: '#58a6ff' }, | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2185 | { label: 'Output', data: sorted.map(u => u.output_tokens || 0), color: '#f0883e' }, | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2186 | { label: 'Cache Read', data: sorted.map(u => u.cache_read_tokens || 0), color: '#3fb950' }, | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2187 | { label: 'Cache Write', data: sorted.map(u => u.cache_write_tokens || 0), color: '#da3633' }, | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2197 | cacheRead += (u.cache_read_tokens || 0); | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2198 | cacheWrite += (u.cache_write_tokens || 0); | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2199 | input += (u.input_tokens || 0); | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2200 | output += (u.output_tokens || 0); | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2202 | const total = cacheRead + cacheWrite + input + output || 1; | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2232 | const cost = u.estimated_cost_usd || 0; | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2235 | totalData.push({x: ts, y: runningTotal}); | CODE |
| HIGH⚡ | ods/extensions/services/token-spy/main.py | 2236 | if (running[u.agent] !== undefined) { | CODE |
| HIGH | ods/extensions/services/token-spy/main.py | 1973 | let tokensChart = null, breakdownChart = null, costChart = null, historyChart = null, cumulativeChart = null; | CODE |
| HIGH | ods/extensions/services/token-spy/main.py | 1994 | window._scl = sessions.reduce((max, s) => Math.max(max, s.session_char_limit || 200000), 200000); | CODE |
| HIGH | ods/extensions/services/token-spy/main.py | 2019 | if (n == null) return '\\u2014'; | CODE |
| HIGH | ods/extensions/services/token-spy/main.py | 2026 | if (n == null) return '$0.00'; | CODE |
| HIGH | ods/extensions/services/token-spy/main.py | 2066 | const limit = s.session_char_limit || 200000; | CODE |
| HIGH | ods/extensions/services/token-spy/main.py | 2132 | points: agentData.map(u => ({x: parseTs(u.timestamp), y: u.estimated_cost_usd || 0})), | CODE |
| HIGH | ods/extensions/services/token-spy/main.py | 2156 | points: agentData.map(u => ({x: parseTs(u.timestamp), y: u.conversation_history_chars || 0})), | CODE |
| HIGH | ods/extensions/services/token-spy/main.py | 2168 | { value: window._scl || 200000, color: '#f0883e', label: fmt(window._scl || 200000) + ' (~' + fmt(Math.round((wind | CODE |
| HIGH | ods/extensions/services/token-spy/main.py | 2169 | { 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 | 2303 | window._scl = s.session_char_limit || 200000; | CODE |
| HIGH | ods/extensions/services/token-spy/main.py | 2330 | if (cfg.session_char_limit != null) { | CODE |
| HIGH | ods/extensions/services/token-spy/main.py | 2349 | if (!el) return null; | CODE |
| HIGH | ods/extensions/services/token-spy/main.py | 2359 | if (!h4 || h4.textContent === 'Global Defaults') return; | CODE |
| HIGH | ods/extensions/services/token-spy/main.py | 2385 | 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 | 281 | export EXTERNAL_LLM_URL EXTERNAL_LLM_PROVIDER EXTERNAL_LLM_MODEL | 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 | # install metadata. This value is persistent inside Open WebUI's config | COMMENT |
| LOW | ods/docker-compose.base.yml | 241 | # Cookie Domain scope. Set to <device>.local (no leading dot) so | COMMENT |
| LOW | ods/ods-uninstall.sh | 241 | # changed across versions (ODS moved from the legacy `web` | COMMENT |
| LOW | ods/ods-uninstall.sh | 341 | log_info "User data preserved at: $INSTALL_DIR/data/" | COMMENT |
| LOW | ods/bin/ods-host-agent.py | 5221 | "message": "Update started in background. Check update status for progress.", | COMMENT |
| LOW | ods/bin/ods-host-agent.py | 6381 | if run_setup_hook: | 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 | return `${base}/v1`; | COMMENT |
| LOW | ods/tests/test-macos-config-show-secret-mask.sh | 1 | #!/usr/bin/env bash | 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-token-spy-session-manager.sh | 1 | #!/usr/bin/env 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-cli-user-extension-deps.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-cli-update-verification.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-update-script-backup.sh | 1 | #!/bin/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/test-cli-preset-restore-user-extensions.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/test-extension-runtime-check.sh | 81 | 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 | ods/tests/contracts/test-llama-reasoning-format.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/tests/lib/auth-env.sh | 1 | #!/bin/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 |
| 147 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ods/bin/ods-macos-llm-bridge.py | 4 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 12 | CODE | |
| LOW | ods/bin/ods-mdns.py | 27 | CODE | |
| LOW | ods/bin/model_switchboard/reconciler.py | 14 | CODE | |
| LOW | ods/bin/model_switchboard/reconciler.py | 19 | CODE | |
| LOW | ods/bin/model_switchboard/__init__.py | 8 | CODE | |
| LOW | ods/bin/model_switchboard/__init__.py | 8 | CODE | |
| LOW | ods/bin/model_switchboard/__init__.py | 9 | CODE | |
| LOW | ods/bin/model_switchboard/__init__.py | 9 | CODE | |
| LOW | ods/bin/model_switchboard/__init__.py | 9 | CODE | |
| LOW | ods/bin/model_switchboard/__init__.py | 9 | CODE | |
| LOW | ods/bin/model_switchboard/__init__.py | 9 | CODE | |
| LOW | ods/bin/model_switchboard/__init__.py | 9 | CODE | |
| LOW | ods/bin/model_switchboard/__init__.py | 9 | CODE | |
| LOW | ods/bin/model_switchboard/__init__.py | 9 | CODE | |
| LOW | ods/bin/model_switchboard/__init__.py | 9 | CODE | |
| LOW | ods/bin/model_switchboard/__init__.py | 9 | CODE | |
| LOW | ods/bin/model_switchboard/state.py | 20 | CODE | |
| LOW | ods/bin/model_switchboard/adapters.py | 19 | CODE | |
| LOW | ods/bin/remote_provider/egress.py | 7 | CODE | |
| LOW | ods/bin/remote_provider/reconciler.py | 9 | CODE | |
| LOW | ods/bin/remote_provider/transport.py | 7 | CODE | |
| LOW | ods/bin/remote_provider/policy.py | 9 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 7 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 7 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 7 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 7 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 7 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 7 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 7 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 7 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 7 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 7 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 7 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 7 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 7 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 7 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 7 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 7 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 7 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 26 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 26 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 26 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 26 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 26 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 26 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 26 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 26 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 36 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 36 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 36 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 36 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 36 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 36 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 44 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 44 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 44 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 44 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 44 | CODE | |
| LOW | ods/bin/remote_provider/__init__.py | 44 | CODE | |
| 118 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ods/bin/ods-host-agent.py | 281 | def _nvidia_driver_major() -> int: | CODE |
| MEDIUM | ods/bin/ods-host-agent.py | 4069 | def _thread_target() -> None: | CODE |
| MEDIUM | ods/bin/ods-host-agent.py | 4173 | def read_json_body(handler) -> dict | None: | CODE |
| LOW | ods/bin/ods-host-agent.py | 53 | except Exception: # pragma: no cover - import environment dependent | CODE |
| LOW | ods/bin/ods-host-agent.py | 58 | except Exception: # pragma: no cover - import environment dependent | CODE |
| LOW | ods/bin/ods-host-agent.py | 80 | except Exception: # pragma: no cover - import environment dependent | CODE |
| LOW | ods/bin/ods-host-agent.py | 621 | except Exception as exc: | CODE |
| LOW⚡ | ods/bin/ods-host-agent.py | 5038 | except Exception as exc: | STRING |
| LOW⚡ | ods/bin/ods-host-agent.py | 5214 | except Exception: | STRING |
| LOW⚡ | ods/bin/ods-host-agent.py | 6511 | except Exception: | STRING |
| LOW⚡ | ods/bin/ods-host-agent.py | 12367 | except Exception as rename_exc: | STRING |
| LOW⚡ | ods/bin/ods-host-agent.py | 12370 | except Exception as restart_exc: | STRING |
| LOW⚡ | ods/bin/ods-host-agent.py | 12380 | except Exception as recreate_exc: | STRING |
| LOW⚡ | ods/bin/ods-host-agent.py | 12386 | except Exception as rollback_exc: | STRING |
| LOW | ods/bin/ods-host-agent.py | 1718 | except Exception as exc: | STRING |
| LOW | ods/bin/ods-host-agent.py | 1737 | except Exception: | STRING |
| LOW | ods/bin/ods-host-agent.py | 1983 | except Exception as exc: | STRING |
| LOW | ods/bin/ods-host-agent.py | 2451 | except Exception as exc: | STRING |
| LOW | ods/bin/ods-host-agent.py | 2587 | except Exception as exc: | STRING |
| LOW | ods/bin/ods-host-agent.py | 2593 | except Exception as rollback_exc: | STRING |
| LOW | ods/bin/ods-host-agent.py | 4080 | except Exception: | STRING |
| LOW | ods/bin/ods-host-agent.py | 4089 | except Exception: | STRING |
| LOW | ods/bin/ods-host-agent.py | 4866 | except Exception as exc: | STRING |
| LOW | ods/bin/ods-host-agent.py | 4977 | except Exception as exc: | STRING |
| LOW | ods/bin/ods-host-agent.py | 5017 | except Exception as exc: | STRING |
| LOW | ods/bin/ods-host-agent.py | 5169 | except Exception: | STRING |
| LOW | ods/bin/ods-host-agent.py | 5201 | except Exception as exc: | STRING |
| LOW | ods/bin/ods-host-agent.py | 6057 | except Exception as exc: | STRING |
| LOW | ods/bin/ods-host-agent.py | 6110 | except Exception as exc: | STRING |
| LOW | ods/bin/ods-host-agent.py | 6180 | except Exception as exc: | STRING |
| LOW | ods/bin/ods-host-agent.py | 6200 | except Exception as exc: | STRING |
| LOW | ods/bin/ods-host-agent.py | 6530 | except Exception: | STRING |
| LOW | ods/bin/ods-host-agent.py | 6573 | except Exception as exc: | STRING |
| LOW | ods/bin/ods-host-agent.py | 6705 | except Exception: | STRING |
| LOW | ods/bin/ods-host-agent.py | 7028 | except Exception as exc: | STRING |
| LOW | ods/bin/ods-host-agent.py | 7055 | except Exception: | STRING |
| LOW | ods/bin/ods-host-agent.py | 7266 | except Exception: | STRING |
| LOW | ods/bin/ods-host-agent.py | 7311 | except Exception: | STRING |
| LOW | ods/bin/ods-host-agent.py | 7319 | except Exception: | STRING |
| LOW | ods/bin/ods-host-agent.py | 7351 | except Exception: | STRING |
| LOW | ods/bin/ods-host-agent.py | 7757 | except Exception as rollback_exc: | STRING |
| LOW | ods/bin/ods-host-agent.py | 8436 | except Exception as exc: | STRING |
| LOW | ods/bin/ods-host-agent.py | 8478 | except Exception as exc: | STRING |
| LOW | ods/bin/ods-host-agent.py | 11572 | except Exception as exc: | STRING |
| LOW | ods/bin/ods-host-agent.py | 12508 | except Exception as exc: | STRING |
| LOW | ods/bin/model_switchboard/reconciler.py | 75 | except Exception as exc: # adapter contract violation, not runtime state | CODE |
| LOW | ods/bin/model_switchboard/adapters.py | 127 | except Exception as exc: # expected runtime failures become results | CODE |
| LOW | ods/bin/model_switchboard/adapters.py | 141 | except Exception as exc: | CODE |
| LOW | ods/bin/model_switchboard/adapters.py | 189 | except Exception as exc: | CODE |
| LOW | ods/bin/model_switchboard/adapters.py | 283 | except Exception as exc: | CODE |
| LOW⚡ | ods/bin/remote_provider/reconciler.py | 47 | except Exception as exc: | CODE |
| LOW⚡ | ods/bin/remote_provider/reconciler.py | 63 | 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 | 95 | except Exception as e: | CODE |
| LOW | ods/tests/dashboard-load-test.py | 120 | 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 |
| 100 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | ods/bin/ods-host-agent.py | 6377 | # Step 1: Setup hook (if requested). The helper is a no-op | STRING |
| LOW⚡ | ods/bin/ods-host-agent.py | 6386 | # Step 2: Pull (best-effort — failure is non-fatal if cached image exists). | STRING |
| LOW⚡ | ods/bin/ods-host-agent.py | 6502 | # Step 4: Success | STRING |
| LOW⚡ | ods/bin/ods-host-agent.py | 6505 | # Step 5: Post-install core recreate (best-effort, non-fatal). | STRING |
| LOW | ods/bin/ods-host-agent.py | 5406 | # Step 1: resolve and verify this is a Wi-Fi profile. Use -t for | STRING |
| LOW | ods/bin/ods-host-agent.py | 5446 | # Step 2: type-confirmed Wi-Fi → safe to delete. | STRING |
| LOW | ods/bin/ods-host-agent.py | 6424 | # Step 3: Start | STRING |
| LOW | ods/docs/EXTENSIONS.md | 46 | ### Step 1: Create the extension directory | COMMENT |
| LOW | ods/docs/EXTENSIONS.md | 56 | ### Step 2: Create the manifest | COMMENT |
| LOW | ods/docs/EXTENSIONS.md | 69 | ### Step 3: Create the compose fragment | COMMENT |
| LOW | ods/docs/EXTENSIONS.md | 96 | ### Step 4: Validate | COMMENT |
| LOW | ods/docs/EXTENSIONS.md | 115 | ### 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 | 175 | ## Step 5: Verify Installation | COMMENT |
| LOW | ods/docs/WINDOWS-INSTALL-WALKTHROUGH.md | 206 | ## 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 | 122 | ### Step 1: Check Your Windows Version | COMMENT |
| LOW | ods/docs/WINDOWS-TROUBLESHOOTING-GUIDE.md | 132 | ### Step 2: Install WSL2 (Windows Subsystem for Linux) | COMMENT |
| LOW | ods/docs/WINDOWS-TROUBLESHOOTING-GUIDE.md | 150 | ### Step 3: Install Docker Desktop | COMMENT |
| LOW | ods/docs/WINDOWS-TROUBLESHOOTING-GUIDE.md | 164 | ### Step 4: Install NVIDIA Drivers | COMMENT |
| LOW | ods/docs/WINDOWS-TROUBLESHOOTING-GUIDE.md | 176 | ### Step 5: Run ODS Installer | COMMENT |
| LOW | ods/docs/WINDOWS-TROUBLESHOOTING-GUIDE.md | 194 | ### Step 6: Wait for Model Download | COMMENT |
| LOW | ods/docs/WINDOWS-TROUBLESHOOTING-GUIDE.md | 210 | ### 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 | 341 | // Step 1 - Welcome / setup label | COMMENT |
| LOW | …/extensions/services/dashboard/src/pages/FirstBoot.jsx | 390 | // Step 2 - First user | COMMENT |
| LOW | …/extensions/services/dashboard/src/pages/FirstBoot.jsx | 446 | // Step 3 - Stack picker | COMMENT |
| LOW | …/extensions/services/dashboard/src/pages/FirstBoot.jsx | 511 | // 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 | 3229 | # Step 2: skip if already cached. | COMMENT |
| LOW⚡ | ods/installers/macos/install-macos.sh | 3233 | # Step 3: POST to trigger download. | COMMENT |
| LOW⚡ | ods/installers/macos/install-macos.sh | 3237 | # Step 4: verify the model is actually cached. | COMMENT |
| LOW | ods/installers/macos/install-macos.sh | 3216 | # 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 | 631 | # Step 2: Ensure a driver package is installed | COMMENT |
| LOW | ods/installers/lib/detection.sh | 663 | # Step 3: Try loading the module — see why it fails | COMMENT |
| LOW⚡ | ods/installers/lib/detection.sh | 677 | # Step 4: If it's not a Secure Boot issue, bail out | COMMENT |
| LOW⚡ | ods/installers/lib/detection.sh | 683 | # Step 5: Secure Boot is blocking the module — ensure it's properly signed | COMMENT |
| LOW | ods/installers/lib/detection.sh | 755 | # Step 6: Try loading — if MOK key is already enrolled, this works immediately | COMMENT |
| LOW | ods/installers/lib/detection.sh | 766 | # Step 7: MOK key needs firmware enrollment — one reboot required | COMMENT |
| LOW⚡ | ods/installers/phases/11-services.sh | 1217 | # Step 1: start any containers already in Created state | COMMENT |
| LOW⚡ | ods/installers/phases/11-services.sh | 1219 | # Step 2: wait for services to stabilize, then compose pass | COMMENT |
| LOW⚡ | ods/installers/phases/11-services.sh | 1222 | # Step 3: catch any stragglers from the second pass | COMMENT |
| LOW | ods/installers/phases/12-health.sh | 580 | # Step 1: wait briefly for the models API to be ready. Whisper's /health | COMMENT |
| LOW⚡ | ods/installers/phases/12-health.sh | 595 | # Step 2: skip download if already cached. | COMMENT |
| LOW⚡ | ods/installers/phases/12-health.sh | 599 | # Step 3: POST to trigger download. Log stdout/stderr to install log. | COMMENT |
| LOW⚡ | ods/installers/phases/12-health.sh | 603 | # Step 4: verify the model is actually cached. POST can return 200 | COMMENT |
| 18 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ods/bin/ods-host-agent.py | 577 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 1575 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 2032 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 2533 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 2972 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 3021 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 3159 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 3402 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 3626 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 3709 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 3860 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 3990 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 4266 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 8650 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 8825 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 9449 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 9752 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 10568 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 11012 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 11027 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 11896 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 12039 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 4555 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 4899 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 5071 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 5315 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 5466 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 5816 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 6350 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 6537 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 6599 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 7215 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 7373 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 8495 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 6367 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 7647 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 6746 | CODE | |
| LOW | ods/bin/ods-host-agent.py | 6854 | CODE | |
| LOW | ods/bin/model_switchboard/state.py | 99 | CODE | |
| LOW | ods/tests/dashboard-load-test.py | 31 | CODE | |
| LOW | ods/tests/dashboard-load-test.py | 70 | 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/tests/contracts/test-network-exposure-contracts.py | 31 | 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 | 794 | CODE | |
| LOW | ods/extensions/services/ape/main.py | 1015 | CODE | |
| LOW | ods/extensions/services/dashboard-api/hermes_bridge.py | 283 | CODE | |
| LOW | ods/extensions/services/dashboard-api/hermes_bridge.py | 353 | CODE | |
| LOW | ods/extensions/services/dashboard-api/config.py | 297 | CODE | |
| LOW | ods/extensions/services/dashboard-api/config.py | 586 | CODE | |
| LOW | ods/extensions/services/dashboard-api/config.py | 680 | CODE | |
| LOW | ods/extensions/services/dashboard-api/settings.py | 244 | CODE | |
| LOW | ods/extensions/services/dashboard-api/settings.py | 327 | CODE | |
| LOW | ods/extensions/services/dashboard-api/settings.py | 447 | CODE | |
| LOW | …xtensions/services/dashboard-api/performance_oracle.py | 328 | CODE | |
| LOW | …xtensions/services/dashboard-api/performance_oracle.py | 1267 | CODE | |
| 90 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 | 112 | # Test RAG test endpoint | COMMENT |
| MEDIUM | ods/tests/test-issue-to-pr-security.sh | 30 | # Extract the implement job block (from ' implement:' to the start of ' guardrails:') | COMMENT |
| MEDIUM | ods/tests/contracts/test-installer-contracts.sh | 408 | # 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 | 2566 | # the 8k context window. OpenCode hits the same wall. | COMMENT |
| MEDIUM⚡ | ods/scripts/session-cleanup.sh | 12 | # 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/env-generator.sh | 303 | # Backfill the TEI/RAG contract without replacing persisted operator | COMMENT |
| MEDIUM | ods/installers/macos/lib/env-generator.sh | 628 | #=== Embeddings / 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 | 226 | # 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/06-directories.sh | 1022 | #=== Embeddings / RAG === | 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 | 123 | # ── OpenCode (local agentic coding platform) ── | COMMENT |
| MEDIUM | ods/installers/phases/12-health.sh | 379 | # Perplexica auto-config: seed chat model + embedding model on first boot. | 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 | 7 | # This file is a template. The installer (06-directories.sh) generates | COMMENT |
| MEDIUM | ods/tests/test-migrate-config.sh | 164 | # Create the mock validator in the temp dir and point migrate-config.sh at | COMMENT |
| MEDIUM | ods/tests/test-windows-cli-model.sh | 145 | # Create a failing docker stub (batch file for Windows execution) | 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-preflight-resolver-bug.sh | 19 | # Create a mock python-cmd.sh | COMMENT |
| MEDIUM | ods/tests/test-preflight-resolver-bug.sh | 29 | # Create a mock python script that preflight-engine.sh should run | COMMENT |
| MEDIUM | ods/tests/test-doctor-command.sh | 123 | # Create a mock report with failures | COMMENT |
| MEDIUM | ods/tests/test-preflight-dashboard-port.sh | 22 | # Create a temporary directory for stubs | 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/tests/test-extension-runtime-check.sh | 133 | # Create a mock bin directory with stub docker and curl executables | 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 | 475 | # Create a broken user extension directory (no compose.yaml or compose.yaml.disabled) | COMMENT |
| MEDIUM | …nsions/services/dashboard-api/tests/test_extensions.py | 2744 | # Create a real file and symlink compose.yaml to it | COMMENT |
| MEDIUM | …nsions/services/dashboard-api/tests/test_extensions.py | 2766 | # 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 | 85 | # 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 | 86 | # 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 | 297 | # This file is sourced by install-core.sh under `set -e`. Keep the phase's | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | install.sh | 16 | # Check if ods directory exists | COMMENT |
| LOW | ods/ods-backup.sh | 691 | # 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 | 226 | # 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 | 69 | # Check if values are hardcoded (static string detection) | COMMENT |
| LOW | ods/tests/test-phase-c-p1.sh | 157 | # Check if settings endpoint returns data | COMMENT |
| LOW | ods/tests/test-phase-c-p1.sh | 176 | # 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 | 396 | # Check if it's defined anywhere else | COMMENT |
| LOW | …xtensions/services/dashboard-api/routers/extensions.py | 2486 | # Check if service is still enabled (built-in or user extension) | COMMENT |
| LOW | …nsions/services/dashboard-api/tests/test_extensions.py | 3295 | # Set updated_at to far in the past (well over 1 hour) | COMMENT |
| LOW | ods/extensions/services/token-spy/db_postgres.py | 74 | # Check if tenant exists | COMMENT |
| LOW⚡ | ods/extensions/services/token-spy/main.py | 1520 | # 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 | 251 | # 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 | 147 | # 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 | 392 | # 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 | 2223 | # Check if process died | COMMENT |
| LOW | ods/installers/macos/install-macos.sh | 2298 | # Check if "apple" is not listed but service works on CPU | 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 | 229 | # Check if a package is available in the repos | COMMENT |
| LOW | ods/installers/lib/background-tasks.sh | 99 | # Check if process is still running | COMMENT |
| LOW | ods/installers/lib/background-tasks.sh | 177 | # 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 | 701 | # Check if model exists and verify integrity | COMMENT |
| LOW | ods/installers/phases/02-detection.sh | 240 | # Check if upgrade succeeded | COMMENT |
| LOW | .github/workflows/autonomous-code-scanner.yml | 363 | # Check if budget exceeded | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | ods/bin/ods-host-agent.py | 6377 | # Step 1: Setup hook (if requested). The helper is a no-op | STRING |
| LOW⚡ | ods/bin/ods-host-agent.py | 6386 | # Step 2: Pull (best-effort — failure is non-fatal if cached image exists). | STRING |
| LOW⚡ | ods/bin/ods-host-agent.py | 6502 | # Step 4: Success | STRING |
| LOW⚡ | ods/bin/ods-host-agent.py | 6505 | # Step 5: Post-install core recreate (best-effort, non-fatal). | STRING |
| LOW | ods/bin/ods-host-agent.py | 5406 | # Step 1: resolve and verify this is a Wi-Fi profile. Use -t for | STRING |
| LOW | ods/bin/ods-host-agent.py | 5446 | # Step 2: type-confirmed Wi-Fi → safe to delete. | STRING |
| LOW | ods/bin/ods-host-agent.py | 6424 | # Step 3: Start | STRING |
| 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 | 3229 | # Step 2: skip if already cached. | COMMENT |
| LOW⚡ | ods/installers/macos/install-macos.sh | 3233 | # Step 3: POST to trigger download. | COMMENT |
| LOW⚡ | ods/installers/macos/install-macos.sh | 3237 | # Step 4: verify the model is actually cached. | COMMENT |
| LOW | ods/installers/macos/install-macos.sh | 3216 | # 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 | 631 | # Step 2: Ensure a driver package is installed | COMMENT |
| LOW | ods/installers/lib/detection.sh | 663 | # Step 3: Try loading the module — see why it fails | COMMENT |
| LOW⚡ | ods/installers/lib/detection.sh | 677 | # Step 4: If it's not a Secure Boot issue, bail out | COMMENT |
| LOW⚡ | ods/installers/lib/detection.sh | 683 | # Step 5: Secure Boot is blocking the module — ensure it's properly signed | COMMENT |
| LOW | ods/installers/lib/detection.sh | 755 | # Step 6: Try loading — if MOK key is already enrolled, this works immediately | COMMENT |
| LOW | ods/installers/lib/detection.sh | 766 | # Step 7: MOK key needs firmware enrollment — one reboot required | COMMENT |
| LOW⚡ | ods/installers/phases/11-services.sh | 1217 | # Step 1: start any containers already in Created state | COMMENT |
| LOW⚡ | ods/installers/phases/11-services.sh | 1219 | # Step 2: wait for services to stabilize, then compose pass | COMMENT |
| LOW⚡ | ods/installers/phases/11-services.sh | 1222 | # Step 3: catch any stragglers from the second pass | COMMENT |
| LOW | ods/installers/phases/12-health.sh | 580 | # Step 1: wait briefly for the models API to be ready. Whisper's /health | COMMENT |
| LOW⚡ | ods/installers/phases/12-health.sh | 595 | # Step 2: skip download if already cached. | COMMENT |
| LOW⚡ | ods/installers/phases/12-health.sh | 599 | # Step 3: POST to trigger download. Log stdout/stderr to install log. | COMMENT |
| LOW⚡ | ods/installers/phases/12-health.sh | 603 | # Step 4: verify the model is actually cached. POST can return 200 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ods/docker-compose.base.yml | 322 | # fleet harness can create/rotate/remove it without recreating the | COMMENT |
| MEDIUM | ods/config/openclaw/inject-token.js | 87 | // (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-atomic-env-writes.sh | 205 | # shared implementation rather than reimplementing it in this harness. | 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 | ods/tests/test-windows-cli-enable-disable.sh | 570 | # Sanity: every function we asked for made it into the harness. | COMMENT |
| MEDIUM⚡ | …tests/contracts/test-windows-hermes-config-patching.sh | 131 | # delegated Windows installer. The fleet harness and public docs call the | COMMENT |
| MEDIUM | ods/extensions/services/dashboard-api/config.py | 74 | # camelCase alias: the fleet model-ui harness gates required probes on llm.swapSafe | 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 | 169 | # the test harness — but assert only the structural contract here so | COMMENT |
| MEDIUM⚡ | …ns/services/dashboard-api/tests/test_setup_sentinel.py | 170 | # this test stays robust against fixture changes. | COMMENT |
| MEDIUM | ods/scripts/bootstrap-upgrade.sh | 2222 | # active so the UI/harness do not require a manual `ods restart`. | COMMENT |
| MEDIUM⚡ | ods/scripts/validate-env.sh | 90 | # .env parsing (robust) | COMMENT |
| 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/bin/model_switchboard/reconciler.py | 144 | __all__ = ["PHASES", "run_runtime_activation", "result"] | CODE |
| LOW | ods/bin/model_switchboard/__init__.py | 22 | __all__ = [ | CODE |
| LOW | ods/bin/remote_provider/egress.py | 406 | __all__ = [ | CODE |
| LOW | ods/bin/remote_provider/reconciler.py | 129 | __all__ = [ | CODE |
| LOW | ods/bin/remote_provider/transport.py | 201 | __all__ = [ | CODE |
| LOW | ods/bin/remote_provider/__init__.py | 81 | __all__ = [ | CODE |
| LOW | ods/bin/remote_provider/ssh_supervisor.py | 115 | __all__ = [ | CODE |
| LOW | ods/bin/remote_provider/lifecycle.py | 258 | __all__ = [ | CODE |
| LOW | ods/bin/remote_provider/probe.py | 248 | __all__ = [ | CODE |
| LOW | ods/bin/remote_provider/egress_probe.py | 48 | __all__ = [ | CODE |
| LOW | ods/extensions/services/dashboard-api/hermes_bridge.py | 41 | logger = logging.getLogger(__name__) | CODE |
| LOW | ods/extensions/services/dashboard-api/config.py | 15 | 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 | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | ods/extensions/services/dashboard-api/main.py | 136 | logger = logging.getLogger(__name__) | CODE |
| LOW | ods/extensions/services/dashboard-api/helpers.py | 67 | logger = logging.getLogger(__name__) | CODE |
| LOW | ods/extensions/services/dashboard-api/helpers.py | 611 | 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 | 61 | logger = logging.getLogger(__name__) | CODE |
| LOW | …s/extensions/services/dashboard-api/routers/updates.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | …tensions/services/dashboard-api/routers/model_state.py | 24 | 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 | 84 | 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 | 48 | logger = logging.getLogger(__name__) | CODE |
| LOW | …xtensions/services/dashboard-api/routers/magic_link.py | 74 | logger = logging.getLogger(__name__) | CODE |
| LOW | ods/extensions/services/dashboard-api/routers/setup.py | 26 | logger = logging.getLogger(__name__) | CODE |
| LOW | …extensions/services/dashboard-api/routers/tailscale.py | 36 | 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 | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | …rvices/dashboard-api/routers/remote_provider_status.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | ods/extensions/services/dashboard-api/routers/gpu.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | ods/extensions/services/dashboard-api/routers/talk.py | 36 | logger = logging.getLogger(__name__) | CODE |
| LOW | …ensions/services/dashboard-api/routers/model_routes.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | …s/extensions/services/dashboard-api/routers/privacy.py | 21 | 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 |
|---|---|---|---|---|
| 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 | 145 | "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 | 78 | interpreter.llm.api_key = "fake_key" | CODE |
| LOW | …extensions/library/services/open-interpreter/server.py | 101 | 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 | 1367 | (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/bin/ods-host-agent.py | 9449 | CODE | |
| LOW | ods/extensions/services/dashboard-api/main.py | 1468 | CODE | |
| LOW | ods/extensions/services/dashboard-api/helpers.py | 296 | CODE | |
| LOW | ods/extensions/services/dashboard-api/routers/models.py | 1974 | CODE | |
| LOW | ods/extensions/services/dashboard-api/routers/models.py | 1981 | CODE | |
| LOW | ods/extensions/services/dashboard-api/routers/models.py | 2039 | CODE | |
| LOW | ods/extensions/services/dashboard-api/routers/models.py | 2075 | CODE | |
| LOW | …ns/services/dashboard-api/tests/test_model_activate.py | 430 | 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 |
|---|---|---|---|---|
| MEDIUM | …nsions/services/dashboard-api/tests/test_extensions.py | 3465 | CODE |
| 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 |