From 552af2dd81e93d5a4661a0751eca06468b14ccf0 Mon Sep 17 00:00:00 2001 From: Edwin Jose Date: Wed, 10 Sep 2025 11:48:12 -0400 Subject: [PATCH 01/13] adding nudges to readme --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 6f1ca8a0..28449baa 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,7 @@ cp .env.example .env - `LANGFLOW_SUPERUSER_PASSWORD`: Langflow admin password - `LANGFLOW_CHAT_FLOW_ID`: ID of your Langflow chat flow - `LANGFLOW_INGEST_FLOW_ID`: ID of your Langflow ingestion flow +- `NUDGES_FLOW_ID`: ID of your Langflow nudges/suggestions flow **Ingestion Configuration:** - `DISABLE_INGEST_WITH_LANGFLOW`: Disable Langflow ingestion pipeline (default: `false`) @@ -57,6 +58,9 @@ cp .env.example .env - `MICROSOFT_GRAPH_OAUTH_CLIENT_ID` / `MICROSOFT_GRAPH_OAUTH_CLIENT_SECRET`: For Microsoft OAuth - `WEBHOOK_BASE_URL`: Base URL for webhook endpoints - `AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY`: For AWS integrations +- `SESSION_SECRET`: Secret key for session management (default: auto-generated, change in production) +- `LANGFLOW_KEY`: Explicit Langflow API key (auto-generated if not provided) +- `LANGFLOW_SECRET_KEY`: Secret key for Langflow internal operations See `.env.example` for a complete list with descriptions, or check the docker-compose.yml files. From 676bda205f544bae525b2020328da0d4083cdd70 Mon Sep 17 00:00:00 2001 From: Edwin Jose Date: Wed, 10 Sep 2025 11:59:07 -0400 Subject: [PATCH 02/13] Revamp README with detailed setup and usage guide Expanded the README to include comprehensive instructions for quick start, development workflow, environment configuration, Docker deployment, and troubleshooting. Added structured sections, command examples, and environment variable documentation to improve onboarding and developer experience. --- README.md | 280 +++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 227 insertions(+), 53 deletions(-) diff --git a/README.md b/README.md index 28449baa..606c05e4 100644 --- a/README.md +++ b/README.md @@ -1,72 +1,246 @@ -## OpenRAG +# OpenRAG [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/phact/openrag) -### getting started +OpenRAG is a comprehensive Retrieval-Augmented Generation platform that enables intelligent document search and AI-powered conversations. Users can upload, process, and query documents through a chat interface backed by large language models and semantic search capabilities. The system utilizes Langflow for document ingestion, retrieval workflows, and intelligent nudges, providing a seamless RAG experience. Built with Starlette, Next.js, OpenSearch, and Langflow integration. -Set up your secrets: +## ๐Ÿ“‹ Table of Contents - cp .env.example .env +- [Quick Start](#quick-start) +- [Development](#development) +- [Configuration](#configuration) +- [Docker Deployment](#docker-deployment) +- [Troubleshooting](#troubleshooting) -Populate the values in .env +## ๐Ÿš€ Quick Start -Requirements: +### Prerequisites -Docker or podman with compose installed. +- Docker or Podman with Compose installed +- Make (for development commands) -Run OpenRAG: - - docker compose build - - docker compose up - -CPU only: - - docker compose -f docker-compose-cpu.yml up - -If you need to reset state: - - docker compose up --build --force-recreate --remove-orphans - -### Configuration - -OpenRAG uses environment variables for configuration. Copy `.env.example` to `.env` and populate with your values: +### 1. Environment Setup ```bash -cp .env.example .env +# Clone and setup environment +git clone +cd openrag +make setup # Creates .env and installs dependencies ``` -#### Key Environment Variables +### 2. Configure Environment -**Required:** -- `OPENAI_API_KEY`: Your OpenAI API key -- `OPENSEARCH_PASSWORD`: Password for OpenSearch admin user -- `LANGFLOW_SUPERUSER`: Langflow admin username -- `LANGFLOW_SUPERUSER_PASSWORD`: Langflow admin password -- `LANGFLOW_CHAT_FLOW_ID`: ID of your Langflow chat flow -- `LANGFLOW_INGEST_FLOW_ID`: ID of your Langflow ingestion flow -- `NUDGES_FLOW_ID`: ID of your Langflow nudges/suggestions flow +Edit `.env` with your API keys and credentials: -**Ingestion Configuration:** -- `DISABLE_INGEST_WITH_LANGFLOW`: Disable Langflow ingestion pipeline (default: `false`) - - `false` or unset: Uses Langflow pipeline (upload โ†’ ingest โ†’ delete) - - `true`: Uses traditional OpenRAG processor for document ingestion +```bash +# Required +OPENAI_API_KEY=your_openai_api_key +OPENSEARCH_PASSWORD=your_secure_password +LANGFLOW_SUPERUSER=admin +LANGFLOW_SUPERUSER_PASSWORD=your_secure_password +LANGFLOW_CHAT_FLOW_ID=your_chat_flow_id +LANGFLOW_INGEST_FLOW_ID=your_ingest_flow_id +NUDGES_FLOW_ID=your_nudges_flow_id +``` -**Optional:** -- `LANGFLOW_PUBLIC_URL`: Public URL for Langflow (default: `http://localhost:7860`) -- `GOOGLE_OAUTH_CLIENT_ID` / `GOOGLE_OAUTH_CLIENT_SECRET`: For Google OAuth authentication -- `MICROSOFT_GRAPH_OAUTH_CLIENT_ID` / `MICROSOFT_GRAPH_OAUTH_CLIENT_SECRET`: For Microsoft OAuth -- `WEBHOOK_BASE_URL`: Base URL for webhook endpoints -- `AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY`: For AWS integrations -- `SESSION_SECRET`: Secret key for session management (default: auto-generated, change in production) -- `LANGFLOW_KEY`: Explicit Langflow API key (auto-generated if not provided) -- `LANGFLOW_SECRET_KEY`: Secret key for Langflow internal operations +### 3. Start OpenRAG -See `.env.example` for a complete list with descriptions, or check the docker-compose.yml files. +```bash +# Full stack with GPU support +make dev -For podman on mac you may have to increase your VM memory (`podman stats` should not show limit at only 2gb): +# Or CPU only +make dev-cpu +``` - podman machine stop - podman machine rm - podman machine init --memory 8192 # example: 8 GB - podman machine start +Access the services: +- **Frontend**: http://localhost:3000 +- **Backend API**: http://localhost:8000 +- **Langflow**: http://localhost:7860 +- **OpenSearch**: http://localhost:9200 +- **OpenSearch Dashboards**: http://localhost:5601 + +## ๐Ÿ› ๏ธ Development + +### Development Commands + +All development tasks are managed through the Makefile. Run `make help` to see all available commands. + +#### Environment Management + +```bash +# Setup development environment +make setup # Initial setup: creates .env, installs dependencies + +# Start development environments +make dev # Full stack with GPU support +make dev-cpu # Full stack with CPU only +make dev-local # Infrastructure only (for local development) +make infra # Alias for dev-local + +# Container management +make stop # Stop all containers +make restart # Restart all containers +make clean # Stop and remove containers/volumes +make status # Show container status +make health # Check service health +``` + +#### Local Development + +For faster development iteration, run infrastructure in Docker and backend/frontend locally: + +```bash +# Terminal 1: Start infrastructure +make dev-local + +# Terminal 2: Run backend locally +make backend + +# Terminal 3: Run frontend locally +make frontend +``` + +#### Dependency Management + +```bash +make install # Install all dependencies +make install-be # Install backend dependencies (uv) +make install-fe # Install frontend dependencies (npm) +``` + +#### Building and Testing + +```bash +# Build Docker images +make build # Build all images +make build-be # Build backend image only +make build-fe # Build frontend image only + +# Testing and quality +make test # Run backend tests +make lint # Run linting checks +``` + +#### Debugging + +```bash +# View logs +make logs # All container logs +make logs-be # Backend logs only +make logs-fe # Frontend logs only +make logs-lf # Langflow logs only +make logs-os # OpenSearch logs only + + +#### Database Operations + +```bash +# Reset OpenSearch indices +make db-reset # Delete and recreate indices +``` + + +## โš™๏ธ Configuration + +### Environment Variables + +OpenRAG uses environment variables for configuration. All variables should be set in your `.env` file. + +#### Required Variables + +| Variable | Description | +|----------|-------------| +| `OPENAI_API_KEY` | Your OpenAI API key | +| `OPENSEARCH_PASSWORD` | Password for OpenSearch admin user | +| `LANGFLOW_SUPERUSER` | Langflow admin username | +| `LANGFLOW_SUPERUSER_PASSWORD` | Langflow admin password | +| `LANGFLOW_CHAT_FLOW_ID` | ID of your Langflow chat flow | +| `LANGFLOW_INGEST_FLOW_ID` | ID of your Langflow ingestion flow | +| `NUDGES_FLOW_ID` | ID of your Langflow nudges/suggestions flow | + +#### Ingestion Configuration + +| Variable | Description | +|----------|-------------| +| `DISABLE_INGEST_WITH_LANGFLOW` | Disable Langflow ingestion pipeline (default: `false`) | + +- `false` or unset: Uses Langflow pipeline (upload โ†’ ingest โ†’ delete) +- `true`: Uses traditional OpenRAG processor for document ingestion + +#### Optional Variables + +| Variable | Description | +|----------|-------------| +| `LANGFLOW_PUBLIC_URL` | Public URL for Langflow (default: `http://localhost:7860`) | +| `GOOGLE_OAUTH_CLIENT_ID` / `GOOGLE_OAUTH_CLIENT_SECRET` | Google OAuth authentication | +| `MICROSOFT_GRAPH_OAUTH_CLIENT_ID` / `MICROSOFT_GRAPH_OAUTH_CLIENT_SECRET` | Microsoft OAuth | +| `WEBHOOK_BASE_URL` | Base URL for webhook endpoints | +| `AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY` | AWS integrations | +| `SESSION_SECRET` | Session management (default: auto-generated, change in production) | +| `LANGFLOW_KEY` | Explicit Langflow API key (auto-generated if not provided) | +| `LANGFLOW_SECRET_KEY` | Secret key for Langflow internal operations | + +## ๐Ÿณ Docker Deployment + +### Standard Deployment + +```bash +# Build and start all services +docker compose build +docker compose up -d +``` + +### CPU-Only Deployment + +For environments without GPU support: + +```bash +docker compose -f docker-compose-cpu.yml up -d +``` + +### Force Rebuild + +If you need to reset state or rebuild everything: + +```bash +docker compose up --build --force-recreate --remove-orphans +``` + +### Service URLs + +After deployment, services are available at: + +- **Frontend**: http://localhost:3000 +- **Backend API**: http://localhost:8000 +- **Langflow**: http://localhost:7860 +- **OpenSearch**: http://localhost:9200 +- **OpenSearch Dashboards**: http://localhost:5601 + +## ๐Ÿ”ง Troubleshooting + +### Podman on macOS + +If using Podman on macOS, you may need to increase VM memory: + +```bash +podman machine stop +podman machine rm +podman machine init --memory 8192 # 8 GB example +podman machine start +``` + +### Common Issues + +1. **OpenSearch fails to start**: Check that `OPENSEARCH_PASSWORD` is set and meets requirements +2. **Langflow connection issues**: Verify `LANGFLOW_SUPERUSER` credentials are correct +3. **Out of memory errors**: Increase Docker memory allocation or use CPU-only mode +4. **Port conflicts**: Ensure ports 3000, 7860, 8000, 9200, 5601 are available + + + +### Development Tips + +- Use `make infra` + `make backend` + `make frontend` for faster development iteration +- Run `make help` to see all available commands +- Check `.env.example` for complete environment variable documentation \ No newline at end of file From 652ab2803f13dffdf0f26d633528fa95ffb8eee4 Mon Sep 17 00:00:00 2001 From: Edwin Jose Date: Wed, 10 Sep 2025 13:06:47 -0400 Subject: [PATCH 03/13] adding tui screenshots --- ...OpenRAG_TUI_2025-09-10T13_04_11_757637.svg | 237 ++++++++++++++++++ 1 file changed, 237 insertions(+) create mode 100644 assets/OpenRAG_TUI_2025-09-10T13_04_11_757637.svg diff --git a/assets/OpenRAG_TUI_2025-09-10T13_04_11_757637.svg b/assets/OpenRAG_TUI_2025-09-10T13_04_11_757637.svg new file mode 100644 index 00000000..f50bef7d --- /dev/null +++ b/assets/OpenRAG_TUI_2025-09-10T13_04_11_757637.svg @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OpenRAG TUI + + + + + + + + + + + + + + + + + + + + + + +โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ•—   โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—  +โ–ˆโ–ˆโ•”โ•โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ•โ–ˆโ–ˆโ–ˆโ–ˆโ•—  โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ•  +โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—  โ–ˆโ–ˆโ•”โ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ–ˆโ•— +โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ•โ• โ–ˆโ–ˆโ•”โ•โ•โ•  โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘ +โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•‘     โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘ โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ• +โ•šโ•โ•โ•โ•โ•โ• โ•šโ•โ•     โ•šโ•โ•โ•โ•โ•โ•โ•โ•šโ•โ•  โ•šโ•โ•โ•โ•โ•šโ•โ•  โ•šโ•โ•โ•šโ•โ•  โ•šโ•โ•โ•šโ•โ•โ•โ•โ•โ• +Terminal User Interface for OpenRAG + +OAuth credentials detected โ€” Advanced Setup recommended + + + + +โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–”โ–” + Advanced Setup  Monitor Services  +โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ–โ– + + + + + + + + + + + + + + q Quit  1 Basic Setup  2 Advanced Setup  3 Monitor Services  4 Diagnostics โ–^p palette + + + From 36e7031bf265e1b07de97338ba53deac148813bc Mon Sep 17 00:00:00 2001 From: Edwin Jose Date: Wed, 10 Sep 2025 13:07:08 -0400 Subject: [PATCH 04/13] Revamp README with TUI interface and dev guide --- README.md | 138 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 72 insertions(+), 66 deletions(-) diff --git a/README.md b/README.md index 606c05e4..021d8d3b 100644 --- a/README.md +++ b/README.md @@ -7,9 +7,10 @@ OpenRAG is a comprehensive Retrieval-Augmented Generation platform that enables ## ๐Ÿ“‹ Table of Contents - [Quick Start](#quick-start) -- [Development](#development) +- [TUI Interface](#tui-interface) - [Configuration](#configuration) - [Docker Deployment](#docker-deployment) +- [Development](#development) - [Troubleshooting](#troubleshooting) ## ๐Ÿš€ Quick Start @@ -60,85 +61,72 @@ Access the services: - **OpenSearch**: http://localhost:9200 - **OpenSearch Dashboards**: http://localhost:5601 -## ๐Ÿ› ๏ธ Development +## ๐Ÿ–ฅ๏ธ TUI Interface -### Development Commands +OpenRAG includes a powerful Terminal User Interface (TUI) for easy setup, configuration, and monitoring. The TUI provides a user-friendly way to manage your OpenRAG installation without complex command-line operations. -All development tasks are managed through the Makefile. Run `make help` to see all available commands. +![OpenRAG TUI Interface](assets/OpenRAG_TUI_2025-09-10T13_04_11_757637.svg) -#### Environment Management +### Launching the TUI ```bash -# Setup development environment -make setup # Initial setup: creates .env, installs dependencies +# Install dependencies first +uv sync -# Start development environments -make dev # Full stack with GPU support -make dev-cpu # Full stack with CPU only -make dev-local # Infrastructure only (for local development) -make infra # Alias for dev-local - -# Container management -make stop # Stop all containers -make restart # Restart all containers -make clean # Stop and remove containers/volumes -make status # Show container status -make health # Check service health +# Launch the TUI +uv run openrag ``` -#### Local Development +### TUI Features -For faster development iteration, run infrastructure in Docker and backend/frontend locally: +The TUI provides several screens and capabilities: -```bash -# Terminal 1: Start infrastructure -make dev-local +#### Welcome Screen +- **Quick Setup Options**: Choose between basic setup (no authentication) or advanced setup (with OAuth) +- **Service Monitoring**: Check if containers are running and their status +- **Quick Actions**: Access diagnostics, logs, and configuration screens -# Terminal 2: Run backend locally -make backend +#### Configuration Screen +- **Environment Variables**: Easy-to-use forms for setting up required configuration +- **API Keys**: Secure input for OpenAI API keys with validation +- **OAuth Setup**: Configure Google and Microsoft authentication +- **Document Paths**: Set up document ingestion directories +- **Auto-Save**: Automatically generates and saves `.env` file -# Terminal 3: Run frontend locally -make frontend -``` +#### Service Monitor +- **Container Status**: Real-time view of all OpenRAG services +- **Resource Usage**: Monitor CPU, memory, and network usage +- **Service Control**: Start, stop, and restart individual services +- **Health Checks**: Built-in health monitoring for all components -#### Dependency Management +#### Log Viewer +- **Real-time Logs**: Live streaming of container logs +- **Service Filtering**: View logs for specific services (backend, frontend, Langflow, OpenSearch) +- **Log Levels**: Filter by log levels (DEBUG, INFO, WARNING, ERROR) +- **Export Options**: Save logs to files for analysis -```bash -make install # Install all dependencies -make install-be # Install backend dependencies (uv) -make install-fe # Install frontend dependencies (npm) -``` +#### Diagnostics +- **System Check**: Verify Docker/Podman installation and configuration +- **Environment Validation**: Check required environment variables +- **Network Testing**: Test connectivity between services +- **Performance Metrics**: System resource availability and recommendations -#### Building and Testing +### TUI Navigation -```bash -# Build Docker images -make build # Build all images -make build-be # Build backend image only -make build-fe # Build frontend image only +- **Arrow Keys**: Navigate between options and screens +- **Tab/Shift+Tab**: Move between form fields and buttons +- **Enter**: Select/activate options +- **Escape**: Go back to previous screen +- **Q**: Quit the application +- **Number Keys (1-4)**: Quick access to main screens from welcome -# Testing and quality -make test # Run backend tests -make lint # Run linting checks -``` +### Benefits of Using the TUI -#### Debugging - -```bash -# View logs -make logs # All container logs -make logs-be # Backend logs only -make logs-fe # Frontend logs only -make logs-lf # Langflow logs only -make logs-os # OpenSearch logs only - - -#### Database Operations - -```bash -# Reset OpenSearch indices -make db-reset # Delete and recreate indices -``` +1. **Simplified Setup**: No need to manually edit configuration files +2. **Visual Feedback**: Clear status indicators and error messages +3. **Integrated Monitoring**: Everything in one interface +4. **Cross-Platform**: Works on Linux, macOS, and Windows +5. **No Browser Required**: Fully terminal-based interface ## โš™๏ธ Configuration @@ -239,8 +227,26 @@ podman machine start -### Development Tips +## ๐Ÿ› ๏ธ Development -- Use `make infra` + `make backend` + `make frontend` for faster development iteration -- Run `make help` to see all available commands -- Check `.env.example` for complete environment variable documentation \ No newline at end of file +For developers wanting to contribute to OpenRAG or set up a development environment, please see our comprehensive development guide: + +**[๐Ÿ“š See CONTRIBUTING.md for detailed development instructions](CONTRIBUTING.md)** + +The contributing guide includes: +- Complete development environment setup +- Local development workflows +- Testing and debugging procedures +- Code style guidelines +- Architecture overview +- Pull request guidelines + +### Quick Development Commands + +```bash +make help # See all available commands +make setup # Initial development setup +make infra # Start infrastructure services +make backend # Run backend locally +make frontend # Run frontend locally +``` \ No newline at end of file From 06de39ed76ef681d208e3e013b491c61f063417f Mon Sep 17 00:00:00 2001 From: Edwin Jose Date: Wed, 10 Sep 2025 13:07:16 -0400 Subject: [PATCH 05/13] Add CONTRIBUTING.md with development guidelines Introduces a comprehensive CONTRIBUTING.md file detailing environment setup, development workflow, architecture overview, testing, code style, debugging, deployment, and pull request guidelines for OpenRAG. --- CONTRIBUTING.md | 282 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 282 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..370dc676 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,282 @@ +# Contributing to OpenRAG + +Thank you for your interest in contributing to OpenRAG! This guide will help you set up your development environment and understand the development workflow. + +## ๐Ÿ› ๏ธ Development Setup + +### Prerequisites + +- Docker or Podman with Compose installed +- Make (for development commands) +- Python 3.13+ with uv package manager +- Node.js 18+ and npm + +### Environment Setup + +```bash +# Clone the repository +git clone +cd openrag + +# Setup development environment +make setup # Creates .env and installs dependencies +``` + +### Configuration + +Edit `.env` with your API keys and credentials. See the main README for required environment variables. + +## ๐Ÿ”ง Development Commands + +All development tasks are managed through the Makefile. Run `make help` to see all available commands. + +### Environment Management + +```bash +# Setup development environment +make setup # Initial setup: creates .env, installs dependencies + +# Start development environments +make dev # Full stack with GPU support +make dev-cpu # Full stack with CPU only +make infra # Infrastructure only (for local development) + +# Container management +make stop # Stop all containers +make restart # Restart all containers +make clean # Stop and remove containers/volumes +make status # Show container status +make health # Check service health +``` + +### Local Development Workflow + +For faster development iteration, run infrastructure in Docker and backend/frontend locally: + +```bash +# Terminal 1: Start infrastructure +make infra + +# Terminal 2: Run backend locally +make backend + +# Terminal 3: Run frontend locally +make frontend +``` + +This setup provides: +- Faster code reloading +- Direct access to logs and debugging +- Easier testing and iteration + +### Dependency Management + +```bash +make install # Install all dependencies +make install-be # Install backend dependencies (uv) +make install-fe # Install frontend dependencies (npm) +``` + +### Building and Testing + +```bash +# Build Docker images +make build # Build all images +make build-be # Build backend image only +make build-fe # Build frontend image only + +# Testing and quality +make test # Run backend tests +make lint # Run linting checks +``` + +### Debugging + +```bash +# View logs +make logs # All container logs +make logs-be # Backend logs only +make logs-fe # Frontend logs only +make logs-lf # Langflow logs only +make logs-os # OpenSearch logs only + +# Shell access +make shell-be # Shell into backend container +make shell-lf # Shell into langflow container +make shell-os # Shell into opensearch container +``` + +### Database Operations + +```bash +# Reset OpenSearch indices +make db-reset # Delete and recreate indices +``` + +### Flow Management + +```bash +# Upload flow to Langflow +make flow-upload FLOW_FILE=path/to/flow.json +``` + +## ๐Ÿ—๏ธ Architecture Overview + +### Backend (Python/Starlette) +- **API Layer**: RESTful endpoints in `src/api/` +- **Services**: Business logic in `src/services/` +- **Models**: Data models and processors in `src/models/` +- **Connectors**: External service integrations in `src/connectors/` +- **Configuration**: Settings management in `src/config/` + +### Frontend (Next.js/React) +- **Pages**: Next.js app router in `frontend/src/app/` +- **Components**: Reusable UI components in `frontend/src/components/` +- **Contexts**: State management in `frontend/src/contexts/` +- **Hooks**: Custom React hooks in `frontend/hooks/` + +### Infrastructure +- **OpenSearch**: Vector database and search engine +- **Langflow**: Visual flow builder for LLM workflows +- **Docker**: Containerization and orchestration + +## ๐Ÿงช Testing + +### Backend Tests +```bash +make test # Run all backend tests +uv run pytest # Direct pytest execution +uv run pytest -v # Verbose test output +``` + +### Frontend Tests +```bash +cd frontend && npm test # Run frontend tests +cd frontend && npm run lint # Frontend linting +``` + +## ๐Ÿ“ Code Style + +### Backend +- Follow PEP 8 style guidelines +- Use type hints where appropriate +- Document functions and classes with docstrings +- Use structured logging with `structlog` + +### Frontend +- Follow React/Next.js best practices +- Use TypeScript for type safety +- Follow the established component structure +- Use Tailwind CSS for styling + +## ๐Ÿ” Debugging Tips + +### Backend Debugging +```bash +# Enable debug logging +export LOG_LEVEL=DEBUG + +# Run backend locally for debugging +make infra && make backend + +# Check OpenSearch indices +curl -X GET "http://localhost:9200/_cat/indices?v" \ + -u admin:$(grep OPENSEARCH_PASSWORD .env | cut -d= -f2) +``` + +### Frontend Debugging +```bash +# Run with detailed logs +cd frontend && npm run dev + +# Build and analyze bundle +cd frontend && npm run build +``` + +### Container Debugging +```bash +# Check container status +make status + +# View real-time logs +make logs + +# Shell into containers +make shell-be # Backend container +make shell-lf # Langflow container +``` + +## ๐Ÿš€ Deployment Testing + +### Local Testing +```bash +# Test full stack deployment +make clean && make dev + +# Test CPU-only deployment +make clean && make dev-cpu +``` + +### Performance Testing +```bash +# Monitor resource usage +docker stats + +# Check service health +make health +``` + +## ๐Ÿ“š Development Resources + +### Key Files +- `src/main.py` - Backend application entry point +- `src/config/settings.py` - Configuration management +- `frontend/src/app/layout.tsx` - Frontend root layout +- `docker-compose.yml` - Container orchestration +- `Makefile` - Development commands + +### Documentation +- API documentation: Available at `http://localhost:8000/docs` when backend is running +- Component Storybook: (if implemented) at `http://localhost:6006` +- OpenSearch: `http://localhost:5601` (Dashboards) +- Langflow: `http://localhost:7860` + +## ๐Ÿ› Common Issues + +### Port Conflicts +Ensure these ports are available: +- 3000 (Frontend) +- 7860 (Langflow) +- 8000 (Backend) +- 9200 (OpenSearch) +- 5601 (OpenSearch Dashboards) + +### Memory Issues +- Use `make dev-cpu` for CPU-only mode +- Increase Docker memory allocation +- For Podman on macOS: see troubleshooting in main README + +### Environment Issues +```bash +# Reset environment +make clean +cp .env.example .env # Reconfigure as needed +make setup +``` + +## ๐Ÿ“‹ Pull Request Guidelines + +1. **Fork and Branch**: Create a feature branch from `main` +2. **Test**: Ensure all tests pass with `make test` and `make lint` +3. **Documentation**: Update relevant documentation +4. **Commit Messages**: Use clear, descriptive commit messages +5. **PR Description**: Explain changes and include testing instructions + +## ๐Ÿค Getting Help + +- Check existing issues and discussions +- Use `make status` and `make health` for debugging +- Review logs with `make logs` +- Join our community discussions + +Thank you for contributing to OpenRAG! ๐Ÿš€ From 8412eb5fdaba3df90b030b49831e92d6ae7f520a Mon Sep 17 00:00:00 2001 From: Edwin Jose Date: Fri, 12 Sep 2025 11:57:23 -0400 Subject: [PATCH 06/13] Update CONTRIBUTING.md --- CONTRIBUTING.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 370dc676..19b01709 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -254,7 +254,14 @@ Ensure these ports are available: ### Memory Issues - Use `make dev-cpu` for CPU-only mode - Increase Docker memory allocation -- For Podman on macOS: see troubleshooting in main README +- Podman on macOS: increase the VM memory if needed + +```bash +podman machine stop +podman machine rm +podman machine init --memory 8192 # 8 GB example +podman machine start +``` ### Environment Issues ```bash From cc293336a84e1da4f881d3900d742fd3ec573513 Mon Sep 17 00:00:00 2001 From: Edwin Jose Date: Fri, 12 Sep 2025 11:57:32 -0400 Subject: [PATCH 07/13] Create configuration.md --- docs/configuration.md | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 docs/configuration.md diff --git a/docs/configuration.md b/docs/configuration.md new file mode 100644 index 00000000..fcc76f37 --- /dev/null +++ b/docs/configuration.md @@ -0,0 +1,43 @@ +# Configuration + +OpenRAG uses environment variables for configuration. Copy `.env.example` to `.env` and populate with your values: + +```bash +cp .env.example .env +``` + +## Required Variables + +| Variable | Description | +|----------|-------------| +| `OPENAI_API_KEY` | Your OpenAI API key | +| `OPENSEARCH_PASSWORD` | Password for OpenSearch admin user | +| `LANGFLOW_SUPERUSER` | Langflow admin username | +| `LANGFLOW_SUPERUSER_PASSWORD` | Langflow admin password | +| `LANGFLOW_CHAT_FLOW_ID` | ID of your Langflow chat flow | +| `LANGFLOW_INGEST_FLOW_ID` | ID of your Langflow ingestion flow | +| `NUDGES_FLOW_ID` | ID of your Langflow nudges/suggestions flow | + +## Ingestion Configuration + +| Variable | Description | +|----------|-------------| +| `DISABLE_INGEST_WITH_LANGFLOW` | Disable Langflow ingestion pipeline (default: `false`) | + +- `false` or unset: Uses Langflow pipeline (upload โ†’ ingest โ†’ delete) +- `true`: Uses traditional OpenRAG processor for document ingestion + +## Optional Variables + +| Variable | Description | +|----------|-------------| +| `LANGFLOW_PUBLIC_URL` | Public URL for Langflow (default: `http://localhost:7860`) | +| `GOOGLE_OAUTH_CLIENT_ID` / `GOOGLE_OAUTH_CLIENT_SECRET` | Google OAuth authentication | +| `MICROSOFT_GRAPH_OAUTH_CLIENT_ID` / `MICROSOFT_GRAPH_OAUTH_CLIENT_SECRET` | Microsoft OAuth | +| `WEBHOOK_BASE_URL` | Base URL for webhook endpoints | +| `AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY` | AWS integrations | +| `SESSION_SECRET` | Session management (default: auto-generated, change in production) | +| `LANGFLOW_KEY` | Explicit Langflow API key (auto-generated if not provided) | +| `LANGFLOW_SECRET_KEY` | Secret key for Langflow internal operations | + +See `.env.example` for a complete list with descriptions, and `docker-compose*.yml` for runtime usage. From 696c3d81a0d6ca7a5a5add5fe75b506c88d11dcc Mon Sep 17 00:00:00 2001 From: Edwin Jose Date: Fri, 12 Sep 2025 11:57:35 -0400 Subject: [PATCH 08/13] Create docker.md --- docs/docker.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 docs/docker.md diff --git a/docs/docker.md b/docs/docker.md new file mode 100644 index 00000000..ab0cb71d --- /dev/null +++ b/docs/docker.md @@ -0,0 +1,35 @@ +# Docker Deployment + +## Standard Deployment + +```bash +# Build and start all services +docker compose build +docker compose up -d +``` + +## CPU-Only Deployment + +For environments without GPU support: + +```bash +docker compose -f docker-compose-cpu.yml up -d +``` + +## Force Rebuild + +If you need to reset state or rebuild everything: + +```bash +docker compose up --build --force-recreate --remove-orphans +``` + +## Service URLs + +After deployment, services are available at: + +- Frontend: http://localhost:3000 +- Backend API: http://localhost:8000 +- Langflow: http://localhost:7860 +- OpenSearch: http://localhost:9200 +- OpenSearch Dashboards: http://localhost:5601 From dbb44044e546a3251193c6cca0231d7726aefcea Mon Sep 17 00:00:00 2001 From: Edwin Jose Date: Fri, 12 Sep 2025 11:57:39 -0400 Subject: [PATCH 09/13] Create troubleshooting.md --- docs/troubleshooting.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 docs/troubleshooting.md diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md new file mode 100644 index 00000000..5ffd2bc8 --- /dev/null +++ b/docs/troubleshooting.md @@ -0,0 +1,19 @@ +# Troubleshooting + +## Podman on macOS + +If using Podman on macOS, you may need to increase VM memory: + +```bash +podman machine stop +podman machine rm +podman machine init --memory 8192 # 8 GB example +podman machine start +``` + +## Common Issues + +1. OpenSearch fails to start: Check that `OPENSEARCH_PASSWORD` is set and meets requirements +2. Langflow connection issues: Verify `LANGFLOW_SUPERUSER` credentials are correct +3. Out of memory errors: Increase Docker memory allocation or use CPU-only mode +4. Port conflicts: Ensure ports 3000, 7860, 8000, 9200, 5601 are available From b03ea084bcf5485c06fd33ce0198a6f29258e1c6 Mon Sep 17 00:00:00 2001 From: Edwin Jose Date: Fri, 12 Sep 2025 11:57:46 -0400 Subject: [PATCH 10/13] Create tui.md --- docs/tui.md | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 docs/tui.md diff --git a/docs/tui.md b/docs/tui.md new file mode 100644 index 00000000..87fedfe0 --- /dev/null +++ b/docs/tui.md @@ -0,0 +1,61 @@ +# OpenRAG TUI Guide + +The OpenRAG Terminal User Interface (TUI) provides a streamlined way to set up, configure, and monitor your OpenRAG deployment directly from the terminal. + +![OpenRAG TUI Interface](../assets/OpenRAG_TUI_2025-09-10T13_04_11_757637.svg) + +## Launch + +```bash +uv sync +uv run openrag +``` + +## Features + +### Welcome Screen +- Quick setup options: basic (no auth) or advanced (OAuth) +- Service monitoring: container status at a glance +- Quick actions: diagnostics, logs, configuration + +### Configuration Screen +- Environment variables: guided forms for required settings +- API keys: secure input with validation +- OAuth setup: Google and Microsoft +- Document paths: configure ingestion directories +- Auto-save: generates and updates `.env` + +### Service Monitor +- Container status: real-time state of services +- Resource usage: CPU, memory, network +- Service control: start/stop/restart +- Health checks: health indicators for all components + +### Log Viewer +- Live logs: stream logs across services +- Filtering: by service (backend, frontend, Langflow, OpenSearch) +- Levels: DEBUG/INFO/WARNING/ERROR +- Export: save logs for later analysis + +### Diagnostics +- System checks: Docker/Podman availability and configuration +- Environment validation: verify required variables +- Network tests: connectivity between services +- Performance metrics: system capacity and recommendations + +## Navigation +- Arrow keys: move between options +- Tab/Shift+Tab: switch fields and buttons +- Enter: select/confirm +- Escape: back +- Q: quit +- Number keys (1-4): quick access to main screens + +## Benefits +1. Simplified setup without manual file edits +2. Clear visual feedback and error messages +3. Integrated monitoring and control +4. Cross-platform: Linux, macOS, Windows +5. Fully terminal-based; no browser required + + From a531ed4ab423c6b1bd0de2e60b0738a84b5dd79c Mon Sep 17 00:00:00 2001 From: Edwin Jose Date: Fri, 12 Sep 2025 11:57:48 -0400 Subject: [PATCH 11/13] Update README.md --- README.md | 129 +++++------------------------------------------------- 1 file changed, 12 insertions(+), 117 deletions(-) diff --git a/README.md b/README.md index 021d8d3b..1b8025c4 100644 --- a/README.md +++ b/README.md @@ -3,15 +3,13 @@ [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/phact/openrag) OpenRAG is a comprehensive Retrieval-Augmented Generation platform that enables intelligent document search and AI-powered conversations. Users can upload, process, and query documents through a chat interface backed by large language models and semantic search capabilities. The system utilizes Langflow for document ingestion, retrieval workflows, and intelligent nudges, providing a seamless RAG experience. Built with Starlette, Next.js, OpenSearch, and Langflow integration. - -## ๐Ÿ“‹ Table of Contents - -- [Quick Start](#quick-start) -- [TUI Interface](#tui-interface) -- [Configuration](#configuration) -- [Docker Deployment](#docker-deployment) -- [Development](#development) -- [Troubleshooting](#troubleshooting) + ## ๐Ÿš€ Quick Start @@ -43,7 +41,8 @@ LANGFLOW_CHAT_FLOW_ID=your_chat_flow_id LANGFLOW_INGEST_FLOW_ID=your_ingest_flow_id NUDGES_FLOW_ID=your_nudges_flow_id ``` - +ee extended configuration, including ingestion and optional variables: [docs/configuration.md](docs/ +configuration.md) ### 3. Start OpenRAG ```bash @@ -79,95 +78,10 @@ uv run openrag ### TUI Features -The TUI provides several screens and capabilities: - -#### Welcome Screen -- **Quick Setup Options**: Choose between basic setup (no authentication) or advanced setup (with OAuth) -- **Service Monitoring**: Check if containers are running and their status -- **Quick Actions**: Access diagnostics, logs, and configuration screens - -#### Configuration Screen -- **Environment Variables**: Easy-to-use forms for setting up required configuration -- **API Keys**: Secure input for OpenAI API keys with validation -- **OAuth Setup**: Configure Google and Microsoft authentication -- **Document Paths**: Set up document ingestion directories -- **Auto-Save**: Automatically generates and saves `.env` file - -#### Service Monitor -- **Container Status**: Real-time view of all OpenRAG services -- **Resource Usage**: Monitor CPU, memory, and network usage -- **Service Control**: Start, stop, and restart individual services -- **Health Checks**: Built-in health monitoring for all components - -#### Log Viewer -- **Real-time Logs**: Live streaming of container logs -- **Service Filtering**: View logs for specific services (backend, frontend, Langflow, OpenSearch) -- **Log Levels**: Filter by log levels (DEBUG, INFO, WARNING, ERROR) -- **Export Options**: Save logs to files for analysis - -#### Diagnostics -- **System Check**: Verify Docker/Podman installation and configuration -- **Environment Validation**: Check required environment variables -- **Network Testing**: Test connectivity between services -- **Performance Metrics**: System resource availability and recommendations - -### TUI Navigation - -- **Arrow Keys**: Navigate between options and screens -- **Tab/Shift+Tab**: Move between form fields and buttons -- **Enter**: Select/activate options -- **Escape**: Go back to previous screen -- **Q**: Quit the application -- **Number Keys (1-4)**: Quick access to main screens from welcome - -### Benefits of Using the TUI - -1. **Simplified Setup**: No need to manually edit configuration files -2. **Visual Feedback**: Clear status indicators and error messages -3. **Integrated Monitoring**: Everything in one interface -4. **Cross-Platform**: Works on Linux, macOS, and Windows -5. **No Browser Required**: Fully terminal-based interface +See the full TUI guide for features, navigation, and benefits: [docs/tui.md](docs/tui.md) -## โš™๏ธ Configuration -### Environment Variables - -OpenRAG uses environment variables for configuration. All variables should be set in your `.env` file. - -#### Required Variables - -| Variable | Description | -|----------|-------------| -| `OPENAI_API_KEY` | Your OpenAI API key | -| `OPENSEARCH_PASSWORD` | Password for OpenSearch admin user | -| `LANGFLOW_SUPERUSER` | Langflow admin username | -| `LANGFLOW_SUPERUSER_PASSWORD` | Langflow admin password | -| `LANGFLOW_CHAT_FLOW_ID` | ID of your Langflow chat flow | -| `LANGFLOW_INGEST_FLOW_ID` | ID of your Langflow ingestion flow | -| `NUDGES_FLOW_ID` | ID of your Langflow nudges/suggestions flow | - -#### Ingestion Configuration - -| Variable | Description | -|----------|-------------| -| `DISABLE_INGEST_WITH_LANGFLOW` | Disable Langflow ingestion pipeline (default: `false`) | - -- `false` or unset: Uses Langflow pipeline (upload โ†’ ingest โ†’ delete) -- `true`: Uses traditional OpenRAG processor for document ingestion - -#### Optional Variables - -| Variable | Description | -|----------|-------------| -| `LANGFLOW_PUBLIC_URL` | Public URL for Langflow (default: `http://localhost:7860`) | -| `GOOGLE_OAUTH_CLIENT_ID` / `GOOGLE_OAUTH_CLIENT_SECRET` | Google OAuth authentication | -| `MICROSOFT_GRAPH_OAUTH_CLIENT_ID` / `MICROSOFT_GRAPH_OAUTH_CLIENT_SECRET` | Microsoft OAuth | -| `WEBHOOK_BASE_URL` | Base URL for webhook endpoints | -| `AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY` | AWS integrations | -| `SESSION_SECRET` | Session management (default: auto-generated, change in production) | -| `LANGFLOW_KEY` | Explicit Langflow API key (auto-generated if not provided) | -| `LANGFLOW_SECRET_KEY` | Secret key for Langflow internal operations | ## ๐Ÿณ Docker Deployment @@ -187,23 +101,7 @@ For environments without GPU support: docker compose -f docker-compose-cpu.yml up -d ``` -### Force Rebuild - -If you need to reset state or rebuild everything: - -```bash -docker compose up --build --force-recreate --remove-orphans -``` - -### Service URLs - -After deployment, services are available at: - -- **Frontend**: http://localhost:3000 -- **Backend API**: http://localhost:8000 -- **Langflow**: http://localhost:7860 -- **OpenSearch**: http://localhost:9200 -- **OpenSearch Dashboards**: http://localhost:5601 +More deployment commands and tips: [docs/docker.md](docs/docker.md) ## ๐Ÿ”ง Troubleshooting @@ -220,10 +118,7 @@ podman machine start ### Common Issues -1. **OpenSearch fails to start**: Check that `OPENSEARCH_PASSWORD` is set and meets requirements -2. **Langflow connection issues**: Verify `LANGFLOW_SUPERUSER` credentials are correct -3. **Out of memory errors**: Increase Docker memory allocation or use CPU-only mode -4. **Port conflicts**: Ensure ports 3000, 7860, 8000, 9200, 5601 are available +See common issues and fixes: [docs/troubleshooting.md](docs/troubleshooting.md) From 37c780152a5e42fd9f347b8d8fe50f08f3964d0e Mon Sep 17 00:00:00 2001 From: Edwin Jose Date: Fri, 12 Sep 2025 11:58:08 -0400 Subject: [PATCH 12/13] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1b8025c4..88571c7b 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ OpenRAG is a comprehensive Retrieval-Augmented Generation platform that enables ```bash # Clone and setup environment -git clone +git clone https://github.com/langflow-ai/openrag.git cd openrag make setup # Creates .env and installs dependencies ``` From 6bb23ad131b59196dc7e6c7dea18631122b24806 Mon Sep 17 00:00:00 2001 From: Edwin Jose Date: Fri, 12 Sep 2025 12:18:26 -0400 Subject: [PATCH 13/13] Update README.md --- README.md | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 88571c7b..d7de0fd2 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ +
+ # OpenRAG -[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/phact/openrag) - -OpenRAG is a comprehensive Retrieval-Augmented Generation platform that enables intelligent document search and AI-powered conversations. Users can upload, process, and query documents through a chat interface backed by large language models and semantic search capabilities. The system utilizes Langflow for document ingestion, retrieval workflows, and intelligent nudges, providing a seamless RAG experience. Built with Starlette, Next.js, OpenSearch, and Langflow integration. +
๐Ÿš€ Quick Start   |   ๐Ÿ’ป TUI Interface   |   @@ -11,6 +11,27 @@ OpenRAG is a comprehensive Retrieval-Augmented Generation platform that enables ๐Ÿ”ง Troubleshooting
+ + +OpenRAG is a comprehensive Retrieval-Augmented Generation platform that enables intelligent document search and AI-powered conversations. Users can upload, process, and query documents through a chat interface backed by large language models and semantic search capabilities. The system utilizes Langflow for document ingestion, retrieval workflows, and intelligent nudges, providing a seamless RAG experience. Built with Starlette, Next.js, OpenSearch, and Langflow integration. [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/phact/openrag) + + +
+ Langflow +    + OpenSearch +    + Starlette +    + Next.js + +
+ + + + + + ## ๐Ÿš€ Quick Start ### Prerequisites