Date: Mon, 24 Nov 2025 16:46:16 -0600
Subject: [PATCH 05/13] Detect and default to provider with env set
---
.../_components/onboarding-card.tsx | 40 ++++++++++++++++++-
1 file changed, 38 insertions(+), 2 deletions(-)
diff --git a/frontend/app/onboarding/_components/onboarding-card.tsx b/frontend/app/onboarding/_components/onboarding-card.tsx
index 3dffb21e..7ac2e85c 100644
--- a/frontend/app/onboarding/_components/onboarding-card.tsx
+++ b/frontend/app/onboarding/_components/onboarding-card.tsx
@@ -2,7 +2,7 @@
import { useQueryClient } from "@tanstack/react-query";
import { AnimatePresence, motion } from "framer-motion";
-import { Info, X } from "lucide-react";
+import { X } from "lucide-react";
import { useEffect, useState } from "react";
import { toast } from "sonner";
import {
@@ -74,6 +74,42 @@ const OnboardingCard = ({
// Fetch current settings to check if providers are already configured
const { data: currentSettings } = useGetSettingsQuery();
+ // Auto-select the first provider that has an API key set in env vars
+ useEffect(() => {
+ if (!currentSettings?.providers) return;
+
+ // Define provider order based on whether it's embedding or not
+ const providerOrder = isEmbedding
+ ? ["openai", "watsonx", "ollama"]
+ : ["anthropic", "openai", "watsonx", "ollama"];
+
+ // Find the first provider with an API key
+ for (const provider of providerOrder) {
+ if (
+ provider === "anthropic" &&
+ currentSettings.providers.anthropic?.has_api_key
+ ) {
+ setModelProvider("anthropic");
+ return;
+ } else if (provider === "openai" && currentSettings.providers.openai?.has_api_key) {
+ setModelProvider("openai");
+ return;
+ } else if (
+ provider === "watsonx" &&
+ currentSettings.providers.watsonx?.has_api_key
+ ) {
+ setModelProvider("watsonx");
+ return;
+ } else if (
+ provider === "ollama" &&
+ currentSettings.providers.ollama?.endpoint
+ ) {
+ setModelProvider("ollama");
+ return;
+ }
+ }
+ }, [currentSettings, isEmbedding]);
+
const handleSetModelProvider = (provider: string) => {
setIsLoadingModels(false);
setModelProvider(provider);
@@ -305,7 +341,7 @@ const OnboardingCard = ({
From a358166a2d372813ac50f21550c826a04e0694e3 Mon Sep 17 00:00:00 2001
From: "April I. Murphy" <36110273+aimurphy@users.noreply.github.com>
Date: Mon, 24 Nov 2025 15:25:21 -0800
Subject: [PATCH 06/13] Apply suggestions from code review
Co-authored-by: Mendon Kissling <59585235+mendonk@users.noreply.github.com>
---
docs/docs/_partial-wsl-install.mdx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/docs/_partial-wsl-install.mdx b/docs/docs/_partial-wsl-install.mdx
index ff674297..7cab4029 100644
--- a/docs/docs/_partial-wsl-install.mdx
+++ b/docs/docs/_partial-wsl-install.mdx
@@ -15,5 +15,5 @@
4. [Install Docker Desktop for Windows with WSL 2](https://learn.microsoft.com/en-us/windows/wsl/tutorials/wsl-containers). When you reach the Docker Desktop **WSL integration** settings, make sure your Ubuntu distribution is enabled, and then click **Apply & Restart** to enable Docker support in WSL.
5. Install and run OpenRAG from within your WSL Ubuntu distribution.
-
-If you encounter issues with port forwarding or the Windows Firewall, you might to adjust the [Hyper-V firewall settings](https://learn.microsoft.com/en-us/windows/security/operating-system-security/network-security/windows-firewall/hyper-v-firewall) to allow communication between your WSL distribution and the Windows host. For more troubleshooting advice for networking issues, see [Troubleshooting WLS common issues](https://learn.microsoft.com/en-us/windows/wsl/troubleshooting#common-issues).
\ No newline at end of file
+
+If you encounter issues with port forwarding or the Windows Firewall, you might need to adjust the [Hyper-V firewall settings](https://learn.microsoft.com/en-us/windows/security/operating-system-security/network-security/windows-firewall/hyper-v-firewall) to allow communication between your WSL distribution and the Windows host. For more troubleshooting advice for networking issues, see [Troubleshooting WLS common issues](https://learn.microsoft.com/en-us/windows/wsl/troubleshooting#common-issues).
\ No newline at end of file
From ad703df6ec9d7291f57c4880691532c07dec582d Mon Sep 17 00:00:00 2001
From: April M <36110273+aimurphy@users.noreply.github.com>
Date: Tue, 25 Nov 2025 08:09:32 -0800
Subject: [PATCH 07/13] limitation for nested virtualization
---
docs/docs/_partial-wsl-install.mdx | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/docs/docs/_partial-wsl-install.mdx b/docs/docs/_partial-wsl-install.mdx
index 7cab4029..536c10b6 100644
--- a/docs/docs/_partial-wsl-install.mdx
+++ b/docs/docs/_partial-wsl-install.mdx
@@ -1,12 +1,18 @@
1. [Install WSL](https://learn.microsoft.com/en-us/windows/wsl/install) with the Ubuntu distribution using WSL 2:
- ```powershell
- wsl --install -d Ubuntu
- ```
+ ```powershell
+ wsl --install -d Ubuntu
+ ```
- For new installations, the `wsl --install` command uses WSL 2 and Ubuntu by default.
+ For new installations, the `wsl --install` command uses WSL 2 and Ubuntu by default.
- For existing WSL installations, you can [change the distribution](https://learn.microsoft.com/en-us/windows/wsl/install#change-the-default-linux-distribution-installed) and [check the WSL version](https://learn.microsoft.com/en-us/windows/wsl/install#upgrade-version-from-wsl-1-to-wsl-2).
+ For existing WSL installations, you can [change the distribution](https://learn.microsoft.com/en-us/windows/wsl/install#change-the-default-linux-distribution-installed) and [check the WSL version](https://learn.microsoft.com/en-us/windows/wsl/install#upgrade-version-from-wsl-1-to-wsl-2).
+
+ :::info Known limitation
+ OpenRAG isn't compatible with nested virtualization, which can cause networking issues.
+ Don't install OpenRAG in on a WSL distribution that is installed inside a Windows VM.
+ Instead, install OpenRAG on your base OS or a non-nested Linux VM.
+ :::
2. [Start your WSL Ubuntu distribution](https://learn.microsoft.com/en-us/windows/wsl/install#ways-to-run-multiple-linux-distributions-with-wsl) if it doesn't start automatically.
From b807bbcd253ceceb298d0f37a6a0f47e2cd878b6 Mon Sep 17 00:00:00 2001
From: "April I. Murphy" <36110273+aimurphy@users.noreply.github.com>
Date: Tue, 25 Nov 2025 08:15:12 -0800
Subject: [PATCH 08/13] Update docs/docs/_partial-wsl-install.mdx
---
docs/docs/_partial-wsl-install.mdx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/docs/_partial-wsl-install.mdx b/docs/docs/_partial-wsl-install.mdx
index 536c10b6..42768ff5 100644
--- a/docs/docs/_partial-wsl-install.mdx
+++ b/docs/docs/_partial-wsl-install.mdx
@@ -8,7 +8,7 @@
For existing WSL installations, you can [change the distribution](https://learn.microsoft.com/en-us/windows/wsl/install#change-the-default-linux-distribution-installed) and [check the WSL version](https://learn.microsoft.com/en-us/windows/wsl/install#upgrade-version-from-wsl-1-to-wsl-2).
- :::info Known limitation
+ :::warning Known limitation
OpenRAG isn't compatible with nested virtualization, which can cause networking issues.
Don't install OpenRAG in on a WSL distribution that is installed inside a Windows VM.
Instead, install OpenRAG on your base OS or a non-nested Linux VM.
From 370c668fc4a8f958d433ef0ee165e46c8d47b580 Mon Sep 17 00:00:00 2001
From: April M <36110273+aimurphy@users.noreply.github.com>
Date: Tue, 25 Nov 2025 08:34:01 -0800
Subject: [PATCH 09/13] peer review
---
docs/docs/_partial-wsl-install.mdx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/docs/_partial-wsl-install.mdx b/docs/docs/_partial-wsl-install.mdx
index 42768ff5..4db6d1dd 100644
--- a/docs/docs/_partial-wsl-install.mdx
+++ b/docs/docs/_partial-wsl-install.mdx
@@ -10,7 +10,7 @@
:::warning Known limitation
OpenRAG isn't compatible with nested virtualization, which can cause networking issues.
- Don't install OpenRAG in on a WSL distribution that is installed inside a Windows VM.
+ Don't install OpenRAG on a WSL distribution that is installed inside a Windows VM.
Instead, install OpenRAG on your base OS or a non-nested Linux VM.
:::
@@ -22,4 +22,4 @@
5. Install and run OpenRAG from within your WSL Ubuntu distribution.
-If you encounter issues with port forwarding or the Windows Firewall, you might need to adjust the [Hyper-V firewall settings](https://learn.microsoft.com/en-us/windows/security/operating-system-security/network-security/windows-firewall/hyper-v-firewall) to allow communication between your WSL distribution and the Windows host. For more troubleshooting advice for networking issues, see [Troubleshooting WLS common issues](https://learn.microsoft.com/en-us/windows/wsl/troubleshooting#common-issues).
\ No newline at end of file
+If you encounter issues with port forwarding or the Windows Firewall, you might need to adjust the [Hyper-V firewall settings](https://learn.microsoft.com/en-us/windows/security/operating-system-security/network-security/windows-firewall/hyper-v-firewall) to allow communication between your WSL distribution and the Windows host. For more troubleshooting advice for networking issues, see [Troubleshooting WSL common issues](https://learn.microsoft.com/en-us/windows/wsl/troubleshooting#common-issues).
\ No newline at end of file
From 45b4db8afc68f92caf20de4a7a7e9a95e9006877 Mon Sep 17 00:00:00 2001
From: Mike Fortman
Date: Tue, 25 Nov 2025 12:00:58 -0600
Subject: [PATCH 10/13] update limits so knowledge filters file list isn't
limited to one
---
frontend/app/api/queries/useGetSearchQuery.ts | 14 +++++++++-----
frontend/lib/constants.ts | 7 +++++++
2 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/frontend/app/api/queries/useGetSearchQuery.ts b/frontend/app/api/queries/useGetSearchQuery.ts
index e5407832..1f2cceb2 100644
--- a/frontend/app/api/queries/useGetSearchQuery.ts
+++ b/frontend/app/api/queries/useGetSearchQuery.ts
@@ -4,6 +4,7 @@ import {
useQueryClient,
} from "@tanstack/react-query";
import type { ParsedQueryData } from "@/contexts/knowledge-filter-context";
+import { SEARCH_CONSTANTS } from "@/lib/constants";
export interface SearchPayload {
query: string;
@@ -70,13 +71,16 @@ export const useGetSearchQuery = (
async function getFiles(): Promise {
try {
+ // For wildcard queries, use a high limit to get all files
+ // Otherwise use the limit from queryData or default to 100
+ const isWildcardQuery = effectiveQuery.trim() === "*" || effectiveQuery.trim() === "";
+ const searchLimit = isWildcardQuery
+ ? SEARCH_CONSTANTS.WILDCARD_QUERY_LIMIT
+ : (queryData?.limit || 100);
+
const searchPayload: SearchPayload = {
query: effectiveQuery,
- limit:
- queryData?.limit ||
- (effectiveQuery.trim() === "*" || effectiveQuery.trim() === ""
- ? 10000
- : 10), // Maximum allowed limit for wildcard searches
+ limit: searchLimit,
scoreThreshold: queryData?.scoreThreshold || 0,
};
if (queryData?.filters) {
diff --git a/frontend/lib/constants.ts b/frontend/lib/constants.ts
index 402ace74..cc5d2bdb 100644
--- a/frontend/lib/constants.ts
+++ b/frontend/lib/constants.ts
@@ -25,6 +25,13 @@ export const UI_CONSTANTS = {
MAX_SYSTEM_PROMPT_CHARS: 4000,
} as const;
+/**
+ * Search Constants
+ */
+export const SEARCH_CONSTANTS = {
+ WILDCARD_QUERY_LIMIT: 10000, // Maximum allowed limit for wildcard searches
+} as const;
+
export const ANIMATION_DURATION = 0.4;
export const SIDEBAR_WIDTH = 280;
export const HEADER_HEIGHT = 54;
From 49e0b8423f653ae4095e124d3cca50f3d9eade73 Mon Sep 17 00:00:00 2001
From: April M <36110273+aimurphy@users.noreply.github.com>
Date: Tue, 25 Nov 2025 13:13:37 -0800
Subject: [PATCH 11/13] python requirement, readme links
---
README.md | 42 +++++++++++++++-------------
docs/docs/get-started/docker.mdx | 2 +-
docs/docs/get-started/install.mdx | 2 +-
docs/docs/get-started/quickstart.mdx | 2 +-
4 files changed, 25 insertions(+), 23 deletions(-)
diff --git a/README.md b/README.md
index d7d1b614..4e861740 100644
--- a/README.md
+++ b/README.md
@@ -18,27 +18,29 @@ OpenRAG is a comprehensive Retrieval-Augmented Generation platform that enables
## Quickstart
-To quickly run OpenRAG without creating or modifying any project files, use `uvx`:
+To run OpenRAG without creating or modifying any project files, use `uvx`:
```bash
uvx openrag
```
-This runs OpenRAG without installing it to your project or globally.
-To run a specific version of OpenRAG, add the version to the command, such as: `uvx --from openrag==0.1.25 openrag`.
+
+This command runs OpenRAG without installing it to your project or globally.
+
+To run a specific version of OpenRAG, run `uvx --from openrag==VERSION openrag`.
## Install Python package
-To first set up a project and then install the OpenRAG Python package, do the following:
+To add the OpenRAG Python package to a Python project, use `uv`:
-1. Create a new project with a virtual environment using `uv init`.
+1. Create a new project with a virtual environment using `uv init`:
```bash
uv init YOUR_PROJECT_NAME
@@ -48,33 +50,33 @@ To first set up a project and then install the OpenRAG Python package, do the fo
The `(venv)` prompt doesn't change, but `uv` commands will automatically use the project's virtual environment.
For more information on virtual environments, see the [uv documentation](https://docs.astral.sh/uv/pip/environments).
-2. Add OpenRAG to your project.
+2. Add OpenRAG to your project:
+
```bash
uv add openrag
```
- To add a specific version of OpenRAG:
- ```bash
- uv add openrag==0.1.25
- ```
+ To add a specific version of OpenRAG, run `uv add openrag==VERSION`.
+
+3. Start the OpenRAG terminal user interface (TUI):
-3. Start the OpenRAG TUI.
```bash
uv run openrag
```
4. Continue with the [Quickstart](https://docs.openr.ag/quickstart).
-For the full TUI installation guide, see [TUI](https://docs.openr.ag/install).
+For all installation options, see the [OpenRAG installation guide](https://docs.openr.ag/install).
## Docker or Podman installation
-For more information, see [Install OpenRAG containers](https://docs.openr.ag/docker).
-
-## Troubleshooting
-
-For common issues and fixes, see [Troubleshoot](https://docs.openr.ag/support/troubleshoot).
+By default, OpenRAG automatically starts the required containers and helps you manage them.
+To install OpenRAG with self-managed containers, see the [OpenRAG installation guide](https://docs.openr.ag/docker).
## Development
-For developers wanting to contribute to OpenRAG or set up a development environment, see [CONTRIBUTING.md](CONTRIBUTING.md).
\ No newline at end of file
+For developers wanting to contribute to OpenRAG or set up a development environment, see [CONTRIBUTING.md](CONTRIBUTING.md).
+
+## Troubleshooting
+
+For common issues and fixes, see [Troubleshoot OpenRAG](https://docs.openr.ag/support/troubleshoot).
\ No newline at end of file
diff --git a/docs/docs/get-started/docker.mdx b/docs/docs/get-started/docker.mdx
index b9bb312a..0771b08e 100644
--- a/docs/docs/get-started/docker.mdx
+++ b/docs/docs/get-started/docker.mdx
@@ -18,7 +18,7 @@ OpenRAG has two Docker Compose files. Both files deploy the same applications an
- Install the following:
- - [Python](https://www.python.org/downloads/release/python-3100/) version 3.10 to 3.13.
+ - [Python](https://www.python.org/downloads/release/python-3100/) version 3.13 or later.
- [uv](https://docs.astral.sh/uv/getting-started/installation/).
- [Podman](https://podman.io/docs/installation) (recommended) or [Docker](https://docs.docker.com/get-docker/).
- [`podman-compose`](https://docs.podman.io/en/latest/markdown/podman-compose.1.html) or [Docker Compose](https://docs.docker.com/compose/install/). To use Docker Compose with Podman, you must alias Docker Compose commands to Podman commands.
diff --git a/docs/docs/get-started/install.mdx b/docs/docs/get-started/install.mdx
index 3c1c4bcc..921c94d6 100644
--- a/docs/docs/get-started/install.mdx
+++ b/docs/docs/get-started/install.mdx
@@ -22,7 +22,7 @@ If you prefer running Podman or Docker containers and manually editing `.env` fi
## Prerequisites
-- All OpenRAG installations require [Python](https://www.python.org/downloads/release/python-3100/) version 3.10 to 3.13.
+- All OpenRAG installations require [Python](https://www.python.org/downloads/release/python-3100/) version 3.13 or later.
- If you aren't using the automatic installer script, install the following:
diff --git a/docs/docs/get-started/quickstart.mdx b/docs/docs/get-started/quickstart.mdx
index 80eb0902..2e333a14 100644
--- a/docs/docs/get-started/quickstart.mdx
+++ b/docs/docs/get-started/quickstart.mdx
@@ -18,7 +18,7 @@ This quickstart requires the following:
This quickstart uses OpenAI for simplicity.
For other providers, see the complete [installation guide](/install).
-- [Python](https://www.python.org/downloads/release/python-3100/) version 3.10 to 3.13.
+- [Python](https://www.python.org/downloads/release/python-3100/) version 3.13 or later.
- Microsoft Windows only: To run OpenRAG on Windows, you must use the Windows Subsystem for Linux (WSL).
From 3107c4086e631b2a4a7acaafe96d3b17e54bf218 Mon Sep 17 00:00:00 2001
From: Mike Fortman
Date: Tue, 25 Nov 2025 16:03:18 -0600
Subject: [PATCH 12/13] add tooltip to view full file names
---
frontend/app/knowledge/page.tsx | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/frontend/app/knowledge/page.tsx b/frontend/app/knowledge/page.tsx
index 1b9e6f85..0edddaf4 100644
--- a/frontend/app/knowledge/page.tsx
+++ b/frontend/app/knowledge/page.tsx
@@ -31,6 +31,11 @@ import {
DialogTrigger,
} from "@/components/ui/dialog";
import { StatusBadge } from "@/components/ui/status-badge";
+import {
+ Tooltip,
+ TooltipContent,
+ TooltipTrigger,
+} from "@/components/ui/tooltip";
import {
DeleteConfirmationDialog,
formatFilesToDelete,
@@ -156,9 +161,14 @@ function SearchPage() {
}}
>
{getSourceIcon(data?.connector_type)}
-
- {value}
-
+
+
+
+ {value}
+
+
+ {value}
+
);
From e9e70545a059ce00505c631e406b99c28b1d026c Mon Sep 17 00:00:00 2001
From: Mike Fortman
Date: Tue, 25 Nov 2025 16:06:42 -0600
Subject: [PATCH 13/13] alignment improvement
---
frontend/app/knowledge/page.tsx | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/frontend/app/knowledge/page.tsx b/frontend/app/knowledge/page.tsx
index 0edddaf4..9a526159 100644
--- a/frontend/app/knowledge/page.tsx
+++ b/frontend/app/knowledge/page.tsx
@@ -167,7 +167,9 @@ function SearchPage() {
{value}
- {value}
+
+ {value}
+