Skip to content

[Bug]: Image Upload Option Shown for Non-Vision Models #11321

Description

@JumpLink

What happened?

When using direct LLM model selection (not Agent Mode), LibreChat shows the "Upload to AI Provider" option for all models, even if they don't support vision capabilities. This leads to user errors when attempting to upload images to non-vision models.

Example:

  • User selects DeepSeek (via OpenRouter) - a non-vision model
  • LibreChat shows "Upload to AI Provider" option in the file upload menu
  • User uploads an image
  • Error occurs: "404 No endpoints found that support image input"

Expected behavior:

  • "Upload to AI Provider" option should only be shown when the selected model supports vision capabilities
  • For non-vision models, only "Upload as Text" should be available (if OCR is configured)
  • The validation should use the existing validateVisionModel() function from packages/data-provider/src/config.ts

Version Information

Click here to show logs

2026-01-12 21:46:50.097 |
2026-01-12 21:46:50.097 | > LibreChat@v0.8.2-rc1 backend
2026-01-12 21:46:50.097 | > cross-env NODE_ENV=production node api/server/index.js
2026-01-12 21:46:50.097 |
2026-01-12 21:46:52.268 | 2026-01-12 20:46:52 info: Mongo Connection options
2026-01-12 21:46:52.268 | 2026-01-12 20:46:52 info: {
2026-01-12 21:46:52.268 | "bufferCommands": false
2026-01-12 21:46:52.268 | }
2026-01-12 21:46:52.289 | 2026-01-12 20:46:52 info: Connected to MongoDB
2026-01-12 21:46:52.289 | 2026-01-12 20:46:52 info: [indexSync] Starting index synchronization check...
2026-01-12 21:46:52.432 | 2026-01-12 20:46:52 info: [getAppConfig] App configuration not initialized. Initializing AppService...
2026-01-12 21:46:52.442 | 2026-01-12 20:46:52 info: Custom config file loaded:
2026-01-12 21:46:52.442 | 2026-01-12 20:46:52 info: {
2026-01-12 21:46:52.442 | "version": "1.3.1",
2026-01-12 21:46:52.442 | "cache": true,
2026-01-12 21:46:52.442 | "interface": {
2026-01-12 21:46:52.442 | "customWelcome": "Hi {{user.name}}! Welcome to the AI Chat Interface powered by LibreChat",
2026-01-12 21:46:52.442 | "privacyPolicy": {
2026-01-12 21:46:52.442 | "externalUrl": "https://example.com/privacy",
2026-01-12 21:46:52.442 | "openNewTab": true
2026-01-12 21:46:52.442 | },
2026-01-12 21:46:52.442 | "termsOfService": {
2026-01-12 21:46:52.442 | "externalUrl": "https://example.com/terms",
2026-01-12 21:46:52.442 | "openNewTab": true,
2026-01-12 21:46:52.442 | "modalAcceptance": true,
2026-01-12 21:46:52.442 | "modalTitle": "Kleingedrucktes",
2026-01-12 21:46:52.442 | "modalContent": "# Nutzungsbedingungen\n\nWichtiger Hinweis zu KI-generierten Antworten\nAlle Antworten dieses KI-Systems sollten stets von Menschen überprüft werden. KI-generierte Inhalte können Fehler enthalten und sollten nicht als alleinige Quelle für wichtige Entscheidungen verwendet werden.\n\nDatenverarbeitung und Hosting\nWir bemühen uns, so viele Komponenten wie möglich selbst zu hosten. Aktuell nutzen wir noch externe Dienste wie OpenRouter, wodurch Daten derzeit an Server in den USA übertragen werden. Unser Ziel ist es, vollständig auf selbst gehostete oder europäische Dienste umzustellen.\n"
2026-01-12 21:46:52.442 | },
2026-01-12 21:46:52.442 | "endpointsMenu": true,
2026-01-12 21:46:52.442 | "modelSelect": true,
2026-01-12 21:46:52.442 | "parameters": true,
2026-01-12 21:46:52.442 | "sidePanel": true,
2026-01-12 21:46:52.442 | "presets": true,
2026-01-12 21:46:52.442 | "prompts": true,
2026-01-12 21:46:52.442 | "bookmarks": true,
2026-01-12 21:46:52.442 | "multiConvo": true,
2026-01-12 21:46:52.442 | "agents": true,
2026-01-12 21:46:52.442 | "peoplePicker": {
2026-01-12 21:46:52.442 | "users": true,
2026-01-12 21:46:52.442 | "groups": true,
2026-01-12 21:46:52.442 | "roles": true
2026-01-12 21:46:52.442 | },
2026-01-12 21:46:52.442 | "marketplace": {
2026-01-12 21:46:52.442 | "use": true
2026-01-12 21:46:52.442 | },
2026-01-12 21:46:52.442 | "fileCitations": true,
2026-01-12 21:46:52.442 | "fileSearch": true,
2026-01-12 21:46:52.442 | "search": true
2026-01-12 21:46:52.442 | },
2026-01-12 21:46:52.442 | "memory": {
2026-01-12 21:46:52.442 | "disabled": false,
2026-01-12 21:46:52.442 | "personalize": true,
2026-01-12 21:46:52.442 | "tokenLimit": 2000,
2026-01-12 21:46:52.442 | "messageWindowSize": 5,
2026-01-12 21:46:52.442 | "validKeys": [
2026-01-12 21:46:52.442 | "preferences",
2026-01-12 21:46:52.442 | "work_info",
2026-01-12 21:46:52.442 | "personal_info",
2026-01-12 21:46:52.442 | "projects",
2026-01-12 21:46:52.442 | "factcheck_info",
2026-01-12 21:46:52.442 | "research_context",
2026-01-12 21:46:52.442 | "sources",
2026-01-12 21:46:52.442 | "output_format",
2026-01-12 21:46:52.442 | "deadlines",
2026-01-12 21:46:52.442 | "expertise",
2026-01-12 21:46:52.442 | "results"
2026-01-12 21:46:52.442 | ],
2026-01-12 21:46:52.442 | "agent": {
2026-01-12 21:46:52.442 | "provider": "OpenRouter",
2026-01-12 21:46:52.442 | "model": "deepseek/deepseek-chat",
2026-01-12 21:46:52.442 | "instructions": "Store ONLY substantial, reusable info using validKeys categories. NEVER: greetings, casual chat, trivial mentions, obvious statements. Store: preferences (communication style, topics, workflow), work_info (role, org, responsibilities), personal_info (name, location - only if explicitly shared), projects (current research/investigations), factcheck_info (verification methods), research_context (background, related work), sources (preferred outlets), output_format (article style), deadlines (important dates), expertise (specializations), results (verified facts, conclusions). Must be reusable across conversations. Delete outdated/corrected info promptly. If only greetings/casual chat/no substantial info, END IMMEDIATELY without tools. UPDATE STRATEGY: Check existing memories first. If matching category/key exists, UPDATE with set_memory by merging old+new info. Only create new if no match. NEVER delete+recreate. Token limit: 2000 per value.\n",
2026-01-12 21:46:52.442 | "model_parameters": {
2026-01-12 21:46:52.442 | "temperature": 0.2,
2026-01-12 21:46:52.442 | "top_p": 0.8
2026-01-12 21:46:52.442 | }
2026-01-12 21:46:52.442 | }
2026-01-12 21:46:52.442 | },
2026-01-12 21:46:52.442 | "endpoints": {
2026-01-12 21:46:52.442 | "agents": {
2026-01-12 21:46:52.442 | "disableBuilder": false,
2026-01-12 21:46:52.442 | "capabilities": [
2026-01-12 21:46:52.442 | "execute_code",
2026-01-12 21:46:52.442 | "file_search",
2026-01-12 21:46:52.442 | "actions",
2026-01-12 21:46:52.442 | "artifacts",
2026-01-12 21:46:52.442 | "chain",
2026-01-12 21:46:52.442 | "context",
2026-01-12 21:46:52.442 | "ocr",
2026-01-12 21:46:52.442 | "tools",
2026-01-12 21:46:52.442 | "web_search"
2026-01-12 21:46:52.442 | ]
2026-01-12 21:46:52.442 | },
2026-01-12 21:46:52.442 | "custom": [
2026-01-12 21:46:52.442 | {
2026-01-12 21:46:52.442 | "name": "OpenRouter",
2026-01-12 21:46:52.442 | "apiKey": "${OPENROUTER_KEY}",
2026-01-12 21:46:52.442 | "baseURL": "${OPENROUTER_BASE_URL}",
2026-01-12 21:46:52.442 | "models": {
2026-01-12 21:46:52.442 | "default": [
2026-01-12 21:46:52.442 | "anthropic/claude-sonnet-4.5",
2026-01-12 21:46:52.442 | "deepseek/deepseek-v3.2",
2026-01-12 21:46:52.442 | "google/gemini-2.5-flash-lite",
2026-01-12 21:46:52.442 | "meta-llama/llama-3.3-70b-instruct",
2026-01-12 21:46:52.442 | "openai/gpt-5.2",
2026-01-12 21:46:52.442 | "xiaomi/mimo-v2-flash",
2026-01-12 21:46:52.442 | "deepseek/deepseek-chat",
2026-01-12 21:46:52.442 | "mistralai/mistral-large-2411",
2026-01-12 21:46:52.442 | "mistralai/mistral-nemo"
2026-01-12 21:46:52.442 | ],
2026-01-12 21:46:52.442 | "fetch": true
2026-01-12 21:46:52.442 | },
2026-01-12 21:46:52.442 | "titleConvo": true,
2026-01-12 21:46:52.442 | "summarize": true,
2026-01-12 21:46:52.442 | "headers": {
2026-01-12 21:46:52.442 | "HTTP-Referer": "${OPENROUTER_SITE_URL}",
2026-01-12 21:46:52.442 | "X-Title": "${OPENROUTER_APP_NAME}"
2026-01-12 21:46:52.442 | }
2026-01-12 21:46:52.442 | }
2026-01-12 21:46:52.442 | ]
2026-01-12 21:46:52.442 | },
2026-01-12 21:46:52.442 | "modelSpecs": {
2026-01-12 21:46:52.442 | "list": [
2026-01-12 21:46:52.442 | {
2026-01-12 21:46:52.442 | "name": "qwen2.5-vl-72b",
2026-01-12 21:46:52.442 | "label": "Qwen2.5-VL 72B",
2026-01-12 21:46:52.442 | "description": "Höchste Qualität für Gespräche und Bildverständnis. Kann Bilder analysieren und gleichzeitig natürlich chatten. Von Qwen.",
2026-01-12 21:46:52.442 | "group": "Vision Models (Open Source)",
2026-01-12 21:46:52.442 | "groupIcon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLWV5ZS1pY29uIGx1Y2lkZS1leWUiPjxwYXRoIGQ9Ik0yLjA2MiAxMi4zNDhhMSAxIDAgMCAxIDAtLjY5NiAxMC43NSAxMC43NSAwIDAgMSAxOS44NzYgMCAxIDEgMCAwIDEgMCAuNjk2IDEwLjc1IDEwLjc1IDAgMCAxLTE5Ljg3NiAwIi8+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMyIvPjwvc3ZnPg==",
2026-01-12 21:46:52.442 | "order": 1,
2026-01-12 21:46:52.442 | "preset": {
2026-01-12 21:46:52.442 | "endpoint": "OpenRouter",
2026-01-12 21:46:52.442 | "endpointType": "custom",
2026-01-12 21:46:52.442 | "model": "qwen/qwen2.5-vl-72b-instruct"
2026-01-12 21:46:52.442 | }
2026-01-12 21:46:52.442 | },
2026-01-12 21:46:52.442 | {
2026-01-12 21:46:52.442 | "name": "qwen2.5-vl-32b",
2026-01-12 21:46:52.442 | "label": "Qwen2.5-VL 32B",
2026-01-12 21:46:52.442 | "description": "Gute Balance aus Qualität und Geschwindigkeit. Versteht Bilder und führt natürliche Gespräche. Von Qwen.",
2026-01-12 21:46:52.442 | "group": "Vision Models (Open Source)",
2026-01-12 21:46:52.442 | "order": 2,
2026-01-12 21:46:52.442 | "preset": {
2026-01-12 21:46:52.442 | "endpoint": "OpenRouter",
2026-01-12 21:46:52.442 | "endpointType": "custom",
2026-01-12 21:46:52.442 | "model": "qwen/qwen2.5-vl-32b-instruct"
2026-01-12 21:46:52.442 | }
2026-01-12 21:46:52.442 | },
2026-01-12 21:46:52.442 | {
2026-01-12 21:46:52.442 | "name": "llama-3.2-vision-90b",
2026-01-12 21:46:52.442 | "label": "Llama 3.2 Vision 90B",
2026-01-12 21:46:52.442 | "description": "Sehr gute Gesprächsqualität mit Bildverständnis. Kann Bilder beschreiben und analysieren. Von Meta (Llama-Serie).",
2026-01-12 21:46:52.442 | "group": "Vision Models (Open Source)",
2026-01-12 21:46:52.442 | "order": 3,
2026-01-12 21:46:52.442 | "preset": {
2026-01-12 21:46:52.442 | "endpoint": "OpenRouter",
2026-01-12 21:46:52.442 | "endpointType": "custom",
2026-01-12 21:46:52.442 | "model": "meta-llama/llama-3.2-90b-vision-instruct"
2026-01-12 21:46:52.442 | }
2026-01-12 21:46:52.442 | },
2026-01-12 21:46:52.442 | {
2026-01-12 21:46:52.442 | "name": "google-gemini-2.5-flash-lite",
2026-01-12 21:46:52.442 | "label": "Gemini 2.5 Flash Lite",
2026-01-12 21:46:52.442 | "description": "Schnell und kostengünstig. Optimiert für schnelle Antworten bei guter Qualität. Unterstützt Vision. Von Google.",
2026-01-12 21:46:52.442 | "group": "Vision Models (Proprietary)",
2026-01-12 21:46:52.442 | "groupIcon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLWV5ZS1pY29uIGx1Y2lkZS1leWUiPjxwYXRoIGQ9Ik0yLjA2MiAxMi4zNDhhMSAxIDAgMCAxIDAtLjY5NiAxMC43NSAxMC43NSAwIDAgMSAxOS44NzYgMCAxIDEgMCAwIDEgMCAuNjk2IDEwLjc1IDEwLjc1IDAgMCAxLTE5Ljg3NiAwIi8+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMyIvPjwvc3ZnPg==",
2026-01-12 21:46:52.442 | "order": 1,
2026-01-12 21:46:52.442 | "preset": {
2026-01-12 21:46:52.442 | "endpoint": "OpenRouter",
2026-01-12 21:46:52.442 | "endpointType": "custom",
2026-01-12 21:46:52.442 | "model": "google/gemini-2.5-flash-lite"
2026-01-12 21:46:52.442 | }
2026-01-12 21:46:52.442 | },
2026-01-12 21:46:52.442 | {
2026-01-12 21:46:52.442 | "name": "claude-sonnet-4.5",
2026-01-12 21:46:52.442 | "label": "Claude Sonnet 4.5",
2026-01-12 21:46:52.442 | "description": "Eines der besten Modelle für komplexe Aufgaben und Programmierung. Optimiert für praktische Anwendungen. Unterstützt Vision und Tools. Von Anthropic.",
2026-01-12 21:46:52.442 | "group": "Universal Models (Proprietary)",
2026-01-12 21:46:52.442 | "groupIcon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLWJvdC1pY29uIGx1Y2lkZS1ib3QiPjxwYXRoIGQ9Ik0xMiA4VjRIOCIvPjxyZWN0IHdpZHRoPSIxNiIgaGVpZ2h0PSIxMiIgeD0iNCIgeT0iOCIgcng9IjIiLz48cGF0aCBkPSJNMiAxNGgyIi8+PHBhdGggZD0iTTIwIDE0aDIiLz48cGF0aCBkPSJNMTUgMTN2MiIvPjxwYXRoIGQ9Ik05IDEzdjIiLz48L3N2Zz4=",
2026-01-12 21:46:52.442 | "order": 1,
2026-01-12 21:46:52.442 | "webSearch": true,
2026-01-12 21:46:52.442 | "fileSearch": true,
2026-01-12 21:46:52.442 | "preset": {
2026-01-12 21:46:52.442 | "endpoint": "OpenRouter",
2026-01-12 21:46:52.442 | "endpointType": "custom",
2026-01-12 21:46:52.442 | "model": "anthropic/claude-sonnet-4.5"
2026-01-12 21:46:52.442 | }
2026-01-12 21:46:52.442 | },
2026-01-12 21:46:52.442 | {
2026-01-12 21:46:52.442 | "name": "llama-3.1-8b",
2026-01-12 21:46:52.442 | "label": "Llama 3.1 8B",
2026-01-12 21:46:52.442 | "description": "Schnell und effizient. Gute Wahl für schnelle Antworten. Von Meta (Llama-Serie).",
2026-01-12 21:46:52.442 | "group": "Text Models (Open Source)",
2026-01-12 21:46:52.442 | "groupIcon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLW1lc3NhZ2Utc3F1YXJlLWljb24gbHVjaWRlLW1lc3NhZ2Utc3F1YXJlIj48cGF0aCBkPSJNMjIgMTdhMiAyIDAgMCAxLTIgMkg2LjgyOGEyIDIgMCAwIDAtMS40MTQuNTg2bC0yLjIwMiAyLjIwMkEuNzEuNzEgMCAwIDEgMiAyMS4yODZWNWEyIDIgMCAwIDEgMi0yaDE2YTIgMiAwIDAgMSAyIDJ6Ii8+PC9zdmc+",
2026-01-12 21:46:52.442 | "order": 1,
2026-01-12 21:46:52.442 | "preset": {
2026-01-12 21:46:52.442 | "endpoint": "OpenRouter",
2026-01-12 21:46:52.442 | "endpointType": "custom",
2026-01-12 21:46:52.442 | "model": "meta-llama/llama-3.1-8b-instruct"
2026-01-12 21:46:52.442 | }
2026-01-12 21:46:52.442 | },
2026-01-12 21:46:52.442 | {
2026-01-12 21:46:52.442 | "name": "deepseek-v3.2",
2026-01-12 21:46:52.442 | "label": "DeepSeek V3.2",
2026-01-12 21:46:52.442 | "description": "Kann sehr lange Gespräche führen und komplexe Aufgaben lösen. Sehr gut im logischen Denken. Von DeepSeek.",
2026-01-12 21:46:52.442 | "group": "Text Models with Tools (Open Source)",
2026-01-12 21:46:52.442 | "groupIcon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLWJvdC1tZXNzYWdlLXNxdWFyZS1pY29uIGx1Y2lkZS1ib3QtbWVzc2FnZS1zcXVhcmUiPjxwYXRoIGQ9Ik0xMiA2VjJIOCIvPjxwYXRoIGQ9Ik0xNSAxMXYyIi8+PHBhdGggZD0iTTIgMTJoMiIvPjxwYXRoIGQ9Ik0yMCAxMmgyIi8+PHBhdGggZD0iTTIwIDE2YTIgMiAwIDAgMS0yIDJIOC44MjhhMiAyIDAgMCAwLTEuNDE0LjU4NmwtMi4yMDIgMi4yMDJBLjcxLjcxIDAgMCAxIDQgMjAuMjg2VjhhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAyeiIvPjxwYXRoIGQ9Ik05IDExdjIiLz48L3N2Zz4=",
2026-01-12 21:46:52.442 | "order": 1,
2026-01-12 21:46:52.442 | "default": true,
2026-01-12 21:46:52.442 | "webSearch": true,
2026-01-12 21:46:52.442 | "fileSearch": true,
2026-01-12 21:46:52.442 | "preset": {
2026-01-12 21:46:52.442 | "endpoint": "OpenRouter",
2026-01-12 21:46:52.442 | "endpointType": "custom",
2026-01-12 21:46:52.442 | "model": "deepseek/deepseek-v3.2"
2026-01-12 21:46:52.442 | }
2026-01-12 21:46:52.442 | },
2026-01-12 21:46:52.442 | {
2026-01-12 21:46:52.442 | "name": "llama-3.3-70b",
2026-01-12 21:46:52.442 | "label": "Llama 3.3 70B",
2026-01-12 21:46:52.442 | "description": "Sehr beliebt für allgemeine Gespräche und Aufgaben. Von Meta (Llama-Serie).",
2026-01-12 21:46:52.442 | "group": "Text Models with Tools (Open Source)",
2026-01-12 21:46:52.442 | "order": 2,
2026-01-12 21:46:52.442 | "webSearch": true,
2026-01-12 21:46:52.442 | "fileSearch": true,
2026-01-12 21:46:52.442 | "preset": {
2026-01-12 21:46:52.442 | "endpoint": "OpenRouter",
2026-01-12 21:46:52.442 | "endpointType": "custom",
2026-01-12 21:46:52.442 | "model": "meta-llama/llama-3.3-70b-instruct"
2026-01-12 21:46:52.442 | }
2026-01-12 21:46:52.442 | },
2026-01-12 21:46:52.442 | {
2026-01-12 21:46:52.442 | "name": "xiaomi-mimo-v2-flash",
2026-01-12 21:46:52.443 | "label": "MiMo-V2-Flash",
2026-01-12 21:46:52.443 | "description": "Kann sehr lange Gespräche führen. Besonders gut für Wissensthemen, Wissenschaft und Finanzen. Von Xiaomi.",
2026-01-12 21:46:52.443 | "group": "Text Models with Tools (Open Source)",
2026-01-12 21:46:52.443 | "order": 3,
2026-01-12 21:46:52.443 | "webSearch": true,
2026-01-12 21:46:52.443 | "fileSearch": true,
2026-01-12 21:46:52.443 | "preset": {
2026-01-12 21:46:52.443 | "endpoint": "OpenRouter",
2026-01-12 21:46:52.443 | "endpointType": "custom",
2026-01-12 21:46:52.443 | "model": "xiaomi/mimo-v2-flash"
2026-01-12 21:46:52.443 | }
2026-01-12 21:46:52.443 | },
2026-01-12 21:46:52.443 | {
2026-01-12 21:46:52.443 | "name": "deepseek-chat-67b",
2026-01-12 21:46:52.443 | "label": "DeepSeek Chat 67B",
2026-01-12 21:46:52.443 | "description": "Sehr beliebt, besonders gut für Programmierung und Code-Erstellung. Von DeepSeek.",
2026-01-12 21:46:52.443 | "group": "Text Models with Tools (Open Source)",
2026-01-12 21:46:52.443 | "order": 4,
2026-01-12 21:46:52.443 | "webSearch": true,
2026-01-12 21:46:52.443 | "fileSearch": true,
2026-01-12 21:46:52.443 | "preset": {
2026-01-12 21:46:52.443 | "endpoint": "OpenRouter",
2026-01-12 21:46:52.443 | "endpointType": "custom",
2026-01-12 21:46:52.443 | "model": "deepseek/deepseek-chat"
2026-01-12 21:46:52.443 | }
2026-01-12 21:46:52.443 | },
2026-01-12 21:46:52.443 | {
2026-01-12 21:46:52.443 | "name": "openai-gpt5-mini",
2026-01-12 21:46:52.443 | "label": "GPT-5 Mini",
2026-01-12 21:46:52.443 | "description": "Schnell und effizient, dabei hochwertige Antworten. Optimiert für Geschwindigkeit. Von OpenAI (GPT-5-Serie).",
2026-01-12 21:46:52.443 | "group": "Text Models (Proprietary)",
2026-01-12 21:46:52.443 | "groupIcon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLW1lc3NhZ2Utc3F1YXJlLWxvY2staWNvbiBsdWNpZGUtbWVzc2FnZS1zcXVhcmUtbG9jayI+PHBhdGggZD0iTTIyIDguNVY1YTIgMiAwIDAgMC0yLTJINGEyIDIgMCAwIDAtMiAydjE2LjI4NmEuNzEuNzEgMCAwIDAgMS4yMTIuNTAybDIuMjAyLTIuMjAyQTIgMiAwIDAgMSA2LjgyOCAxOUgxMCIvPjxwYXRoIGQ9Ik0yMCAxNXYtMmEyIDIgMCAwIDAtNCAwdjIiLz48cmVjdCB4PSIxNCIgeT0iMTUiIHdpZHRoPSI4IiBoZWlnaHQ9IjUiIHJ4PSIxIi8+PC9zdmc+",
2026-01-12 21:46:52.443 | "order": 1,
2026-01-12 21:46:52.443 | "preset": {
2026-01-12 21:46:52.443 | "endpoint": "OpenRouter",
2026-01-12 21:46:52.443 | "endpointType": "custom",
2026-01-12 21:46:52.443 | "model": "openai/gpt-5-mini"
2026-01-12 21:46:52.443 | }
2026-01-12 21:46:52.443 | },
2026-01-12 21:46:52.443 | {
2026-01-12 21:46:52.443 | "name": "mistral-nemo",
2026-01-12 21:46:52.443 | "label": "Mistral Nemo",
2026-01-12 21:46:52.443 | "description": "Unterstützt mehrere Sprachen. Von Mistral und NVIDIA. Europäisches Unternehmen (französisch).",
2026-01-12 21:46:52.443 | "group": "Text Models (Proprietary)",
2026-01-12 21:46:52.443 | "order": 2,
2026-01-12 21:46:52.443 | "preset": {
2026-01-12 21:46:52.443 | "endpoint": "OpenRouter",
2026-01-12 21:46:52.443 | "endpointType": "custom",
2026-01-12 21:46:52.443 | "model": "mistralai/mistral-nemo"
2026-01-12 21:46:52.443 | }
2026-01-12 21:46:52.443 | },
2026-01-12 21:46:52.443 | {
2026-01-12 21:46:52.443 | "name": "openai-gpt5-2",
2026-01-12 21:46:52.443 | "label": "GPT-5.2",
2026-01-12 21:46:52.443 | "description": "Sehr gut für komplexe Aufgaben und mehrstufige Problemlösung. Von OpenAI (GPT-5-Serie).",
2026-01-12 21:46:52.443 | "group": "Text Models with Tools (Proprietary)",
2026-01-12 21:46:52.443 | "groupIcon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLWJvdC1tZXNzYWdlLXNxdWFyZS1pY29uIGx1Y2lkZS1ib3QtbWVzc2FnZS1zcXVhcmUiPjxwYXRoIGQ9Ik0xMiA2VjJIOCIvPjxwYXRoIGQ9Ik0xNSAxMXYyIi8+PHBhdGggZD0iTTIgMTJoMiIvPjxwYXRoIGQ9Ik0yMCAxMmgyIi8+PHBhdGggZD0iTTIwIDE2YTIgMiAwIDAgMS0yIDJIOC44MjhhMiAyIDAgMCAwLTEuNDE0LjU4NmwtMi4yMDIgMi4yMDJBLjcxLjcxIDAgMCAxIDQgMjAuMjg2VjhhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAyeiIvPjxwYXRoIGQ9Ik05IDExdjIiLz48L3N2Zz4=",
2026-01-12 21:46:52.443 | "order": 1,
2026-01-12 21:46:52.443 | "webSearch": true,
2026-01-12 21:46:52.443 | "fileSearch": true,
2026-01-12 21:46:52.443 | "preset": {
2026-01-12 21:46:52.443 | "endpoint": "OpenRouter",
2026-01-12 21:46:52.443 | "endpointType": "custom",
2026-01-12 21:46:52.443 | "model": "openai/gpt-5.2"
2026-01-12 21:46:52.443 | }
2026-01-12 21:46:52.443 | },
2026-01-12 21:46:52.443 | {
2026-01-12 21:46:52.443 | "name": "mistral-large-2411",
2026-01-12 21:46:52.443 | "label": "Mistral Large 2411",
2026-01-12 21:46:52.443 | "description": "Sehr beliebt bei europäischen Nutzern. Von Mistral. Europäisches Unternehmen (französisch).",
2026-01-12 21:46:52.443 | "group": "Text Models with Tools (Proprietary)",
2026-01-12 21:46:52.443 | "order": 2,
2026-01-12 21:46:52.443 | "webSearch": true,
2026-01-12 21:46:52.443 | "fileSearch": true,
2026-01-12 21:46:52.443 | "preset": {
2026-01-12 21:46:52.443 | "endpoint": "OpenRouter",
2026-01-12 21:46:52.443 | "endpointType": "custom",
2026-01-12 21:46:52.443 | "model": "mistralai/mistral-large-2411"
2026-01-12 21:46:52.443 | }
2026-01-12 21:46:52.443 | },
2026-01-12 21:46:52.443 | {
2026-01-12 21:46:52.443 | "name": "z-ai-glm-4.7",
2026-01-12 21:46:52.443 | "label": "GLM 4.7",
2026-01-12 21:46:52.443 | "description": "Sehr gut im logischen Denken und komplexen Aufgaben. Fortgeschrittenes Sprachverständnis. Von Z.AI.",
2026-01-12 21:46:52.443 | "group": "Text Models with Tools (Proprietary)",
2026-01-12 21:46:52.443 | "order": 3,
2026-01-12 21:46:52.443 | "webSearch": true,
2026-01-12 21:46:52.443 | "fileSearch": true,
2026-01-12 21:46:52.443 | "preset": {
2026-01-12 21:46:52.443 | "endpoint": "OpenRouter",
2026-01-12 21:46:52.443 | "endpointType": "custom",
2026-01-12 21:46:52.443 | "model": "glm/glm-4.7"
2026-01-12 21:46:52.443 | }
2026-01-12 21:46:52.443 | }
2026-01-12 21:46:52.443 | ]
2026-01-12 21:46:52.443 | },
2026-01-12 21:46:52.443 | "webSearch": {
2026-01-12 21:46:52.443 | "enabled": true,
2026-01-12 21:46:52.443 | "searchProvider": "searxng",
2026-01-12 21:46:52.443 | "searxngInstanceUrl": "${LIBRECHAT_SEARXNG_URL}",
2026-01-12 21:46:52.443 | "searxngApiKey": "${LIBRECHAT_SEARXNG_API_KEY}",
2026-01-12 21:46:52.443 | "scraperProvider": "firecrawl",
2026-01-12 21:46:52.443 | "firecrawlApiKey": "${FIRECRAWL_API_KEY}",
2026-01-12 21:46:52.443 | "firecrawlApiUrl": "${FIRECRAWL_API_URL}",
2026-01-12 21:46:52.443 | "firecrawlVersion": "${FIRECRAWL_VERSION}",
2026-01-12 21:46:52.443 | "jinaApiKey": "${LIBRECHAT_JINA_API_KEY}",
2026-01-12 21:46:52.443 | "jinaApiUrl": "${LIBRECHAT_JINA_API_URL}",
2026-01-12 21:46:52.443 | "rerankerType": "jina",
2026-01-12 21:46:52.443 | "scraperTimeout": 7500,
2026-01-12 21:46:52.443 | "safeSearch": 1
2026-01-12 21:46:52.443 | },
2026-01-12 21:46:52.443 | "registration": {
2026-01-12 21:46:52.443 | "allowedDomains": [
2026-01-12 21:46:52.443 | "correctiv.org",
2026-01-12 21:46:52.443 | "faktenforum.org"
2026-01-12 21:46:52.443 | ]
2026-01-12 21:46:52.443 | },
2026-01-12 21:46:52.443 | "ocr": {
2026-01-12 21:46:52.443 | "mistralModel": "mistral-ocr-latest",
2026-01-12 21:46:52.443 | "apiKey": "${OCR_API_KEY}",
2026-01-12 21:46:52.443 | "baseURL": "${OCR_BASEURL}",
2026-01-12 21:46:52.443 | "strategy": "mistral_ocr"
2026-01-12 21:46:52.443 | },
2026-01-12 21:46:52.443 | "fileConfig": {
2026-01-12 21:46:52.443 | "ocr": {
2026-01-12 21:46:52.443 | "supportedMimeTypes": [
2026-01-12 21:46:52.443 | "image/.",
2026-01-12 21:46:52.443 | "application/pdf"
2026-01-12 21:46:52.443 | ]
2026-01-12 21:46:52.443 | },
2026-01-12 21:46:52.443 | "text": {
2026-01-12 21:46:52.443 | "supportedMimeTypes": [
2026-01-12 21:46:52.443 | "text/.
",
2026-01-12 21:46:52.443 | "application/json",
2026-01-12 21:46:52.443 | "application/x-yaml"
2026-01-12 21:46:52.443 | ]
2026-01-12 21:46:52.443 | },
2026-01-12 21:46:52.443 | "stt": {
2026-01-12 21:46:52.443 | "supportedMimeTypes": [
2026-01-12 21:46:52.443 | "audio/.*"
2026-01-12 21:46:52.443 | ]
2026-01-12 21:46:52.443 | }
2026-01-12 21:46:52.443 | },
2026-01-12 21:46:52.443 | "fileStrategies": {
2026-01-12 21:46:52.443 | "default": "local",
2026-01-12 21:46:52.443 | "avatar": "local",
2026-01-12 21:46:52.443 | "image": "local",
2026-01-12 21:46:52.443 | "document": "local"
2026-01-12 21:46:52.443 | }
2026-01-12 21:46:52.443 | }
2026-01-12 21:46:52.453 | 2026-01-12 20:46:52 warn: Note: Prioritizing model specs can conflict with default presets if a default preset is set. It's recommended to disable presets from the interface or disable use of a default preset.
2026-01-12 21:46:52.453 | 2026-01-12 20:46:52 warn: interface settings:
2026-01-12 21:46:52.453 | {
2026-01-12 21:46:52.453 | "endpointsMenu": true,
2026-01-12 21:46:52.453 | "modelSelect": true,
2026-01-12 21:46:52.453 | "parameters": true,
2026-01-12 21:46:52.453 | "presets": true,
2026-01-12 21:46:52.453 | "sidePanel": true,
2026-01-12 21:46:52.453 | "privacyPolicy": {
2026-01-12 21:46:52.453 | "externalUrl": "https://example.com/privacy",
2026-01-12 21:46:52.453 | "openNewTab": true
2026-01-12 21:46:52.453 | },
2026-01-12 21:46:52.453 | "termsOfService": {
2026-01-12 21:46:52.453 | "externalUrl": "https://example.com/terms",
2026-01-12 21:46:52.453 | "openNewTab": true,
2026-01-12 21:46:52.453 | "modalAcceptance": true,
2026-01-12 21:46:52.453 | "modalTitle": "Kleingedrucktes",
2026-01-12 21:46:52.453 | "modalContent": "# Nutzungsbedingungen\n\nWichtiger Hinweis zu KI-generierten Antworten\nAlle Antworten dieses KI-Systems sollten stets von Menschen überprüft werden. KI-generierte Inhalte können Fehler enthalten und sollten nicht als alleinige Quelle für wichtige Entscheidungen verwendet werden.\n\nDatenverarbeitung und Hosting\nWir bemühen uns, so viele Komponenten wie möglich selbst zu hosten. Aktuell nutzen wir noch externe Dienste wie OpenRouter, wodurch Daten derzeit an Server in den USA übertragen werden. Unser Ziel ist es, vollständig auf selbst gehostete oder europäische Dienste umzustellen.\n"
2026-01-12 21:46:52.453 | },
2026-01-12 21:46:52.453 | "mcpServers": {
2026-01-12 21:46:52.453 | "use": true,
2026-01-12 21:46:52.453 | "create": true,
2026-01-12 21:46:52.453 | "share": false
2026-01-12 21:46:52.453 | },
2026-01-12 21:46:52.453 | "customWelcome": "Hi {{user.name}}! Welcome to the AI Chat Interface powered by LibreChat",
2026-01-12 21:46:52.453 | "bookmarks": true,
2026-01-12 21:46:52.453 | "prompts": true,
2026-01-12 21:46:52.453 | "multiConvo": true,
2026-01-12 21:46:52.453 | "agents": true,
2026-01-12 21:46:52.453 | "fileSearch": true,
2026-01-12 21:46:52.453 | "fileCitations": true,
2026-01-12 21:46:52.453 | "peoplePicker": {
2026-01-12 21:46:52.453 | "users": true,
2026-01-12 21:46:52.453 | "groups": true,
2026-01-12 21:46:52.453 | "roles": true
2026-01-12 21:46:52.453 | },
2026-01-12 21:46:52.453 | "marketplace": {
2026-01-12 21:46:52.453 | "use": true
2026-01-12 21:46:52.453 | }
2026-01-12 21:46:52.453 | }
2026-01-12 21:46:52.453 | 2026-01-12 20:46:52 warn: modelSpecs settings:
2026-01-12 21:46:52.453 | {
2026-01-12 21:46:52.453 | "enforce": false,
2026-01-12 21:46:52.453 | "prioritize": true
2026-01-12 21:46:52.453 | }
2026-01-12 21:46:52.519 | 2026-01-12 20:46:52 info: RAG API is running and reachable at http://rag_api:8000.
2026-01-12 21:46:52.522 | 2026-01-12 20:46:52 info: No changes needed for 'USER' role permissions
2026-01-12 21:46:52.523 | 2026-01-12 20:46:52 info: No changes needed for 'ADMIN' role permissions
2026-01-12 21:46:52.527 | Social logins are disabled. Set ALLOW_SOCIAL_LOGIN=true to enable them.
2026-01-12 21:46:52.532 | 2026-01-12 20:46:52 info: Server listening on all interfaces at port 3080. Use http://localhost:3080 to access it
2026-01-12 21:46:52.532 | 2026-01-12 20:46:52 info: [MCPServersRegistry] Creating new instance
2026-01-12 21:46:52.534 | 2026-01-12 20:46:52 info: OAuth reconnect manager initialized successfully.
2026-01-12 21:46:52.592 | 2026-01-12 20:46:52 info: [StreamServices] Created in-memory stream services
2026-01-12 21:46:52.592 | 2026-01-12 20:46:52 info: [GenerationJobManager] Configured with in-memory stores
2026-01-12 21:46:52.612 | 2026-01-12 20:46:52 info: [indexSync] Messages are fully synced: 590/590
2026-01-12 21:46:52.619 | 2026-01-12 20:46:52 info: [indexSync] Conversations are fully synced: 157/157
2026-01-12 21:46:52.620 | 2026-01-12 20:46:52 warn: [FlowStateManager] Cannot complete flow - flow state not found
2026-01-12 21:47:11.558 | 2026-01-12 20:47:11 error: Failed to load service key from file: /app/api/data/auth.json ENOENT: no such file or directory, stat '/app/api/data/auth.json'
2026-01-12 21:47:34.183 | 2026-01-12 20:47:34 error: [api/server/controllers/agents/client.js #sendCompletion] Operation aborted 404 No endpoints found that support image input
2026-01-12 21:47:34.183 |
2026-01-12 21:47:34.183 | Troubleshooting URL: https://js.langchain.com/docs/troubleshooting/errors/MODEL_NOT_FOUND/
2026-01-12 21:47:34.183 |
2026-01-12 21:47:34.183 | 2026-01-12 20:47:34 error: [api/server/controllers/agents/client.js #sendCompletion] Unhandled error type 404 No endpoints found that support image input
2026-01-12 21:47:34.183 |
2026-01-12 21:47:34.183 | Troubleshooting URL: https://js.langchain.com/docs/troubleshooting/errors/MODEL_NOT_FOUND/
2026-01-12 21:47:34.183 |
2026-01-12 21:49:53.309 | 2026-01-12 20:49:53 info: [onSearchResults] user: 695d377bc9e98f681269a07a | thread_id: 93ff5e97-aafa-4f45-aafe-0820506c4f86 | run_id: 8b1ab74c-9484-4c7a-bf51-9b569c06a034
2026-01-12 21:50:28.964 | 2026-01-12 20:50:28 info: [onSearchResults] user: 695d377bc9e98f681269a07a | thread_id: 93ff5e97-aafa-4f45-aafe-0820506c4f86 | run_id: 8b1ab74c-9484-4c7a-bf51-9b569c06a034
2026-01-13 07:19:39.782 | 2026-01-13 06:19:39 error: [api/server/controllers/agents/client.js #sendCompletion] Operation aborted 404 No endpoints found that support image input
2026-01-13 07:19:39.782 |
2026-01-13 07:19:39.782 | Troubleshooting URL: https://js.langchain.com/docs/troubleshooting/errors/MODEL_NOT_FOUND/
2026-01-13 07:19:39.782 |
2026-01-13 07:19:39.782 | 2026-01-13 06:19:39 error: [api/server/controllers/agents/client.js #sendCompletion] Unhandled error type 404 No endpoints found that support image input
2026-01-13 07:19:39.783 |
2026-01-13 07:19:39.783 | Troubleshooting URL: https://js.langchain.com/docs/troubleshooting/errors/MODEL_NOT_FOUND/
2026-01-13 07:19:39.783 |
2026-01-13 07:19:42.783 | 2026-01-13 06:19:42 warn: [AgentClient] Memory processing timed out after 3 seconds
2026-01-13 07:59:17.730 | 2026-01-13 06:59:17 error: [api/server/controllers/agents/client.js #sendCompletion] Operation aborted 404 No endpoints found that support image input
2026-01-13 07:59:17.730 |
2026-01-13 07:59:17.730 | Troubleshooting URL: https://js.langchain.com/docs/troubleshooting/errors/MODEL_NOT_FOUND/
2026-01-13 07:59:17.730 |
2026-01-13 07:59:17.730 | 2026-01-13 06:59:17 error: [api/server/controllers/agents/client.js #sendCompletion] Unhandled error type 404 No endpoints found that support image input
2026-01-13 07:59:17.730 |
2026-01-13 07:59:17.730 | Troubleshooting URL: https://js.langchain.com/docs/troubleshooting/errors/MODEL_NOT_FOUND/
2026-01-13 07:59:17.730 |

### Steps to Reproduce
  1. Configure OpenRouter endpoint with a non-vision model (e.g., DeepSeek)
  2. Select the non-vision model in LibreChat UI
  3. Click the file upload button (paperclip icon)
  4. Observe that "Upload to AI Provider" option is shown
  5. Upload an image using "Upload to AI Provider"
  6. Error occurs: "404 No endpoints found that support image input"

What browsers are you seeing the problem on?

Firefox

Relevant log output

2026-01-12 20:40:26 error: [api/server/controllers/agents/client.js #sendCompletion] Operation aborted 404 No endpoints found that support image input
Troubleshooting URL: https://js.langchain.com/docs/troubleshooting/errors/MODEL_NOT_FOUND/

Screenshots

Image

Code of Conduct

  • I agree to follow this project's Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    🐛 bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions