Sail is a modern, high-performance API Gateway built on top of YARP (Yet Another Reverse Proxy). It provides dynamic configuration management with a web-based admin interface, enabling real-time updates to routes, clusters, and policies without restart.
Follow the Quick Start instructions below.
Also check out the documentation for more information on configuration and deployment.
- Dynamic Configuration: Update routes, clusters, and policies in real-time without restarting
- Web-Based Management: Modern React UI for visual configuration management
- Flexible Routing: Path, header, host, and query parameter-based routing
- Authentication: JWT Bearer and OpenID Connect support with dynamic policies
- Traffic Control: CORS, rate limiting, timeouts, and load balancing
- TLS/HTTPS: Certificate management with SNI support
- MongoDB Storage: Persistent configuration with Change Streams for real-time updates
- gRPC API: High-performance configuration distribution across gateway instances
git clone https://github.com/lqlive/sail.git
cd sail
docker-compose up -dAccess the Web UI at http://localhost:5173
Prerequisites:
- .NET 9.0 SDK or later
- MongoDB 4.4 or later
- Node.js 18+ (for Web UI)
1. Start MongoDB
docker run -d -p 27017:27017 --name mongodb mongo:latest2. Run the Management API
cd src/Sail
dotnet run3. Run the Proxy Gateway
cd src/Sail.Proxy
dotnet run4. Run the Web UI
cd web
npm install
npm run devWeb UI (React) → REST API → Sail Management API
↓
MongoDB ← Change Streams → Sail Compass
↓
Sail Proxy (YARP)
sail/
├── src/
│ ├── Sail/ # Management API & gRPC services
│ ├── Sail.Core/ # Core domain models & interfaces
│ ├── Sail.Compass/ # Configuration subscriber & updater
│ ├── Sail.Proxy/ # Gateway runtime (YARP host)
│ └── Sail.Storage.MongoDB/ # MongoDB persistence layer
├── web/ # React admin UI
└── shared/protos/ # gRPC service definitions
- Backend: .NET 9, ASP.NET Core, YARP
- Storage: MongoDB with Change Streams
- Communication: gRPC, REST API
- Frontend: React 18, TypeScript, Vite, Tailwind CSS
Some of the best ways to contribute are to try things out, file issues, and make pull-requests.
- Check out the contributing page to see the best places to log issues and start discussions
- Build from source
Security issues and bugs should be reported privately via GitHub Security Advisories.
- YARP - The reverse proxy foundation
- MongoDB - Configuration storage with change streams
- ASP.NET Core - Web framework
This project is licensed under the MIT License - see the LICENSE file for details.