{"id":30135913,"url":"https://github.com/nlweb-ai/nlweb-net","last_synced_at":"2025-08-10T22:54:57.230Z","repository":{"id":300155185,"uuid":"1005252512","full_name":"nlweb-ai/nlweb-net","owner":"nlweb-ai","description":"The official .NET 9 implementation of the NLWeb protocol for building natural language web interfaces with support for List, Summarize, and Generate query modes, plus Model Context Protocol (MCP) integration for AI clients.","archived":false,"fork":false,"pushed_at":"2025-08-01T23:13:25.000Z","size":1405,"stargazers_count":0,"open_issues_count":8,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-02T01:16:44.293Z","etag":null,"topics":["csharp","csharp-library","nlweb","nlweb-impl"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nlweb-ai.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-19T23:50:59.000Z","updated_at":"2025-08-01T23:25:17.000Z","dependencies_parsed_at":"2025-07-14T17:25:12.679Z","dependency_job_id":"29d228c3-baba-43f0-ac4c-9899a51b9da8","html_url":"https://github.com/nlweb-ai/nlweb-net","commit_stats":null,"previous_names":["jongalloway/nlwebnet","nlweb-ai/nlweb-net"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/nlweb-ai/nlweb-net","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nlweb-ai%2Fnlweb-net","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nlweb-ai%2Fnlweb-net/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nlweb-ai%2Fnlweb-net/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nlweb-ai%2Fnlweb-net/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nlweb-ai","download_url":"https://codeload.github.com/nlweb-ai/nlweb-net/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nlweb-ai%2Fnlweb-net/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269803772,"owners_count":24477650,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-10T02:00:08.965Z","response_time":71,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","csharp-library","nlweb","nlweb-impl"],"created_at":"2025-08-10T22:54:56.309Z","updated_at":"2025-08-10T22:54:57.218Z","avatar_url":"https://github.com/nlweb-ai.png","language":"C#","funding_links":[],"categories":["📚 Projects (2474 total)"],"sub_categories":["MCP Servers"],"readme":"# NLWebNet\n\n[![.NET Build and Test](https://github.com/nlweb-ai/nlweb-net/actions/workflows/build.yml/badge.svg)](https://github.com/jongalloway/NLWebNet/actions/workflows/build.yml)\n[![NuGet Version](https://img.shields.io/nuget/v/NLWebNet.svg)](https://www.nuget.org/packages/NLWebNet/)\n[![NuGet Downloads](https://img.shields.io/nuget/dt/NLWebNet.svg)](https://www.nuget.org/packages/NLWebNet/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![.NET 9](https://img.shields.io/badge/.NET-9.0-blue.svg)](https://dotnet.microsoft.com/download/dotnet/9.0)\n[![MSTest](https://img.shields.io/badge/Testing-MSTest-purple.svg)](https://github.com/microsoft/testfx)\n\nA .NET implementation of the [NLWeb protocol](https://github.com/microsoft/NLWeb) for building natural language web interfaces. This project provides both a reusable library and a demo application showcasing the NLWeb standard.\n\n\u003e **⚠️ PROOF OF CONCEPT - NOT PRODUCTION READY**\n\u003e\n\u003e This is an experimental implementation created for **testing and evaluation purposes only**. While functional, this library is not intended for production use and should be considered a proof of concept to demonstrate NLWeb protocol capabilities in .NET environments.\n\u003e\n\u003e **Use cases:**\n\u003e\n\u003e - 🧪 Protocol evaluation and experimentation\n\u003e - 📚 Learning and understanding NLWeb concepts\n\u003e - 🔬 Research and development prototyping\n\u003e - 🎯 Testing integration patterns with AI services\n\u003e\n\u003e **Not recommended for:**\n\u003e\n\u003e - ❌ Production applications\n\u003e - ❌ Critical business systems\n\u003e - ❌ Public-facing services\n\u003e - ❌ Applications requiring enterprise support\n\n## 📋 Overview\n\nNLWeb is a protocol for creating conversational interfaces to web content and data. It enables natural language querying with three main modes:\n\n- **List**: Returns ranked search results\n- **Summarize**: Provides AI-generated summaries with supporting results\n- **Generate**: Full RAG (Retrieval-Augmented Generation) responses\n\nThis implementation follows the [official NLWeb specification](https://github.com/microsoft/NLWeb) and includes Model Context Protocol (MCP) support for enhanced AI integration.\n\n## 🏗️ Repository Structure\n\n\n```text\nNLWebNet/\n├── .github/                   # 🔧 GitHub workflows, dependabot, and automation\n│   ├── workflows/             # CI/CD pipeline definitions\n│   ├── dependabot.yml         # Dependency update automation\n│   └── custom-instructions.md # Development guidelines\n├── src/NLWebNet/              # 📦 Core library (published NuGet package)\n│   ├── Models/                # Request/response data models\n│   ├── Services/              # Business logic interfaces and implementations\n│   ├── Endpoints/             # Minimal API endpoints (/ask, /mcp)\n│   ├── MCP/                   # Model Context Protocol integration\n│   ├── Extensions/            # DI and middleware extensions\n│   └── Middleware/            # Request processing middleware\n├── samples/                   # 🎯 Sample applications and usage examples\n│   ├── Demo/                  # 🎮 .NET 9 Blazor Web App demo application\n│   ├── AspireDemo/            # 🏗️ .NET Aspire sample application\n│   └── AspireHost/            # 🏗️ .NET Aspire orchestration host\n├── deployment/                # 🚀 Deployment configurations and scripts\n│   ├── azure/                 # Azure-specific deployment templates\n│   ├── docker/                # Docker and container configurations\n│   ├── kubernetes/            # Kubernetes manifests and Helm charts\n│   └── scripts/               # Deployment automation scripts\n├── doc/                       # 📚 Documentation and setup guides\n│   ├── demo-setup-guide.md    # 🔧 Complete AI integration setup guide\n│   ├── manual-testing-guide.md # 🧪 API testing instructions\n│   └── todo.md                # 📋 Implementation status and roadmap\n├── tests/                     # 🧪 Unit and integration tests\n│   └── NLWebNet.Tests/        # 📋 MSTest test project (264 tests)\n├── scripts/                   # 🛠️ Build and utility scripts\n│   └── markdown-tools/        # Markdown linting and formatting tools\n├── .dockerignore              # Docker ignore patterns\n├── .gitignore                 # Git ignore patterns\n├── .markdownlint.json         # Markdown linting configuration\n├── CHANGELOG.md               # Version history and release notes\n├── LICENSE                    # MIT license\n├── NLWebNet.sln               # Visual Studio solution file\n├── NuGet.Config               # NuGet package source configuration\n└── README.md                  # This file\n\n```\n\n## 🔄 NLWeb Protocol Flow\n\n\n```mermaid\nsequenceDiagram\n    participant Client\n    participant NLWebNet\n    participant DataBackend\n    participant LLM as AI Service\n\n    Client-\u003e\u003eNLWebNet: POST /ask\n    Note over Client,NLWebNet: query, mode, site, streaming, etc.\n\n    NLWebNet-\u003e\u003eNLWebNet: Generate query_id (if not provided)\n    NLWebNet-\u003e\u003eNLWebNet: Process/decontextualize query\n\n    alt mode = \"list\"\n        NLWebNet-\u003e\u003eDataBackend: Search query\n        DataBackend--\u003e\u003eNLWebNet: Ranked results\n    else mode = \"summarize\"\n        NLWebNet-\u003e\u003eDataBackend: Search query\n        DataBackend--\u003e\u003eNLWebNet: Ranked results\n        NLWebNet-\u003e\u003eLLM: Generate summary\n        LLM--\u003e\u003eNLWebNet: Summary text\n    else mode = \"generate\"\n        NLWebNet-\u003e\u003eDataBackend: Search query\n        DataBackend--\u003e\u003eNLWebNet: Context documents\n        NLWebNet-\u003e\u003eLLM: Generate RAG response\n        LLM--\u003e\u003eNLWebNet: Generated response\n    end\n\n    NLWebNet--\u003e\u003eClient: JSON response with results\n    Note over Client,NLWebNet: query_id, results[], summary?, etc.\n\n```\n\n## 🎯 API Endpoints\n\n### `/ask` - Primary NLWeb Endpoint\n\nNatural language query interface supporting all NLWeb protocol features.\n\n**Required Parameters:**\n\n- `query` - Natural language query string\n\n**Optional Parameters:**\n\n- `site` - Target site/domain subset\n- `prev` - Comma-separated previous queries for context\n- `decontextualized_query` - Pre-processed query (skips decontextualization)\n- `streaming` - Enable streaming responses (default: true)\n- `query_id` - Custom query identifier (auto-generated if not provided)\n- `mode` - Query mode: `list` (default), `summarize`, or `generate`\n\n### `/mcp` - Model Context Protocol Endpoint\n\nMCP-compatible interface with additional methods:\n\n- `list_tools` - Available tools\n- `list_prompts` - Available prompts\n- `call_tool` - Execute tools\n- `get_prompt` - Retrieve prompt templates\n\n## 🏛️ Architecture Overview\n\n\n```mermaid\ngraph TB\n    subgraph \"NLWebNet Library\"\n        API[Minimal APIs\u003cbr\u003e/ask, /mcp]\n        MW[Middleware\u003cbr\u003ePipeline]\n        EXT[Extensions\u003cbr\u003eDI \u0026 Config]\n        SVC[Business Logic\u003cbr\u003eServices]\n        MCP[MCP Integration]\n        MODELS[Data Models]\n    end\n      subgraph \"Demo Application\"\n        BLAZOR[.NET 9 Blazor Web App UI]\n        DEMO[Modern Blazor Components]\n    end\n\n    subgraph \"External Services\"\n        AI[AI/LLM Service\u003cbr\u003eAzure OpenAI, etc.]\n        DATA[Data Backend\u003cbr\u003eSearch Index, DB, etc.]\n    end\n\n    CLIENT[HTTP Clients\u003cbr\u003eWeb, Mobile, etc.] --\u003e API\n    BLAZOR --\u003e API\n    API --\u003e MW\n    MW --\u003e SVC\n    SVC --\u003e MCP\n    SVC --\u003e AI\n    SVC --\u003e DATA\n\n    DEMO --\u003e BLAZOR\n\n    classDef library fill:#e1f5fe\n    classDef demo fill:#f3e5f5\n    classDef external fill:#fff3e0\n\n    class API,MW,SVC,MCP,MODELS library\n    class BLAZOR,DEMO demo\n    class AI,DATA external\n\n```\n\n## 🚀 Quick Start\n\n\u003e **📋 Note**: This library is provided for **testing and evaluation purposes only**. This is alpha-quality software that may contain bugs or incomplete features. Please review the development status section before integrating into any project.\n\n### Using the Library in Your Project\n\n1. Add the NLWebNet library to your ASP.NET Core project:\n\n\n```csharp\n// Program.cs\nusing NLWebNet;\n\n// Add NLWebNet services\nbuilder.Services.AddNLWebNet(options =\u003e\n{\n    // Configure options\n    options.DefaultMode = NLWebNet.Models.QueryMode.List;\n    options.EnableStreaming = true;\n});\n\n// Later in the pipeline configuration\napp.UseNLWebNet();     // Add NLWebNet middleware (optional)\napp.MapNLWebNet();     // Map NLWebNet minimal API endpoints\n\n```\n\n### Configuration Format Support\n\nNLWebNet supports multiple configuration formats for enhanced flexibility:\n\n#### YAML Configuration\n\n\n```csharp\n// Enable YAML configuration support\nbuilder.Configuration.AddNLWebConfigurationFormats(builder.Environment);\nbuilder.Services.AddNLWebConfigurationFormats(builder.Configuration);\n\n```\n\nExample YAML configuration (`config_retrieval.yaml`):\n\n\n```yaml\n\n# Multi-backend configuration\n\nwrite_endpoint: primary_backend\nendpoints:\n  primary_backend:\n    enabled: true\n    db_type: azure_ai_search\n    priority: 1\n\n# NLWeb settings\n\nnlweb:\n  default_mode: List\n  enable_streaming: true\n  tool_selection_enabled: true\n\n```\n\n#### XML Tool Definitions\n\nDefine tools for the tool selection framework:\n\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n\u003cToolDefinitions\u003e\n  \u003cTool id=\"search-tool\" name=\"Enhanced Search\" type=\"search\" enabled=\"true\"\u003e\n    \u003cDescription\u003eAdvanced search with semantic understanding\u003c/Description\u003e\n    \u003cParameters\u003e\n      \u003cMaxResults\u003e50\u003c/MaxResults\u003e\n      \u003cTimeoutSeconds\u003e30\u003c/TimeoutSeconds\u003e\n    \u003c/Parameters\u003e\n    \u003cTriggerPatterns\u003e\n      \u003cPattern\u003esearch for*\u003c/Pattern\u003e\n      \u003cPattern\u003efind*\u003c/Pattern\u003e\n    \u003c/TriggerPatterns\u003e\n  \u003c/Tool\u003e\n\u003c/ToolDefinitions\u003e\n\n```\n\n#### Backward Compatibility\n\nAll existing JSON configuration continues to work unchanged. See the [Configuration Format Guide](doc/configuration-format-updates.md) for detailed documentation and migration examples.\n\n### Prerequisites\n\n- .NET 9.0 SDK\n- Visual Studio 2022 or VS Code\n\n### Running the Demo\n\n1. **Clone the repository**\n\n\n   ```bash\n   git clone https://github.com/jongalloway/NLWebNet.git\n   cd NLWebNet\n\n   ```\n\n1. **Build the solution**\n\n\n   ```bash\n   dotnet build\n\n   ```\n\n1. **Run the demo application**\n\n\n   ```bash\n   cd samples/Demo\n   dotnet run\n\n   ```\n\n1. **Open your browser**\n\n   - Demo UI: `http://localhost:5037`\n   - OpenAPI Spec: `http://localhost:5037/openapi/v1.json`\n\n1. **Test the demo features**\n\n   - **Home Page**: Overview and navigation to demo features\n   - **Interactive Demo** (`/nlweb`): UI for testing NLWeb queries with enhanced data source visualization\n     - **Smart Data Source Management**: Automatic routing between RSS feeds (.NET content), Schema.org static data (science fiction), and mock placeholders\n     - **Visual Data Source Indicators**: Top-level Bootstrap cards showing which sources are active\n     - **User Guidance Prompts**: Contextual examples of what content is available to search\n     - **Query input with natural language questions**: Try \".NET 9 features\" for RSS data or \"space movies\" for sci-fi content\n     - **Mode selection**: List, Summarize, Generate modes with streaming support\n     - **Color-coded result badges**: Each result shows its source (RSS/Schema.org/Mock) with visual indicators\n     - **HTML tag removal**: Clean display of RSS feed content\n     - **API testing interface**: Direct endpoint testing with request/response inspection\n   - **API Documentation**: OpenAPI specification for `/ask` and `/mcp` endpoints\n\n\u003e **🔧 Real AI Integration**: The demo uses mock responses by default. For actual AI-powered responses, see the [Complete Setup Guide](doc/demo-setup-guide.md) for Azure OpenAI and OpenAI API integration.\n\n### Using the Library\n\n\u003e **⚠️ Alpha software - for evaluation and testing only**\n\nInstall the NuGet package:\n\n\n```bash\ndotnet add package NLWebNet\n\n```\n\nOr via Package Manager Console:\n\n\n```powershell\nInstall-Package NLWebNet\n\n```\n\nConfigure in your ASP.NET Core application:\n\n\n```csharp\n// Program.cs\nusing NLWebNet;\n\nbuilder.Services.AddNLWebNet(options =\u003e\n{\n    options.DefaultMode = QueryMode.List;\n    options.EnableStreaming = true;\n});\n\napp.MapNLWebNet();\n\n```\n\n### Testing NLWeb Features\n\nThe demo application at `http://localhost:5037` provides testing of core NLWeb protocol features:\n\n**Interactive Demo Pages:**\n\n- **Home Page (`/`)**: Project overview and navigation to demo features\n- **NLWeb Demo (`/nlweb`)**: Interactive query interface with tabbed sections:\n  - **Query Tab**: Interactive form with all NLWeb parameters (query, mode, site, etc.)\n  - **Streaming Tab**: Real-time streaming response demonstration\n  - **API Test Tab**: Raw HTTP request/response testing\n- **API Test (`/api-test`)**: API testing interface with request configuration\n- **MCP Demo (`/mcp-demo`)**: Model Context Protocol demonstration with tools and prompts\n\n**Query Modes Supported:**\n\n- **List Mode**: Returns ranked search results with relevance scoring\n- **Summarize Mode**: AI-generated summaries with supporting results\n- **Generate Mode**: Full RAG responses with context-aware answers\n- **Streaming**: Real-time response delivery with Server-Sent Events\n\n**API Testing:**\n\n- Direct HTTP calls to `/ask` endpoint with various parameters\n- MCP protocol testing via `/mcp` endpoint with tool and prompt support\n- OpenAPI specification available at `/openapi/v1.json`\n- Manual testing guides in `/doc/manual-testing-guide.md`\n\n**Example API Usage:**\n\n\n```bash\n\n# List mode query\n\ncurl -X GET \"http://localhost:5037/ask?query=find+recent+updates\u0026mode=list\"\n\n# POST request with full parameters\n\ncurl -X POST \"http://localhost:5037/ask\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"query\": \"find recent updates\", \"mode\": \"list\", \"site\": \"docs\", \"streaming\": false}'\n\n# Streaming summarize query\n\ncurl -X POST \"http://localhost:5037/ask\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"query\": \"what are the main features?\", \"mode\": \"summarize\", \"streaming\": true}'\n\n# MCP tool listing\n\ncurl -X POST \"http://localhost:5037/mcp\" \\\n  -H \"Content-Type: application/json\" \\  -d '{\"method\": \"list_tools\"}'\n\n```\n\n## 🔧 Real AI Integration\n\nThe demo application works with mock responses by default, but can be configured for real AI-powered responses using Azure OpenAI or OpenAI API.\n\n### Quick Setup\n\n1. **Choose Your AI Provider**: Azure OpenAI (recommended) or OpenAI API\n1. **Install Provider Package**:\n\n\n   ```bash\n   cd samples/Demo\n   dotnet add package Microsoft.Extensions.AI.AzureAIInference  # For Azure OpenAI\n   # OR\n   dotnet add package Microsoft.Extensions.AI.OpenAI           # For OpenAI API\n\n   ```\n\n1. **Configure API Keys**: Update `samples/Demo/appsettings.json` or use user secrets\n1. **Add Service Registration**: Update `Program.cs` with AI service registration\n\n### Complete Setup Guide\n\n📖 **[Complete AI Integration Guide](doc/demo-setup-guide.md)** - Step-by-step instructions for:\n\n- Azure OpenAI and OpenAI API configuration\n- Enhanced data source features and testing scenarios\n- Security best practices for API key management\n- Service registration and dependency injection\n- Troubleshooting common setup issues\n- Configuration options\n- Production deployment considerations\n\nThe guide includes examples, FAQ, troubleshooting, and detailed documentation of the enhanced data source visualization features.\n\n## ⚙️ Configuration\n\nNLWebNet uses standard ASP.NET Core configuration patterns for managing settings and external service credentials.\n\n### Non-Secret Configuration (appsettings.json)\n\nConfigure basic NLWebNet settings in your `appsettings.json`:\n\n\n```json\n{\n  \"NLWebNet\": {\n    \"DefaultMode\": \"List\",\n    \"EnableStreaming\": true,\n    \"DefaultTimeoutSeconds\": 30,\n    \"MaxResultsPerQuery\": 50\n  },\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"NLWebNet\": \"Debug\"\n    }\n  }\n}\n\n```\n\n### Secret Configuration (User Secrets)\n\nFor sensitive data like API keys, use [ASP.NET Core User Secrets](https://learn.microsoft.com/en-us/aspnet/core/security/app-secrets) in development:\n\n1. **Initialize user secrets** for your project:\n\n\n   ```bash\n   dotnet user-secrets init\n\n   ```\n\n1. **Set AI service credentials** (example for Azure OpenAI):\n\n\n   ```bash\n   dotnet user-secrets set \"AzureOpenAI:ApiKey\" \"your-api-key-here\"\n   dotnet user-secrets set \"AzureOpenAI:Endpoint\" \"https://your-resource.openai.azure.com/\"\n   dotnet user-secrets set \"AzureOpenAI:DeploymentName\" \"gpt-4\"\n\n   ```\n\n1. **Set data backend credentials** (example for Azure Search):\n\n\n   ```bash\n   dotnet user-secrets set \"AzureSearch:ApiKey\" \"your-search-api-key\"\n   dotnet user-secrets set \"AzureSearch:ServiceName\" \"your-search-service\"\n   dotnet user-secrets set \"AzureSearch:IndexName\" \"your-index-name\"\n\n   ```\n\n### Production Configuration\n\nFor production deployments, use:\n\n- **Azure Key Vault** - For secrets in Azure environments\n- **Environment Variables** - For containerized deployments\n- **Configuration Providers** - Custom providers for other cloud platforms\n\nExample environment variables for production:\n\n\n```bash\nNLWebNet__DefaultMode=List\nNLWebNet__EnableStreaming=true\nAzureOpenAI__ApiKey=your-production-api-key\nAzureSearch__ApiKey=your-production-search-key\n\n```\n\n### Configuration in Code\n\nAccess configuration in your application:\n\n\n```csharp\n// Program.cs\nusing NLWebNet;\n\nbuilder.Services.AddNLWebNet(options =\u003e\n{\n    // Bind from configuration\n    builder.Configuration.GetSection(\"NLWebNet\").Bind(options);\n});\n\n// Configure AI services\nbuilder.Services.Configure\u003cAzureOpenAIOptions\u003e(\n    builder.Configuration.GetSection(\"AzureOpenAI\"));\n\n// Configure data backend\nbuilder.Services.Configure\u003cAzureSearchOptions\u003e(\n    builder.Configuration.GetSection(\"AzureSearch\"));\n\n```\n\n## 🚀 Deployment\n\nNLWebNet supports multiple deployment options for different environments:\n\n### 🐳 Docker Deployment\n\n\n```bash\n\n# Quick start with Docker Compose\n\ngit clone https://github.com/jongalloway/NLWebNet.git\ncd NLWebNet\ncd deployment/docker \u0026\u0026 docker-compose up --build\n\n```\n\n### ☁️ Azure Cloud Deployment\n\n\n```bash\n\n# Deploy to Azure Container Apps\n\n./deployment/scripts/deploy/deploy-azure.sh -g myResourceGroup -t container-apps\n\n# Deploy to Azure App Service\n\n./deployment/scripts/deploy/deploy-azure.sh -g myResourceGroup -t app-service\n\n```\n\n### ⚙️ Kubernetes Deployment\n\n\n```bash\n\n# Deploy to any Kubernetes cluster\n\nkubectl apply -f deployment/kubernetes/manifests/\n\n```\n\n### 📦 Container Registry\n\nPre-built images available soon. For now, build locally:\n\n\n```bash\n./deployment/scripts/deploy/build-docker.sh -t latest\n\n```\n\n📖 **[Complete Deployment Guide](doc/deployment/README.md)** - Comprehensive instructions for all deployment scenarios.\n\n## 🛠️ Development Status\n\nThis is an **alpha implementation** of the NLWeb protocol, provided as an **experimental package** for testing and evaluation purposes.\n\n### ⚠️ ALPHA SOFTWARE - EXPERIMENTAL RELEASE\n\n**✅ Current Implementation Status:**\n\n- [x] **Core Library**: Complete NLWeb protocol implementation with Minimal API endpoints\n- [x] **Advanced Features**: Multi-backend support, tool selection framework, YAML/XML configuration\n- [x] **Data Models**: Comprehensive request/response models with validation and JSON serialization\n- [x] **Business Logic**: Full service layer with Microsoft.Extensions.AI integration\n- [x] **MCP Integration**: Complete Model Context Protocol support with tools and prompts\n- [x] **Tool System**: Advanced tool handlers (Search, Details, Compare, Ensemble, Recipe)\n- [x] **Demo Application**: .NET 9 Blazor Web App with comprehensive interactive components\n- [x] **AI Integration**: Support for Azure OpenAI, OpenAI API, and GitHub Models\n- [x] **Testing**: Comprehensive test suite (264 tests) with integration and performance testing\n- [x] **Configuration**: Full YAML/XML/JSON support, multi-environment, multi-backend configuration\n- [x] **Documentation**: Complete API documentation, guides, and examples\n- [x] **CI/CD**: Production-grade automated build, test, validation, and publishing pipeline\n- [x] **Deployment**: Docker, Kubernetes, Azure deployment with infrastructure automation\n- [x] **NuGet Package**: Alpha prerelease at [nuget.org/packages/NLWebNet](https://www.nuget.org/packages/NLWebNet/)\n\n**🎯 Suitable For:**\n\n- Protocol evaluation and experimentation\n- Learning NLWeb concepts and implementation patterns\n- Research and development prototyping\n- Testing integration patterns with AI services\n- Exploring .NET AI abstractions and Model Context Protocol\n\n**⚠️ Alpha Release Limitations:**\n\n- **Experimental software** - may contain bugs or incomplete features\n- **API surface may change** in future releases without notice\n- **Not recommended for production use** - suitable for evaluation and experimentation only\n- **Limited support** - community-driven development with no guarantees\n- **Performance and reliability** not yet optimized for production workloads\n- **Feature completeness** varies - some advanced NLWeb features may be basic implementations\n\n## 🤝 Contributing\n\nThis project follows the [NLWeb specification](https://github.com/microsoft/NLWeb). Contributions are welcome!\n\n1. Review the [current tasks](doc/todo.md) and [design decisions](doc/design-decisions.md)\n1. Check [open issues](https://github.com/jongalloway/NLWebNet/issues)\n1. Submit pull requests with tests\n\n## 📖 Related Resources\n\n- **[NLWeb Official Repository](https://github.com/microsoft/NLWeb)** - Specification and reference implementation\n- **[Complete Demo Setup Guide](doc/demo-setup-guide.md)** - Step-by-step AI integration instructions\n- **[Model Context Protocol](https://modelcontextprotocol.io/)** - MCP documentation\n- **[Microsoft.Extensions.AI](https://learn.microsoft.com/en-us/dotnet/ai/)** - .NET AI abstractions\n- **[Manual Testing Guide](doc/manual-testing-guide.md)** - API testing with curl examples\n\n## 📄 License\n\nThis project is licensed under the [MIT License](LICENSE).\n\n## 🏷️ Version\n\n[![NuGet Version](https://img.shields.io/nuget/v/NLWebNet.svg)](https://www.nuget.org/packages/NLWebNet/) - Alpha release with comprehensive features\n\nComplete NLWeb protocol implementation with advanced features, AI integration, and production-ready infrastructure for testing and evaluation purposes.\n\n**Key Features (Production Alpha Quality):**\n\n- ✅ Complete NLWeb protocol implementation (/ask, /mcp endpoints)\n- ✅ Advanced tool system with intelligent query routing\n- ✅ Multi-backend retrieval architecture with concurrent querying\n- ✅ Full AI integration support (Azure OpenAI, OpenAI API, GitHub Models)\n- ✅ .NET 9 Blazor demo application with comprehensive testing interface\n- ✅ Complete Model Context Protocol (MCP) support\n- ✅ Streaming responses with Server-Sent Events\n- ✅ YAML/XML/JSON configuration support\n- ✅ Comprehensive documentation and deployment guides\n- ✅ Production-ready NuGet package with full extension methods\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnlweb-ai%2Fnlweb-net","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnlweb-ai%2Fnlweb-net","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnlweb-ai%2Fnlweb-net/lists"}