AI Slop Code Risk Monitor

Mintplex-Labs/anything-llm

SlopCodeMonitor badge for Mintplex-Labs/anything-llm Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

Stop renting your intelligence. Own it with AnythingLLM. Everything you need for a powerful local-first agent experience

1.0 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for Mintplex-Labs/anything-llm, a JavaScript project with 67,777 GitHub stars. SynthScan examined 304,879 lines of code across 1349 source files, recording 220 pattern matches distributed across 12 syntactic categories. The legacy adjusted pattern signal is 1.0 (Low pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

1.0
Adjusted Signal
1.0
Raw Pattern Score
100%
Time Factor
2026-10-30
Last Push
67.8K
Stars
JavaScript
Language
304.9K
Lines of Code
1.3K
Files
220
Pattern Hits
2026-10-31
Scan Date
0.00
HC Hit Rate

Risk Review · Payload v1

Use each vector to guide manual verification of the underlying findings.

Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.

Cognitive Ownership Risk 3.6/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 195 finding(s).

Hallucinated Dependency & Supply Chain Risk 0.5/100 · LOW

Are imports declared and package/API names verified? 9 finding(s).

Agent Over-Engineering Ratio 3.1/100 · LOW

Are wrappers, guards, and repeated structures necessary? 162 finding(s).

PR Review Velocity Impact 4.5/100 · LOW

Which changes need focused human review? 220 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 2HIGH 1MEDIUM 20LOW 197

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 220 distinct pattern matches across 12 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hyper-Verbose Identifiers146 hits · 146 pts
SeverityFileLineSnippetContext
LOWfrontend/src/EmbeddingProgressContext.jsx27export function useWorkspaceEmbeddingProgress(CODE
LOWfrontend/src/EmbeddingProgressContext.jsx64export function EmbeddingProgressProvider({ children }) {CODE
LOWfrontend/src/utils/session.js5export default async function validateSessionTokenForUser() {CODE
LOWfrontend/src/utils/chat/reasoningEffort.js37export function getSessionReasoningEffort(workspaceSlug, threadSlug = null) {CODE
LOWfrontend/src/utils/chat/reasoningEffort.js47export function setSessionReasoningEffort(workspaceSlug, threadSlug, effort) {CODE
LOWfrontend/src/utils/chat/markdown.js100function normalizeThoughtIndentation(text = "") {CODE
LOWfrontend/src/components/Sidebar/index.jsx210function WorkspaceAndThreadTooltips() {CODE
LOWfrontend/src/components/Sidebar/SearchBox/index.jsx190function ShortWidthNewWorkspaceButton({ user, showNewWsModal }) {CODE
LOW…ents/EmbeddingSelection/GenericOpenAiOptions/index.jsx5export default function GenericOpenAiEmbeddingOptions({ settings }) {CODE
LOW…ponents/EmbeddingSelection/OpenRouterOptions/index.jsx29function OpenRouterEmbeddingModelSelection({ settings }) {CODE
LOW…/components/EmbeddingSelection/OllamaOptions/index.jsx199function OllamaEmbeddingModelSelection({ settings, basePath = null }) {CODE
LOWfrontend/src/components/contexts/TTSProvider.jsx69export function emitAssistantMessageCompleteEvent(chatId) {CODE
LOWfrontend/src/components/contexts/TTSProvider.jsx83export function useWatchForAutoPlayAssistantTTSResponse() {CODE
LOWfrontend/src/components/CanViewChatHistory/index.jsx26export function CanViewChatHistoryProvider({ children }) {CODE
LOW…ManageWorkspace/Documents/WorkspaceDirectory/index.jsx451function WorkspaceDocumentTooltips() {CODE
LOW…pace/Documents/UploadFile/FileUploadProgress/index.jsx8function FileUploadProgressComponent({CODE
LOW…components/SpeechToText/GenericOpenAiOptions/index.jsx1export default function GenericOpenAiSpeechToTextOptions({ settings }) {CODE
LOW…/src/components/SpeechToText/DeepgramOptions/index.jsx4export default function DeepgramSpeechToTextOptions({ settings }) {CODE
LOW…/src/components/SpeechToText/DeepgramOptions/index.jsx34function DeepgramSttModelSelection({ apiKey, settings }) {CODE
LOW…/src/components/SpeechToText/LemonadeOptions/index.jsx9export default function LemonadeSpeechToTextOptions({ settings }) {CODE
LOW…/src/components/SpeechToText/LemonadeOptions/index.jsx131function LemonadeSTTModelSelection({ settings, basePath = null }) {CODE
LOW…nd/src/components/SpeechToText/OpenAiOptions/index.jsx4export default function OpenAiSpeechToTextOptions({ settings }) {CODE
LOW…ImageGenerationSelection/ImageModelSelection/index.jsx158function groupModelsByOrganization(models = []) {CODE
LOW…c/components/LLMSelection/FireworksAiOptions/index.jsx38function FireworksAiModelSelection({ apiKey, settings }) {CODE
LOW…components/LLMSelection/GenericOpenAiOptions/index.jsx95function GenericOpenAiModelSelection({CODE
LOW…criptionSelection/NativeTranscriptionOptions/index.jsx5export default function NativeTranscriptionOptions({ settings }) {CODE
LOW…/TranscriptionSelection/GenericOpenAiOptions/index.jsx1export default function GenericOpenAiWhisperOptions({ settings }) {CODE
LOWfrontend/src/components/lib/ModelTable/loading.jsx4export default function ModelTableLoadingSkeleton() {CODE
LOW…components/TextToSpeech/OpenAiGenericOptions/index.jsx3export default function OpenAiGenericTextToSpeechOptions({ settings }) {CODE
LOW…nd/src/components/TextToSpeech/OpenAiOptions/index.jsx7export default function OpenAiTextToSpeechOptions({ settings }) {CODE
LOWfrontend/src/components/WorkspaceChat/index.jsx199export function setEventDelegatorForCodeSnippets() {CODE
LOW…tainer/MemoriesSidebar/PersonalizationToggle/index.jsx26 async function handleAutoExtractionToggle(checked) {CODE
LOW…ceChat/ChatContainer/ChatHistory/PromptReply/index.jsx79function RenderAssistantChatContent({ message }) {CODE
LOW…hatContainer/ChatHistory/ToolApprovalRequest/index.jsx163function ToolApprovalResponseOption({CODE
LOW…hatContainer/ChatHistory/ToolApprovalRequest/index.jsx207function ToolApprovalResponseMessage({ approved }) {CODE
LOW…tory/HistoricalMessage/Actions/RenderMetrics/index.jsx78 function handleShowingMetricsEvent(e) {CODE
LOW…toricalMessage/HistoricalClarifyingQuestions/index.jsx9export default function HistoricalClarifyingQuestions({ surveys = [] }) {CODE
LOW…ainer/ChatHistory/CompletedReplyAnnouncement/index.jsx15export default function CompletedReplyAnnouncement({ history }) {CODE
LOW…ainer/ChatHistory/CompletedReplyAnnouncement/index.jsx34function useCompletedReplyAnnouncement(history) {CODE
LOW…aceChat/ChatContainer/PromptInput/LLMSelector/utils.js4export function autoScrollToSelectedLLMProvider(CODE
LOW…romptInput/ToolsMenu/Tabs/AgentSkills/skillRegistry.js55export function getSubSkillPreferenceKeys() {CODE
LOW…romptInput/ToolsMenu/Tabs/AgentSkills/skillRegistry.js90export function isSkillMultiUserSupported(skillKey) {CODE
LOW…mponents/VectorDBSelection/WeaviateDBOptions/index.jsx70function SelfHostedAdvancedSettings({ settings }) {CODE
LOWfrontend/src/hooks/useOnboardingComplete.js6export default function useRedirectToHomeOnOnboardingComplete() {CODE
LOWfrontend/src/hooks/useWebPushNotifications.js24export async function subscribeToPushNotifications(askToEnable = true) {CODE
LOWfrontend/src/hooks/useChatContainerQuickScroll.js8export default function useChatContainerQuickScroll() {CODE
LOWfrontend/src/hooks/useScrollActiveItemIntoView.js11export default function useScrollActiveItemIntoView({CODE
LOWfrontend/src/hooks/useProviderEndpointAutoDiscovery.js4export default function useProviderEndpointAutoDiscovery({CODE
LOW…rc/pages/GeneralSettings/EmbeddingPreference/index.jsx151export default function GeneralEmbeddingPreference() {CODE
LOW…neralSettings/CommunityHub/Trending/HubItems/index.jsx15function useCommunityHubExploreItems() {CODE
LOW…ages/GeneralSettings/CommunityHub/ImportItem/index.jsx70export default function CommunityHubImportItemFlow() {CODE
LOW…eneralSettings/CommunityHub/ImportItem/Steps/index.jsx47export function CommunityHubImportItemLayout({ setStep, children }) {CODE
LOW…/GeneralSettings/CommunityHub/Authentication/index.jsx12function useCommunityHubAuthentication() {CODE
LOW…/GeneralSettings/CommunityHub/Authentication/index.jsx97export default function CommunityHubAuthentication() {CODE
LOW…ages/GeneralSettings/TranscriptionPreference/index.jsx43export default function TranscriptionModelPreference() {CODE
LOW…serExtensionApiKey/BrowserExtensionApiKeyRow/index.jsx8export default function BrowserExtensionApiKeyRow({CODE
LOW…tensionApiKey/NewBrowserExtensionApiKeyModal/index.jsx12export default function NewBrowserExtensionApiKeyModal({CODE
LOW…/src/pages/GeneralSettings/ScheduledJobs/utils/cron.js407export function buildCronFromBuilderState(state) {CODE
LOW…es/GeneralSettings/ImageGenerationPreference/index.jsx82export default function ImageGenerationPreference() {CODE
LOW…eralSettings/EmbeddingTextSplitterPreference/index.jsx19export default function EmbeddingTextSplitterPreference() {CODE
86 more matches not shown…
Decorative Section Separators16 hits · 48 pts
SeverityFileLineSnippetContext
MEDIUMserver/utils/router/index.js59 // ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMserver/utils/router/index.js61 // ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMserver/utils/router/index.js101 // ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMserver/utils/router/index.js103 // ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMserver/utils/router/index.js191 // ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMserver/utils/router/index.js193 // ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMserver/utils/router/index.js236 // ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMserver/utils/router/index.js238 // ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMserver/utils/router/index.js294 // ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMserver/utils/router/index.js296 // ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMserver/utils/router/index.js416 // ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMserver/utils/router/index.js418 // ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMserver/utils/router/index.js518 // ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMserver/utils/router/index.js520 // ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMserver/jobs/helpers/memory-extraction-utils.js112// ── Phase 1: Observer ────────────────────────────────────────────────COMMENT
MEDIUMserver/jobs/helpers/memory-extraction-utils.js218// ── Phase 2: Reflector ───────────────────────────────────────────────COMMENT
Structural Annotation Overuse14 hits · 28 pts
SeverityFileLineSnippetContext
LOW⚡…ployments/aws/cloudformation/aws_https_instructions.md10## Step 1: Allocate and assign Elastic IP Address to your deployed EC2 instanceCOMMENT
LOW⚡…ployments/aws/cloudformation/aws_https_instructions.md14## Step 2: Configure DNS A record to resolve to the previously assigned EC2 instance via EIPCOMMENT
LOW⚡…ployments/aws/cloudformation/aws_https_instructions.md19## Step 3: Install and enable nginxCOMMENT
LOW⚡…ployments/aws/cloudformation/aws_https_instructions.md24## Step 4: Install certbotCOMMENT
LOW⚡…ployments/aws/cloudformation/aws_https_instructions.md32## Step 5: Configure temporary Inbound Traffic Rule for Security Group to certbot DNS verificationCOMMENT
LOW⚡…ployments/aws/cloudformation/aws_https_instructions.md35## Step 6: Comment out default http NGINX proxy configurationCOMMENT
LOW…ployments/aws/cloudformation/aws_https_instructions.md60## Step 7: Create simple http proxy configuration for AnythingLLMCOMMENT
LOW⚡…ployments/aws/cloudformation/aws_https_instructions.md96## Step 8: Test nginx http proxy config and restart nginx serviceCOMMENT
LOW⚡…ployments/aws/cloudformation/aws_https_instructions.md102## Step 9: Generate/install certCOMMENT
LOW⚡…ployments/aws/cloudformation/aws_https_instructions.md112## Step 10: Test Cert installationCOMMENT
LOWserver/utils/AiProviders/modelRouter/index.js55 // Step 1: Calculated rules (always re-evaluated, they're instant)COMMENT
LOWserver/utils/AiProviders/modelRouter/index.js67 // Step 2: LLM rules (cached to avoid expensive re-classification)COMMENT
LOWserver/utils/AiProviders/modelRouter/index.js82 // Step 3: No rule matched — check sticky routeCOMMENT
LOWserver/utils/AiProviders/modelRouter/index.js93 // Step 4: Sticky expired — use fallbackCOMMENT
Over-Commented Block21 hits · 21 pts
SeverityFileLineSnippetContext
LOWfrontend/src/locales/resources.js1// Looking for a language to translate AnythingLLM to?COMMENT
LOWfrontend/src/models/agentFlows.js81 // headers: {COMMENT
LOW…ployments/aws/cloudformation/aws_https_instructions.md41# listen 80;COMMENT
LOWcloud-deployments/helm/charts/anythingllm/values.yaml41COMMENT
LOWcloud-deployments/helm/charts/anythingllm/values.yaml61 # selector:COMMENT
LOWcloud-deployments/helm/charts/anythingllm/values.yaml81 name: ""COMMENT
LOWcloud-deployments/helm/charts/anythingllm/values.yaml101 # in order to have the right permissions on mounted volumesCOMMENT
LOWcloud-deployments/helm/charts/anythingllm/values.yaml121 UID: "1000"COMMENT
LOWcloud-deployments/helm/charts/anythingllm/values.yaml161 # List of rules and filters applied.COMMENT
LOWcloud-deployments/helm/charts/anythingllm/values.yaml221 port: 8888COMMENT
LOWcloud-deployments/helm/charts/anythingllm/values.yaml241nodeSelector: {}COMMENT
LOWcloud-deployments/helm/charts/anythingllm/values.yaml261# name: open-ai-api-key-secretCOMMENT
LOWserver/endpoints/agentFlows.js101 );COMMENT
LOWserver/endpoints/agentFlows.js121 // results: {COMMENT
LOWserver/utils/database/index.js1const { getGitVersion } = require("../../endpoints/utils");COMMENT
LOWserver/utils/agents/aibitat/utils/dedupe.js1// Some models may attempt to call an expensive or annoying function many times and in that case we will wantCOMMENT
LOWserver/utils/AiProviders/groq/index.js121 );COMMENT
LOWserver/utils/telegramBot/index.js61 "504",COMMENT
LOW.devcontainer/devcontainer.json1// For format details, see https://aka.ms/devcontainer.json. For config options, see theCOMMENT
LOW.github/workflows/build-and-push-image-semver.yaml81 # multiple attestations to multi-platform images. The second attachmentCOMMENT
LOW.github/workflows/build-and-push-image.yaml101 # VEX attestations are currently broken with docker scout when attachingCOMMENT
Hallucination Indicators2 hits · 20 pts
SeverityFileLineSnippetContext
CRITICAL…__/utils/agents/aibitat/plugins/generate-image.test.js89 const [, card] = aibitat.socket.send.mock.calls.find(CODE
CRITICAL…ils/AiProviders/embeddedLemonade/agentProvider.test.js116 agent._client.chat.completions.create.mockImplementation(async () => ({CODE
AI Slop Vocabulary2 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUM⚡frontend/public/embed/anythingllm-chat-widget.min.js37 */function M(t){for(var e="https://reactjs.org/docs/error-decoder.html?invariant="+t,n=1;n<arguments.length;n++)e+="&arCOMMENT
MEDIUM⚡frontend/public/embed/anythingllm-chat-widget.min.js37 */function M(t){for(var e="https://reactjs.org/docs/error-decoder.html?invariant="+t,n=1;n<arguments.length;n++)e+="&arCOMMENT
Verbosity Indicators6 hits · 9 pts
SeverityFileLineSnippetContext
LOWserver/utils/middleware/simpleSSOEnabled.js20 // If the multi-user mode response local is not set, we need to check if it's enabled.COMMENT
LOWserver/utils/AiProviders/modelRouter/index.js55 // Step 1: Calculated rules (always re-evaluated, they're instant)COMMENT
LOWserver/utils/AiProviders/modelRouter/index.js67 // Step 2: LLM rules (cached to avoid expensive re-classification)COMMENT
LOWserver/utils/AiProviders/modelRouter/index.js82 // Step 3: No rule matched — check sticky routeCOMMENT
LOWserver/utils/AiProviders/modelRouter/index.js93 // Step 4: Sticky expired — use fallbackCOMMENT
LOWserver/utils/helpers/admin/index.js4// When a user is updating or creating a user in multi-user, we need to check if theyCOMMENT
Fake / Example Data6 hits · 7 pts
SeverityFileLineSnippetContext
LOW⚡frontend/public/embed/anythingllm-chat-widget.min.js37 */function M(t){for(var e="https://reactjs.org/docs/error-decoder.html?invariant="+t,n=1;n<arguments.length;n++)e+="&arCOMMENT
LOWcollector/__tests__/processLink/options.test.js55 WhisperGenericOpenAiApiKey: "dummy-key",CODE
LOWserver/utils/agents/imported-manifest.schema.json68 "placeholder": {CODE
LOWserver/__tests__/utils/agents/toolReranker.test.js125 const injectedContext = "lorem ipsum dolor sit amet ".repeat(4000);CODE
LOWserver/__tests__/utils/agents/toolReranker.test.js125 const injectedContext = "lorem ipsum dolor sit amet ".repeat(4000);CODE
LOWserver/__tests__/utils/TextSplitter/index.test.js61 docAuthor: "John Doe",CODE
Redundant / Tautological Comments4 hits · 6 pts
SeverityFileLineSnippetContext
LOWdocker/docker-entrypoint.sh3# Check if STORAGE_DIR is setCOMMENT
LOWcloud-deployments/openshift/docker-entrypoint.sh13# Check if STORAGE_DIR is setCOMMENT
LOW.github/workflows/build-and-push-image-semver.yaml25 # Check if the secret for USERNAME is set (don't even check for the password)COMMENT
LOW.github/workflows/build-and-push-image.yaml44 # Check if the secret for USERNAME is set (don't even check for the password)COMMENT
Magic Placeholder Names1 hit · 5 pts
SeverityFileLineSnippetContext
HIGH…ponents/VectorDBSelection/ChromaCloudOptions/index.jsx13 placeholder="ck-your-api-key-here"CODE
Modern AI Meta-Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMfrontend/src/utils/chat/agent.js157 // If we get this message we know the provider supports agentic streamingCOMMENT
Slop Phrases1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMserver/endpoints/api/openai/index.js22 #swagger.description = 'Get all available "models" which are workspaces you can use for chatting.'COMMENT