User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
This report presents the forensic synthetic code analysis of open-webui/open-webui, a Python project with 145,339 GitHub stars. SynthScan v2.0 examined 444,044 lines of code across 985 source files, recording 2502 pattern matches distributed across 21 syntactic categories. The overall adjusted score of 6.3 places this repository in the Low 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 2502 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 |
|---|---|---|---|---|
| LOW | contribution_stats.py | 16 | except Exception: | CODE |
| MEDIUM | contribution_stats.py | 38 | print('Error: Are you in a git repository?') | CODE |
| LOW | contribution_stats.py | 59 | except Exception: | CODE |
| MEDIUM | backend/open_webui/functions.py | 291 | def stream_content(): | CODE |
| LOW | backend/open_webui/functions.py | 62 | except Exception as e: | CODE |
| LOW | backend/open_webui/functions.py | 96 | except Exception as e: | CODE |
| LOW | backend/open_webui/functions.py | 140 | except Exception as e: | CODE |
| LOW | backend/open_webui/functions.py | 171 | except Exception: | CODE |
| LOW | backend/open_webui/functions.py | 200 | except Exception as e: | CODE |
| LOW | backend/open_webui/functions.py | 249 | except Exception as e: | CODE |
| LOW | backend/open_webui/functions.py | 304 | except Exception as e: | CODE |
| LOW | backend/open_webui/functions.py | 331 | except Exception as e: | CODE |
| LOW⚡ | backend/open_webui/tasks.py | 40 | except Exception as e: | CODE |
| LOW⚡ | backend/open_webui/config.py | 103 | except Exception as e: | CODE |
| LOW⚡ | backend/open_webui/config.py | 105 | except Exception as e: | CODE |
| LOW⚡ | backend/open_webui/config.py | 114 | except Exception as e: | CODE |
| LOW⚡ | backend/open_webui/config.py | 122 | except Exception as e: | CODE |
| LOW⚡ | backend/open_webui/config.py | 130 | except Exception as e: | CODE |
| LOW⚡ | backend/open_webui/config.py | 138 | except Exception as e: | CODE |
| LOW⚡ | backend/open_webui/config.py | 538 | except Exception: | CODE |
| LOW⚡ | backend/open_webui/config.py | 548 | except Exception: | CODE |
| LOW⚡ | backend/open_webui/config.py | 558 | except Exception: | CODE |
| LOW⚡ | backend/open_webui/config.py | 568 | except Exception: | CODE |
| LOW⚡ | backend/open_webui/config.py | 667 | except Exception: | CODE |
| LOW⚡ | backend/open_webui/config.py | 677 | except Exception: | CODE |
| LOW⚡ | backend/open_webui/config.py | 687 | except Exception: | CODE |
| LOW⚡ | backend/open_webui/config.py | 697 | except Exception: | CODE |
| LOW⚡ | backend/open_webui/config.py | 711 | except Exception: | CODE |
| LOW⚡ | backend/open_webui/config.py | 721 | except Exception: | CODE |
| LOW⚡ | backend/open_webui/config.py | 731 | except Exception: | CODE |
| LOW⚡ | backend/open_webui/config.py | 744 | except Exception: | CODE |
| LOW⚡ | backend/open_webui/config.py | 754 | except Exception: | CODE |
| LOW⚡ | backend/open_webui/config.py | 764 | except Exception: | CODE |
| LOW⚡ | backend/open_webui/config.py | 774 | except Exception: | CODE |
| LOW | backend/open_webui/config.py | 74 | except Exception as e: | CODE |
| LOW | backend/open_webui/config.py | 212 | except Exception as e: | CODE |
| LOW | backend/open_webui/config.py | 355 | except Exception: | CODE |
| LOW | backend/open_webui/config.py | 373 | except Exception as e: | CODE |
| LOW | backend/open_webui/config.py | 392 | except Exception: | CODE |
| LOW | backend/open_webui/config.py | 582 | except Exception: | CODE |
| LOW | backend/open_webui/config.py | 1145 | except Exception as e: | STRING |
| LOW | backend/open_webui/config.py | 1631 | except Exception as e: | STRING |
| LOW | backend/open_webui/config.py | 1671 | except Exception as e: | STRING |
| LOW | backend/open_webui/config.py | 1679 | except Exception as e: | STRING |
| LOW | backend/open_webui/config.py | 2007 | except Exception as e: | STRING |
| LOW | backend/open_webui/config.py | 2106 | except Exception as e: | STRING |
| LOW | backend/open_webui/env.py | 55 | except Exception as exc: | CODE |
| LOW | backend/open_webui/env.py | 66 | except Exception: | CODE |
| LOW | backend/open_webui/env.py | 141 | except Exception: | CODE |
| LOW | backend/open_webui/env.py | 177 | except Exception: | CODE |
| LOW | backend/open_webui/env.py | 354 | except Exception: | CODE |
| LOW | backend/open_webui/env.py | 422 | except Exception: | CODE |
| LOW | backend/open_webui/env.py | 454 | except Exception: | CODE |
| LOW | backend/open_webui/env.py | 610 | except Exception: | CODE |
| LOW | backend/open_webui/env.py | 660 | except Exception: | CODE |
| LOW | backend/open_webui/env.py | 742 | except Exception as e: | CODE |
| LOW | backend/open_webui/env.py | 925 | except Exception: | STRING |
| LOW | backend/open_webui/env.py | 954 | except Exception: | STRING |
| LOW | backend/open_webui/env.py | 970 | except Exception: | STRING |
| LOW | backend/open_webui/env.py | 992 | except Exception: | STRING |
| 922 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/open_webui/functions.py | 52 | async def get_function_module_by_id(request: Request, pipe_id: str): | CODE |
| LOW | backend/open_webui/functions.py | 147 | async def generate_function_chat_completion(request, form_data, user, models: dict = {}): | CODE |
| LOW | backend/open_webui/tasks.py | 25 | async def redis_task_command_listener(app): | CODE |
| LOW | backend/open_webui/config.py | 82 | async def import_legacy_config_json(): | CODE |
| LOW | backend/open_webui/env.py | 515 | def _build_ssl_context_from_file(path: str) -> '_ssl.SSLContext | None': | CODE |
| LOW | backend/open_webui/events.py | 810 | async def migrate_legacy_webhook_config() -> list[dict[str, Any]]: | CODE |
| LOW | backend/open_webui/events.py | 1015 | def schedule_webhook_dispatch(app: Any, event: Event) -> None: | CODE |
| LOW | backend/open_webui/events.py | 1072 | def schedule_event_function_dispatch(app: Any, event: Event, request: Any | None = None) -> None: | CODE |
| LOW | backend/open_webui/events.py | 1118 | async def publish_model_provider_request_failed( | CODE |
| LOW | backend/open_webui/main.py | 1783 | async def list_tasks_by_chat_id_endpoint(request: Request, chat_id: str, user=Depends(get_verified_user)): | CODE |
| LOW | backend/open_webui/main.py | 1801 | async def stop_tasks_by_chat_id_endpoint(request: Request, chat_id: str, user=Depends(get_verified_user)): | CODE |
| LOW | backend/open_webui/main.py | 2167 | async def get_app_latest_release_version(user=Depends(get_verified_user)): | CODE |
| LOW | backend/open_webui/main.py | 534 | async def initialize_runtime_config(app: FastAPI): | STRING |
| LOW | backend/open_webui/main.py | 860 | def strip_provider_model_prefix(model_id: str, prefix_id: str | None) -> str: | STRING |
| LOW | backend/open_webui/main.py | 1329 | async def run_initial_title_generation(): | STRING |
| LOW | backend/open_webui/routers/functions.py | 434 | async def get_function_valves_by_id( | CODE |
| LOW | backend/open_webui/routers/functions.py | 460 | async def get_function_valves_spec_by_id( | CODE |
| LOW | backend/open_webui/routers/functions.py | 490 | async def update_function_valves_by_id( | CODE |
| LOW | backend/open_webui/routers/functions.py | 542 | async def get_function_user_valves_by_id( | CODE |
| LOW | backend/open_webui/routers/functions.py | 563 | async def get_function_user_valves_spec_by_id( | CODE |
| LOW | backend/open_webui/routers/functions.py | 588 | async def update_function_user_valves_by_id( | CODE |
| LOW | backend/open_webui/routers/files.py | 646 | async def get_file_data_content_by_id( | CODE |
| LOW | backend/open_webui/routers/files.py | 676 | async def update_file_data_content_by_id( | CODE |
| LOW | backend/open_webui/routers/files.py | 816 | async def get_html_file_content_by_id( | CODE |
| LOW⚡ | backend/open_webui/routers/terminals.py | 203 | async def _resolve_authenticated_connection(ws: WebSocket, server_id: str): | CODE |
| LOW | backend/open_webui/routers/configs.py | 314 | async def get_terminal_servers_config(request: Request, user=Depends(get_admin_user)): | CODE |
| LOW | backend/open_webui/routers/configs.py | 319 | async def set_terminal_servers_config( | CODE |
| LOW | backend/open_webui/routers/configs.py | 341 | async def verify_terminal_server_connection( | CODE |
| LOW | backend/open_webui/routers/configs.py | 416 | async def put_terminal_server_policy( | CODE |
| LOW | backend/open_webui/routers/configs.py | 451 | async def put_terminal_server_lifecycle( | CODE |
| LOW | backend/open_webui/routers/configs.py | 489 | async def refresh_terminal_server_terminals( | CODE |
| LOW | backend/open_webui/routers/configs.py | 536 | async def verify_tool_servers_config(request: Request, form_data: ToolServerConnection, user=Depends(get_admin_user)): | CODE |
| LOW | backend/open_webui/routers/configs.py | 689 | async def get_code_execution_config(request: Request, user=Depends(get_admin_user)): | CODE |
| LOW | backend/open_webui/routers/configs.py | 694 | async def set_code_execution_config( | CODE |
| LOW | backend/open_webui/routers/models.py | 51 | def _safe_static_redirect_path(url: str) -> str | None: | CODE |
| LOW | backend/open_webui/routers/models.py | 86 | async def _verify_knowledge_file_access( | CODE |
| LOW | backend/open_webui/routers/models.py | 756 | async def update_model_access_by_id( | CODE |
| LOW | backend/open_webui/routers/skills.py | 354 | async def update_skill_access_by_id( | CODE |
| LOW | backend/open_webui/routers/users.py | 263 | async def get_default_user_permissions(request: Request, user=Depends(get_admin_user)): | CODE |
| LOW | backend/open_webui/routers/users.py | 276 | async def update_default_user_permissions(request: Request, form_data: UserPermissions, user=Depends(get_admin_user)): | CODE |
| LOW | backend/open_webui/routers/users.py | 290 | async def get_default_user_permissions_defaults(user=Depends(get_admin_user)): | CODE |
| LOW | backend/open_webui/routers/users.py | 309 | async def get_user_settings_by_session_user( | CODE |
| LOW | backend/open_webui/routers/users.py | 322 | async def update_user_settings_by_session_user( | CODE |
| LOW | backend/open_webui/routers/users.py | 373 | async def get_user_status_by_session_user( | CODE |
| LOW | backend/open_webui/routers/users.py | 393 | async def update_user_status_by_session_user( | CODE |
| LOW | backend/open_webui/routers/users.py | 426 | async def get_user_info_by_session_user(user=Depends(get_verified_user), db: AsyncSession = Depends(get_async_session)): | CODE |
| LOW | backend/open_webui/routers/users.py | 437 | async def update_user_info_by_session_user( # PATCH-style merge | CODE |
| LOW | backend/open_webui/routers/users.py | 514 | async def get_user_oauth_sessions_by_id( | CODE |
| LOW | backend/open_webui/routers/users.py | 533 | async def get_user_profile_image_by_id(user_id: str, user=Depends(get_verified_user)): | CODE |
| LOW | backend/open_webui/routers/users.py | 580 | async def get_user_active_status_by_id( | CODE |
| LOW | backend/open_webui/routers/tools.py | 728 | async def get_tools_valves_spec_by_id( | CODE |
| LOW | backend/open_webui/routers/tools.py | 774 | async def update_tools_valves_by_id( | CODE |
| LOW | backend/open_webui/routers/tools.py | 839 | async def get_tools_user_valves_by_id( | CODE |
| LOW | backend/open_webui/routers/tools.py | 876 | async def get_tools_user_valves_spec_by_id( | CODE |
| LOW | backend/open_webui/routers/tools.py | 917 | async def update_tools_user_valves_by_id( | CODE |
| LOW | backend/open_webui/routers/prompts.py | 442 | async def update_prompt_access_by_id( | CODE |
| LOW | backend/open_webui/routers/prompts.py | 682 | async def delete_prompt_history_entry( | CODE |
| LOW | backend/open_webui/routers/auths.py | 984 | async def delete_oauth_session_by_provider( | CODE |
| LOW | backend/open_webui/routers/auths.py | 1340 | def _parse_oauth_update_value(field: str, value): | CODE |
| LOW | backend/open_webui/routers/auths.py | 1376 | async def _check_api_key_permission(request: Request, user, db: AsyncSession): | CODE |
| 429 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docker-update-models.sh | 4 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-update-models.sh | 6 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-ollama.sh | 4 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-ollama.sh | 6 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-cleanup.sh | 4 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-cleanup.sh | 6 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-run.sh | 4 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | docker-run.sh | 6 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-launcher.sh | 4 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-launcher.sh | 7 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | docker-compose-launcher.sh | 16 | # ── GPU detection ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docker-compose-launcher.sh | 35 | # ── Argument helpers ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docker-compose-launcher.sh | 69 | # ── Defaults ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docker-compose-launcher.sh | 82 | # ── Parse arguments ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docker-compose-launcher.sh | 100 | # ── Drop mode ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docker-compose-launcher.sh | 108 | # ── Build compose command ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docker-compose-launcher.sh | 144 | # ── Confirmation ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docker-compose-launcher.sh | 164 | # ── Launch ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | backend/start.sh | 4 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/start.sh | 8 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | backend/start.sh | 19 | # ── Playwright browser installation (if configured) ────────────────────────── | COMMENT |
| MEDIUM | backend/start.sh | 30 | # ── Secret key setup ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | backend/start.sh | 53 | # ── Ollama (bundled Docker image) ──────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | backend/start.sh | 60 | # ── CUDA library paths ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | backend/start.sh | 67 | # ── HuggingFace Space deployment ───────────────────────────────────────────── | COMMENT |
| MEDIUM | backend/start.sh | 97 | # ── Launch uvicorn ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | backend/open_webui/tasks.py | 44 | ### ------------------------------ | COMMENT |
| MEDIUM⚡ | backend/open_webui/tasks.py | 46 | ### ------------------------------ | COMMENT |
| MEDIUM⚡ | backend/open_webui/routers/terminals.py | 198 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | backend/open_webui/routers/terminals.py | 200 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | backend/open_webui/tools/builtin.py | 212 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/open_webui/tools/builtin.py | 214 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/open_webui/tools/builtin.py | 288 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/open_webui/tools/builtin.py | 290 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/open_webui/tools/builtin.py | 426 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/open_webui/tools/builtin.py | 428 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/open_webui/tools/builtin.py | 3017 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/open_webui/tools/builtin.py | 3019 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/open_webui/tools/builtin.py | 3347 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/open_webui/tools/builtin.py | 3349 | # ============================================================================= | COMMENT |
| MEDIUM | backend/open_webui/tools/builtin.py | 79 | # ============================================================================= | COMMENT |
| MEDIUM | backend/open_webui/tools/builtin.py | 81 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/open_webui/tools/builtin.py | 593 | # ============================================================================= | STRING |
| MEDIUM⚡ | backend/open_webui/tools/builtin.py | 595 | # ============================================================================= | STRING |
| MEDIUM⚡ | backend/open_webui/tools/builtin.py | 920 | # ============================================================================= | STRING |
| MEDIUM⚡ | backend/open_webui/tools/builtin.py | 922 | # ============================================================================= | STRING |
| MEDIUM⚡ | backend/open_webui/tools/builtin.py | 1198 | # ============================================================================= | STRING |
| MEDIUM⚡ | backend/open_webui/tools/builtin.py | 1200 | # ============================================================================= | STRING |
| MEDIUM⚡ | backend/open_webui/tools/builtin.py | 1351 | # ============================================================================= | STRING |
| MEDIUM⚡ | backend/open_webui/tools/builtin.py | 1353 | # ============================================================================= | STRING |
| MEDIUM⚡ | backend/open_webui/tools/builtin.py | 1634 | # ============================================================================= | STRING |
| MEDIUM⚡ | backend/open_webui/tools/builtin.py | 1636 | # ============================================================================= | STRING |
| MEDIUM⚡ | backend/open_webui/tools/builtin.py | 2812 | # ============================================================================= | STRING |
| MEDIUM⚡ | backend/open_webui/tools/builtin.py | 2814 | # ============================================================================= | STRING |
| MEDIUM⚡ | backend/open_webui/tools/builtin.py | 2872 | # ============================================================================= | STRING |
| MEDIUM⚡ | backend/open_webui/tools/builtin.py | 2874 | # ============================================================================= | STRING |
| MEDIUM | backend/open_webui/tools/knowledge_fs.py | 30 | # ============================================================================= | COMMENT |
| MEDIUM | backend/open_webui/tools/knowledge_fs.py | 32 | # ============================================================================= | COMMENT |
| MEDIUM | backend/open_webui/tools/knowledge_fs.py | 72 | # ============================================================================= | COMMENT |
| MEDIUM | backend/open_webui/tools/knowledge_fs.py | 74 | # ============================================================================= | COMMENT |
| 87 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/open_webui/functions.py | 8 | CODE | |
| LOW | backend/open_webui/functions.py | 8 | CODE | |
| LOW | backend/open_webui/functions.py | 8 | CODE | |
| LOW | backend/open_webui/functions.py | 8 | CODE | |
| LOW | backend/open_webui/functions.py | 8 | CODE | |
| LOW | backend/open_webui/functions.py | 8 | CODE | |
| LOW | backend/open_webui/functions.py | 8 | CODE | |
| LOW | backend/open_webui/functions.py | 19 | CODE | |
| LOW | backend/open_webui/functions.py | 22 | CODE | |
| LOW | backend/open_webui/functions.py | 32 | CODE | |
| LOW | backend/open_webui/functions.py | 32 | CODE | |
| LOW | backend/open_webui/functions.py | 32 | CODE | |
| LOW | backend/open_webui/functions.py | 43 | CODE | |
| LOW | backend/open_webui/tasks.py | 8 | CODE | |
| LOW | backend/open_webui/config.py | 1 | CODE | |
| LOW | backend/open_webui/config.py | 3 | CODE | |
| LOW | backend/open_webui/config.py | 10 | CODE | |
| LOW | backend/open_webui/config.py | 12 | CODE | |
| LOW | backend/open_webui/config.py | 12 | CODE | |
| LOW | backend/open_webui/config.py | 15 | CODE | |
| LOW | backend/open_webui/config.py | 20 | CODE | |
| LOW | backend/open_webui/config.py | 20 | CODE | |
| LOW | backend/open_webui/config.py | 20 | CODE | |
| LOW | backend/open_webui/config.py | 20 | CODE | |
| LOW | backend/open_webui/events.py | 1 | CODE | |
| LOW | backend/open_webui/constants.py | 1 | CODE | |
| LOW | backend/open_webui/__init__.py | 73 | CODE | |
| LOW | backend/open_webui/main.py | 1 | CODE | |
| LOW | backend/open_webui/routers/functions.py | 1 | CODE | |
| LOW | backend/open_webui/routers/functions.py | 4 | CODE | |
| LOW | backend/open_webui/routers/functions.py | 6 | CODE | |
| LOW | backend/open_webui/routers/functions.py | 7 | CODE | |
| LOW | backend/open_webui/routers/files.py | 32 | CODE | |
| LOW | backend/open_webui/routers/files.py | 40 | CODE | |
| LOW | backend/open_webui/routers/tasks.py | 2 | CODE | |
| LOW | backend/open_webui/routers/tasks.py | 5 | CODE | |
| LOW | backend/open_webui/routers/tasks.py | 6 | CODE | |
| LOW | backend/open_webui/routers/tasks.py | 7 | CODE | |
| LOW | backend/open_webui/routers/configs.py | 1 | CODE | |
| LOW | backend/open_webui/routers/configs.py | 3 | CODE | |
| LOW | backend/open_webui/routers/configs.py | 5 | CODE | |
| LOW | backend/open_webui/routers/configs.py | 14 | CODE | |
| LOW | backend/open_webui/routers/configs.py | 18 | CODE | |
| LOW | backend/open_webui/routers/models.py | 1 | CODE | |
| LOW | backend/open_webui/routers/models.py | 3 | CODE | |
| LOW | backend/open_webui/routers/models.py | 6 | CODE | |
| LOW | backend/open_webui/routers/models.py | 9 | CODE | |
| LOW | backend/open_webui/routers/models.py | 29 | CODE | |
| LOW | backend/open_webui/routers/skills.py | 22 | CODE | |
| LOW | backend/open_webui/routers/users.py | 1 | CODE | |
| LOW | backend/open_webui/routers/users.py | 6 | CODE | |
| LOW | backend/open_webui/routers/users.py | 7 | CODE | |
| LOW | backend/open_webui/routers/users.py | 19 | CODE | |
| LOW | backend/open_webui/routers/tools.py | 1 | CODE | |
| LOW | backend/open_webui/routers/tools.py | 6 | CODE | |
| LOW | backend/open_webui/routers/tools.py | 7 | CODE | |
| LOW | backend/open_webui/routers/tools.py | 19 | CODE | |
| LOW | backend/open_webui/routers/groups.py | 2 | CODE | |
| LOW | backend/open_webui/routers/groups.py | 3 | CODE | |
| LOW | backend/open_webui/routers/groups.py | 7 | CODE | |
| 289 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | contribution_stats.py | 42 | CODE | |
| LOW | backend/open_webui/functions.py | 71 | CODE | |
| LOW | backend/open_webui/main.py | 534 | CODE | |
| LOW | backend/open_webui/main.py | 867 | CODE | |
| LOW | backend/open_webui/main.py | 1009 | CODE | |
| LOW | backend/open_webui/main.py | 2249 | CODE | |
| LOW | backend/open_webui/main.py | 1473 | CODE | |
| LOW | backend/open_webui/routers/functions.py | 154 | CODE | |
| LOW | backend/open_webui/routers/files.py | 111 | CODE | |
| LOW | backend/open_webui/routers/files.py | 582 | CODE | |
| LOW | backend/open_webui/routers/files.py | 676 | CODE | |
| LOW | backend/open_webui/routers/files.py | 753 | CODE | |
| LOW | backend/open_webui/routers/files.py | 971 | CODE | |
| LOW | backend/open_webui/routers/files.py | 120 | CODE | |
| LOW | backend/open_webui/routers/files.py | 600 | CODE | |
| LOW | backend/open_webui/routers/terminals.py | 86 | CODE | |
| LOW | backend/open_webui/routers/terminals.py | 257 | CODE | |
| LOW | backend/open_webui/routers/terminals.py | 326 | CODE | |
| LOW | backend/open_webui/routers/terminals.py | 340 | CODE | |
| LOW | backend/open_webui/routers/configs.py | 231 | CODE | |
| LOW | backend/open_webui/routers/configs.py | 536 | CODE | |
| LOW | backend/open_webui/routers/models.py | 335 | CODE | |
| LOW | backend/open_webui/routers/models.py | 553 | CODE | |
| LOW | backend/open_webui/routers/users.py | 533 | CODE | |
| LOW | backend/open_webui/routers/users.py | 594 | CODE | |
| LOW | backend/open_webui/routers/tools.py | 67 | CODE | |
| LOW | backend/open_webui/routers/auths.py | 405 | CODE | |
| LOW | backend/open_webui/routers/auths.py | 654 | CODE | |
| LOW | backend/open_webui/routers/auths.py | 878 | CODE | |
| LOW | backend/open_webui/routers/calendar.py | 144 | CODE | |
| LOW | backend/open_webui/routers/openai.py | 152 | CODE | |
| LOW | backend/open_webui/routers/openai.py | 358 | CODE | |
| LOW | backend/open_webui/routers/openai.py | 431 | CODE | |
| LOW | backend/open_webui/routers/openai.py | 549 | CODE | |
| LOW | backend/open_webui/routers/openai.py | 629 | CODE | |
| LOW | backend/open_webui/routers/openai.py | 719 | CODE | |
| LOW | backend/open_webui/routers/openai.py | 928 | CODE | |
| LOW | backend/open_webui/routers/openai.py | 1070 | CODE | |
| LOW | backend/open_webui/routers/openai.py | 1105 | CODE | |
| LOW | backend/open_webui/routers/openai.py | 1355 | CODE | |
| LOW | backend/open_webui/routers/openai.py | 1482 | CODE | |
| LOW | backend/open_webui/routers/openai.py | 1591 | CODE | |
| LOW | backend/open_webui/routers/openai.py | 580 | CODE | |
| LOW | backend/open_webui/routers/scim.py | 48 | CODE | |
| LOW | backend/open_webui/routers/scim.py | 649 | CODE | |
| LOW | backend/open_webui/routers/scim.py | 717 | CODE | |
| LOW | backend/open_webui/routers/scim.py | 1015 | CODE | |
| LOW | backend/open_webui/routers/retrieval.py | 162 | CODE | |
| LOW | backend/open_webui/routers/retrieval.py | 1594 | CODE | |
| LOW | backend/open_webui/routers/retrieval.py | 1810 | CODE | |
| LOW | backend/open_webui/routers/retrieval.py | 2168 | CODE | |
| LOW | backend/open_webui/routers/retrieval.py | 2516 | CODE | |
| LOW | backend/open_webui/routers/retrieval.py | 2909 | CODE | |
| LOW | backend/open_webui/routers/images.py | 201 | CODE | |
| LOW | backend/open_webui/routers/images.py | 366 | CODE | |
| LOW | backend/open_webui/routers/images.py | 591 | CODE | |
| LOW | backend/open_webui/routers/images.py | 885 | CODE | |
| LOW | backend/open_webui/routers/chats.py | 172 | CODE | |
| LOW | backend/open_webui/routers/chats.py | 291 | CODE | |
| LOW | backend/open_webui/routers/chats.py | 436 | CODE | |
| 222 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/open_webui/functions.py | 83 | # Check if function is a manifold | COMMENT |
| LOW | backend/open_webui/functions.py | 213 | # Check if tool_ids is None | COMMENT |
| LOW | backend/open_webui/config.py | 2061 | # Check if the scheme is either http or https, or a custom scheme | STRING |
| LOW | backend/open_webui/env.py | 222 | # Check if the data directory exists in the package directory | COMMENT |
| LOW | backend/open_webui/env.py | 253 | # Check if the file exists | COMMENT |
| LOW | backend/open_webui/main.py | 1031 | # Check if user has access to the model | STRING |
| LOW | backend/open_webui/routers/files.py | 772 | # Check if the file already exists in the cache | COMMENT |
| LOW | backend/open_webui/routers/files.py | 839 | # Check if the file already exists in the cache | COMMENT |
| LOW | backend/open_webui/routers/files.py | 888 | # Check if the file already exists in the cache | COMMENT |
| LOW | backend/open_webui/routers/tasks.py | 151 | # Check if the user has a custom task model | COMMENT |
| LOW | backend/open_webui/routers/tasks.py | 230 | # Check if the user has a custom task model | COMMENT |
| LOW | backend/open_webui/routers/tasks.py | 300 | # Check if the user has a custom task model | COMMENT |
| LOW | backend/open_webui/routers/tasks.py | 364 | # Check if the user has a custom task model | COMMENT |
| LOW | backend/open_webui/routers/tasks.py | 446 | # Check if the user has a custom task model | COMMENT |
| LOW | backend/open_webui/routers/tasks.py | 527 | # Check if the user has a custom task model | COMMENT |
| LOW | backend/open_webui/routers/tasks.py | 591 | # Check if the user has a custom task model | COMMENT |
| LOW | backend/open_webui/routers/auths.py | 1169 | # Check if the input string matches the pattern | COMMENT |
| LOW | backend/open_webui/routers/auths.py | 1472 | # Check if provider is configured | COMMENT |
| LOW | backend/open_webui/routers/openai.py | 378 | # Check if the file already exists in the cache | COMMENT |
| LOW | backend/open_webui/routers/openai.py | 1154 | # Check if model is already in app state cache to avoid expensive get_all_models() call | COMMENT |
| LOW | backend/open_webui/routers/openai.py | 1184 | # Check if model is a reasoning model that needs special handling | COMMENT |
| LOW | backend/open_webui/routers/openai.py | 1268 | # Check if response is SSE | COMMENT |
| LOW | backend/open_webui/routers/openai.py | 1372 | # Check if model is already in app state cache to avoid expensive get_all_models() call | COMMENT |
| LOW | backend/open_webui/routers/openai.py | 1545 | # Check if response is SSE | COMMENT |
| LOW | backend/open_webui/routers/openai.py | 1666 | # Check if response is SSE | COMMENT |
| LOW | backend/open_webui/routers/scim.py | 259 | # Check if SCIM is enabled | COMMENT |
| LOW⚡ | backend/open_webui/routers/retrieval.py | 2912 | # Check if the directory exists | COMMENT |
| LOW | backend/open_webui/routers/retrieval.py | 1623 | # Check if entries with the same hash (metadata.hash) already exist | COMMENT |
| LOW | backend/open_webui/routers/retrieval.py | 1633 | # Check if the existing document belongs to the same file | COMMENT |
| LOW | backend/open_webui/routers/retrieval.py | 1863 | # Check if the file has already been processed and save the content | COMMENT |
| LOW | backend/open_webui/routers/chats.py | 481 | # Check if the user has permission to share/export chats | COMMENT |
| LOW | backend/open_webui/routers/chats.py | 530 | # Check if the user has permission to share/export chats | COMMENT |
| LOW | backend/open_webui/routers/chats.py | 1173 | # Check if user has access via access grants (shared_chat grants) | COMMENT |
| LOW | backend/open_webui/routers/channels.py | 1804 | # Check if it's url or base64 | COMMENT |
| LOW | backend/open_webui/routers/folders.py | 122 | # Check if creating a subfolder in a shared folder | COMMENT |
| LOW | backend/open_webui/routers/folders.py | 281 | # Check if folder with same name exists | COMMENT |
| LOW | backend/open_webui/routers/folders.py | 537 | # Check if it's a shared subfolder with write access | COMMENT |
| LOW | backend/open_webui/routers/pipelines.py | 227 | # Check if the uploaded file is a python file | COMMENT |
| LOW | backend/open_webui/tools/builtin.py | 1519 | # Check if user has access to the channel | STRING |
| LOW | backend/open_webui/utils/misc.py | 1133 | # Check if buffer exceeds limit | COMMENT |
| LOW | backend/open_webui/utils/files.py | 201 | # Check if the file already exists in the cache | COMMENT |
| LOW | backend/open_webui/utils/task.py | 19 | # Check if the user has a custom task model and use that model | COMMENT |
| LOW | backend/open_webui/utils/tools.py | 1293 | # Check if URL ends with .yaml or .yml to determine format | COMMENT |
| LOW | backend/open_webui/utils/payload.py | 229 | # Check if the content is a string (just a simple message) | COMMENT |
| LOW⚡ | backend/open_webui/utils/payload.py | 261 | # Iterate through the list of content items | COMMENT |
| LOW⚡ | backend/open_webui/utils/payload.py | 263 | # Check if it's a text type | COMMENT |
| LOW⚡ | backend/open_webui/utils/payload.py | 267 | # Check if it's an image URL type | COMMENT |
| LOW | backend/open_webui/utils/chat.py | 199 | # Check if user has access to the model | COMMENT |
| LOW | backend/open_webui/utils/rate_limit.py | 110 | # Increment bucket | COMMENT |
| LOW | backend/open_webui/utils/filter.py | 81 | # Check if the function has a file_handler variable | COMMENT |
| LOW⚡ | backend/open_webui/utils/middleware.py | 1362 | # Check if generated queries are empty | COMMENT |
| LOW⚡ | backend/open_webui/utils/middleware.py | 1366 | # Check if queries are not found | COMMENT |
| LOW⚡ | backend/open_webui/utils/middleware.py | 2780 | # Check if file context extraction is enabled for this model (default True) | COMMENT |
| LOW⚡ | backend/open_webui/utils/middleware.py | 4618 | # Check if citations are enabled for this model | COMMENT |
| LOW | backend/open_webui/utils/middleware.py | 1768 | # Check if all files are in full context mode | COMMENT |
| LOW | backend/open_webui/utils/middleware.py | 2343 | # Check if the request has chat_id and is inside of a folder | COMMENT |
| LOW | backend/open_webui/utils/middleware.py | 4229 | # Check if the tool call already exists | COMMENT |
| LOW | backend/open_webui/utils/middleware.py | 4402 | # Check if we're inside a tag-based block | COMMENT |
| LOW | backend/open_webui/utils/oauth.py | 1826 | # Check if the user exists | COMMENT |
| LOW | backend/open_webui/utils/oauth.py | 1831 | # Check if the user exists by email | COMMENT |
| 28 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | backend/open_webui/config.py | 514 | # this uses the model defined in the Dockerfile ENV variable. If you dont use docker or docker based deployments such as | COMMENT |
| MEDIUM | backend/open_webui/config.py | 824 | # Information Retrieval (RAG) | COMMENT |
| MEDIUM | backend/open_webui/config.py | 853 | # RAG Content Extraction | COMMENT |
| MEDIUM | backend/open_webui/routers/files.py | 712 | # collection and RAG returns both stale and current data (#20558). | COMMENT |
| MEDIUM | backend/open_webui/routers/retrieval.py | 134 | # not into hallucination, but deliver us from noise. | COMMENT |
| MEDIUM | backend/open_webui/routers/retrieval.py | 502 | # unloads current internal embedding model and clears VRAM cache | COMMENT |
| MEDIUM | backend/open_webui/routers/retrieval.py | 616 | # RAG settings | COMMENT |
| MEDIUM | backend/open_webui/routers/retrieval.py | 843 | # RAG settings | COMMENT |
| MEDIUM | backend/open_webui/routers/retrieval.py | 931 | # RAG settings | COMMENT |
| MEDIUM | backend/open_webui/routers/retrieval.py | 1317 | # RAG settings | COMMENT |
| MEDIUM | backend/open_webui/routers/memories.py | 298 | # same RELEVANCE_THRESHOLD used by RAG ensures only genuinely matching | COMMENT |
| MEDIUM | backend/open_webui/routers/channels.py | 1103 | # tools, filters, RAG — everything. The pipeline runs as | COMMENT |
| MEDIUM | backend/open_webui/routers/folders.py | 292 | # Folder files are consumed by chat middleware as RAG context. | COMMENT |
| MEDIUM | backend/open_webui/utils/headers.py | 68 | # UA from the live request; fall back to metadata for detached RAG/tool calls. | COMMENT |
| MEDIUM⚡ | backend/open_webui/utils/middleware.py | 2790 | # Save the pre-RAG message state so the native tool call loop can | COMMENT |
| MEDIUM⚡ | backend/open_webui/utils/middleware.py | 2792 | # than a snapshot that already has the RAG template baked in. | COMMENT |
| MEDIUM⚡ | backend/open_webui/utils/middleware.py | 4623 | # Use the pre-RAG system content captured before the | COMMENT |
| MEDIUM⚡ | backend/open_webui/utils/middleware.py | 4625 | # This ensures restore truly undoes the RAG template. | COMMENT |
| MEDIUM⚡ | backend/open_webui/utils/middleware.py | 4854 | # Restoring to pre-RAG original prevents duplicating | COMMENT |
| MEDIUM⚡ | backend/open_webui/utils/middleware.py | 4855 | # the RAG template across file and tool sources. | COMMENT |
| MEDIUM⚡ | backend/open_webui/utils/middleware.py | 4858 | # Restore pre-RAG message state before re-applying | COMMENT |
| MEDIUM⚡ | backend/open_webui/utils/middleware.py | 4859 | # to prevent RAG template duplication. | COMMENT |
| MEDIUM | backend/open_webui/utils/middleware.py | 2369 | # Native FC: skip RAG injection, builtin tools | COMMENT |
| MEDIUM | backend/open_webui/utils/middleware.py | 2457 | # Skip forced RAG web search when native FC is enabled - model can use web_search tool | COMMENT |
| MEDIUM | backend/open_webui/retrieval/utils.py | 1087 | # Deferred so a missing local model degrades RAG instead of crashing boot. | COMMENT |
| MEDIUM | …c/lib/components/admin/Functions/FunctionEditor.svelte | 273 | # This is where you can add your custom pipelines like RAG. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | backend/open_webui/tasks.py | 109 | task = asyncio.create_task(coroutine) # Create the task | CODE |
| MEDIUM | backend/open_webui/main.py | 359 | # Creating a mock request object to pass to get_all_models | STRING |
| MEDIUM | backend/open_webui/routers/files.py | 901 | # Create a generator that encodes the file content | COMMENT |
| MEDIUM | backend/open_webui/routers/retrieval.py | 2638 | # Create a single collection for all documents | COMMENT |
| MEDIUM | backend/open_webui/routers/chats.py | 1718 | # Create a new share | COMMENT |
| MEDIUM | backend/open_webui/internal/db.py | 249 | # Create a custom creator function that uses sqlcipher3 | COMMENT |
| MEDIUM | backend/open_webui/utils/misc.py | 663 | # Create a SHA256 hash of the final string | COMMENT |
| MEDIUM | backend/open_webui/utils/misc.py | 685 | # Create a new SHA-256 hash object | COMMENT |
| MEDIUM⚡ | backend/open_webui/utils/chat.py | 122 | # Define a background task to run the event generator | COMMENT |
| MEDIUM | backend/open_webui/utils/chat.py | 102 | # Define a generator to stream responses | COMMENT |
| MEDIUM | backend/open_webui/utils/plugin.py | 226 | # Create a temporary file and use it to define `__file__` so | COMMENT |
| MEDIUM | backend/open_webui/utils/plugin.py | 271 | # Create a temporary file and use it to define `__file__` so | COMMENT |
| MEDIUM | backend/open_webui/utils/middleware.py | 3632 | task_id = str(uuid4()) # Create a unique task ID. | CODE |
| MEDIUM | backend/open_webui/models/functions.py | 204 | # Create a dict for O(1) lookup | COMMENT |
| MEDIUM | backend/open_webui/retrieval/utils.py | 590 | # Create the output dictionary | COMMENT |
| MEDIUM | backend/open_webui/retrieval/vector/dbs/pinecone.py | 414 | # Create a zero vector for the dimension as Pinecone requires a vector | COMMENT |
| MEDIUM | backend/open_webui/retrieval/vector/dbs/pgvector.py | 148 | # Create the tables if they do not exist | STRING |
| MEDIUM | backend/open_webui/retrieval/vector/dbs/pgvector.py | 428 | # Create the values for query vectors | STRING |
| MEDIUM | backend/open_webui/retrieval/vector/dbs/oracle23ai.py | 89 | # Create the appropriate connection pool based on DB type | COMMENT |
| MEDIUM | backend/open_webui/socket/main.py | 214 | # Creating a list of sids to remove if they have timed out | COMMENT |
| MEDIUM | …c/lib/components/admin/Functions/FunctionEditor.svelte | 86 | # This function is the pre-processor for the API where various checks on the input can be performed. | STRING |
| MEDIUM | …c/lib/components/admin/Functions/FunctionEditor.svelte | 105 | # This function is the post-processor for the API, which can be used to modify the response | STRING |
| MEDIUM | …c/lib/components/admin/Functions/FunctionEditor.svelte | 189 | # This function is the pre-processor for the API where various checks on the input can be performed. | STRING |
| MEDIUM | …c/lib/components/admin/Functions/FunctionEditor.svelte | 206 | # This function is the post-processor for the API, which can be used to modify the response | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …ckend/open_webui/retrieval/vector/dbs/elasticsearch.py | 0 | note: this vector database integration is community-supported and maintained on a best-effort basis. | STRING |
| HIGH | …open_webui/retrieval/vector/dbs/qdrant_multitenancy.py | 0 | note: this vector database integration is community-supported and maintained on a best-effort basis. | STRING |
| HIGH | backend/open_webui/retrieval/vector/dbs/milvus.py | 0 | note: this vector database integration is community-supported and maintained on a best-effort basis. | STRING |
| HIGH | backend/open_webui/retrieval/vector/dbs/pinecone.py | 0 | note: this vector database integration is community-supported and maintained on a best-effort basis. | STRING |
| HIGH | backend/open_webui/retrieval/vector/dbs/opensearch.py | 0 | note: this vector database integration is community-supported and maintained on a best-effort basis. | STRING |
| HIGH | backend/open_webui/retrieval/vector/dbs/qdrant.py | 0 | note: this vector database integration is community-supported and maintained on a best-effort basis. | STRING |
| HIGH | backend/open_webui/retrieval/vector/dbs/s3vector.py | 0 | note: this vector database integration is community-supported and maintained on a best-effort basis. | STRING |
| HIGH | backend/open_webui/retrieval/vector/dbs/opengauss.py | 0 | note: this vector database integration is community-supported and maintained on a best-effort basis. | STRING |
| HIGH | backend/open_webui/retrieval/vector/dbs/weaviate.py | 0 | note: this vector database integration is community-supported and maintained on a best-effort basis. | STRING |
| HIGH | …open_webui/retrieval/vector/dbs/milvus_multitenancy.py | 0 | note: this vector database integration is community-supported and maintained on a best-effort basis. | STRING |
| HIGH | …kend/open_webui/retrieval/vector/dbs/mariadb_vector.py | 0 | note: this vector database integration is community-supported and maintained on a best-effort basis. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | backend/open_webui/retrieval/loaders/mineru.py | 187 | # Step 1: Request presigned upload URL | COMMENT |
| LOW⚡ | backend/open_webui/retrieval/loaders/mineru.py | 190 | # Step 2: Upload file to presigned URL | COMMENT |
| LOW⚡ | backend/open_webui/retrieval/loaders/mineru.py | 193 | # Step 3: Poll for results | COMMENT |
| LOW⚡ | backend/open_webui/retrieval/loaders/mineru.py | 196 | # Step 4: Download and extract markdown from ZIP | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 790 | // Step 1: Safely extract the response string | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 793 | // Step 2: Attempt to fix common JSON format issues like single quotes | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 796 | // Step 3: Find the relevant JSON block within the response | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 800 | // Step 4: Check if we found a valid JSON block (with both `{` and `}`) | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 804 | // Step 5: Parse the JSON block | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 807 | // Step 6: If there's a "tags" key, return the tags array; otherwise, return an empty array | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 862 | // Step 1: Safely extract the response string | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 865 | // Step 2: Attempt to fix common JSON format issues like single quotes | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 868 | // Step 3: Find the relevant JSON block within the response | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 872 | // Step 4: Check if we found a valid JSON block (with both `{` and `}`) | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 876 | // Step 5: Parse the JSON block | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 879 | // Step 6: If there's a "tags" key, return the tags array; otherwise, return an empty array | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 985 | // Step 1: Safely extract the response string | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 995 | // Step 5: Parse the JSON block | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 998 | // Step 6: If there's a "queries" key, return the queries array; otherwise, return an empty array | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 1068 | // Step 5: Parse the JSON block | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 1071 | // Step 6: If there's a "queries" key, return the queries array; otherwise, return an empty array | COMMENT |
| LOW | src/lib/components/notes/NoteEditor.svelte | 302 | // Step 1: Safely extract the response string | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | backend/open_webui/retrieval/loaders/mineru.py | 187 | # Step 1: Request presigned upload URL | COMMENT |
| LOW⚡ | backend/open_webui/retrieval/loaders/mineru.py | 190 | # Step 2: Upload file to presigned URL | COMMENT |
| LOW⚡ | backend/open_webui/retrieval/loaders/mineru.py | 193 | # Step 3: Poll for results | COMMENT |
| LOW⚡ | backend/open_webui/retrieval/loaders/mineru.py | 196 | # Step 4: Download and extract markdown from ZIP | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 790 | // Step 1: Safely extract the response string | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 793 | // Step 2: Attempt to fix common JSON format issues like single quotes | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 796 | // Step 3: Find the relevant JSON block within the response | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 800 | // Step 4: Check if we found a valid JSON block (with both `{` and `}`) | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 804 | // Step 5: Parse the JSON block | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 807 | // Step 6: If there's a "tags" key, return the tags array; otherwise, return an empty array | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 862 | // Step 1: Safely extract the response string | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 865 | // Step 2: Attempt to fix common JSON format issues like single quotes | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 868 | // Step 3: Find the relevant JSON block within the response | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 872 | // Step 4: Check if we found a valid JSON block (with both `{` and `}`) | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 876 | // Step 5: Parse the JSON block | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 879 | // Step 6: If there's a "tags" key, return the tags array; otherwise, return an empty array | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 985 | // Step 1: Safely extract the response string | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 995 | // Step 5: Parse the JSON block | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 998 | // Step 6: If there's a "queries" key, return the queries array; otherwise, return an empty array | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 1068 | // Step 5: Parse the JSON block | COMMENT |
| LOW⚡ | src/lib/apis/index.ts | 1071 | // Step 6: If there's a "queries" key, return the queries array; otherwise, return an empty array | COMMENT |
| LOW | src/lib/components/notes/NoteEditor.svelte | 302 | // Step 1: Safely extract the response string | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | backend/open_webui/storage/provider.py | 10 | from azure.core.exceptions import ResourceNotFoundError | CODE |
| CRITICAL | backend/open_webui/retrieval/vector/dbs/weaviate.py | 115 | vector_config=weaviate.classes.config.Configure.Vectors.self_provided(), | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/start.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | backend/open_webui/env.py | 781 | COMMENT | |
| LOW | backend/open_webui/alembic.ini | 1 | # A generic, single database configuration. | COMMENT |
| LOW | backend/open_webui/alembic.ini | 21 | # timezone = | COMMENT |
| LOW | backend/open_webui/alembic.ini | 41 | COMMENT | |
| LOW | backend/open_webui/alembic.ini | 61 | # sqlalchemy.url = REPLACE_WITH_DATABASE_URL | COMMENT |
| LOW | backend/open_webui/main.py | 481 | # | COMMENT |
| LOW | backend/open_webui/main.py | 501 | app.state.TERMINAL_SERVERS = [] | COMMENT |
| LOW | backend/open_webui/main.py | 661 | # | COMMENT |
| LOW | backend/open_webui/main.py | 681 | app.state.speech_speaker_embeddings_dataset = None | COMMENT |
| LOW | backend/open_webui/main.py | 1541 | pass | COMMENT |
| LOW | backend/open_webui/routers/evaluations.py | 41 | # Leaderboard Elo Rating Computation | COMMENT |
| LOW | backend/open_webui/routers/openai.py | 61 | COMMENT | |
| LOW | backend/open_webui/internal/db.py | 41 | COMMENT | |
| LOW | scripts/generate-sbom.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | src/lib/apis/ollama/index.ts | 521 | // }, | COMMENT |
| LOW | …/lib/components/common/RichTextInput/AutoCompletion.js | 141 | COMMENT | |
| LOW | …/lib/components/common/RichTextInput/AutoCompletion.js | 241 | // const { state, dispatch } = view; | COMMENT |
| LOW | src/routes/+layout.js | 1 | // if you want to generate a static html file | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | package-lock.json | 12739 | "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", | CODE |
| MEDIUM | backend/open_webui/utils/oauth.py | 884 | # TODO: Replace this logic with a more robust OAuth client registration validation | COMMENT |
| LOW | backend/open_webui/utils/mcp/client.py | 170 | # We simply call aclose() directly. If the task is cancelled, the | COMMENT |
| MEDIUM | backend/open_webui/retrieval/loaders/mistral.py | 730 | # MONITORING: Log comprehensive batch processing statistics | COMMENT |
| MEDIUM | src/lib/components/common/Textarea.svelte | 40 | // and it makes the fix 100% robust without relying on hardcoded CSS classes. | COMMENT |
| MEDIUM | src/lib/components/common/DropdownSub.svelte | 56 | // Vertical positioning with robust bounds clamping (shift method) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/open_webui/main.py | 1812 | CODE | |
| LOW | backend/open_webui/routers/models.py | 123 | CODE | |
| LOW | backend/open_webui/routers/evaluations.py | 405 | CODE | |
| LOW | backend/open_webui/routers/notes.py | 148 | CODE | |
| LOW | backend/open_webui/routers/prompts.py | 72 | CODE | |
| LOW | backend/open_webui/routers/analytics.py | 126 | CODE | |
| LOW | backend/open_webui/routers/analytics.py | 286 | CODE | |
| LOW | backend/open_webui/routers/knowledge.py | 1290 | CODE | |
| LOW | backend/open_webui/routers/ollama.py | 92 | CODE | |
| LOW | backend/open_webui/tools/builtin.py | 2089 | CODE | |
| LOW | backend/open_webui/tools/builtin.py | 3500 | CODE | |
| LOW | backend/open_webui/tools/builtin.py | 3627 | CODE | |
| LOW | backend/open_webui/utils/response.py | 220 | CODE | |
| LOW | backend/open_webui/utils/oauth.py | 1211 | CODE | |
| LOW | backend/open_webui/retrieval/utils.py | 597 | CODE | |
| LOW | backend/open_webui/retrieval/utils.py | 772 | CODE | |
| LOW | backend/open_webui/retrieval/web/utils.py | 293 | CODE | |
| LOW | backend/open_webui/retrieval/web/utils.py | 560 | CODE | |
| LOW | backend/open_webui/retrieval/loaders/datalab_marker.py | 15 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | backend/open_webui/routers/knowledge.py | 569 | async def _set_external_connections(connections: list[dict]) -> None: | CODE |
| LOW | backend/open_webui/utils/code_interpreter.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | backend/open_webui/utils/automations.py | 307 | async def _set_terminal_cwd(app, server_id: str, user, cwd: str, chat_id: str) -> None: | CODE |
| LOW⚡ | backend/open_webui/utils/telemetry/metrics.py | 53 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/open_webui/utils/telemetry/instrumentors.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/open_webui/models/users.py | 629 | async def update_last_active_by_id(self, id: str, db: AsyncSession | None = None) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | backend/open_webui/retrieval/vector/dbs/oracle23ai.py | 355 | Handle Decimal objects for JSON serialization. Args: obj: Object to serialize Ret | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/lib/workers/pyodide.worker.ts | 217 | print(f"data:image/png;base64,{img_str}") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/generate-sbom.sh | 13 | # Usage: | COMMENT |
| LOW | src/lib/components/common/RichTextInput.svelte | 727 | // Usage example | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/lib/components/workspace/Tools/ToolkitEditor.svelte | 62 | # Add your custom tools using pure Python code here, make sure to add type hints and descriptions | COMMENT |
| MEDIUM | …c/lib/components/admin/Functions/FunctionEditor.svelte | 273 | # This is where you can add your custom pipelines like RAG. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/open_webui/models/auths.py | 22 | PLACEHOLDER_HASH = bcrypt.hashpw(b'placeholder', bcrypt.gensalt()).decode('utf-8') | CODE |
| LOW | backend/open_webui/retrieval/loaders/main.py | 207 | 'image_export_mode': 'placeholder', | CODE |