The human-in-the-loop RAG knowledge platform
RAGler is an open-source RAG knowledge operations platform that gives you full control over your retrieval-augmented generation pipeline — from ingestion to publishing.
- 📥 Ingest knowledge from web pages, file uploads, or manual text
- 🔍 Review & edit chunks in a draft session before they go live
- 🚀 Publish validated chunks to Qdrant vector collections
- 🤖 AI Agent for chat, collection cleaning, and chunk generation
- 🔌 MCP Server built-in — IDE integration (Cursor, VS Code, etc.) via
/mcpendpoint
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Frontend │────▶│ Backend │────▶│ Qdrant │
│ (Next.js) │ │ (NestJS) │ │ (vectors) │
└──────────────┘ └──────┬───────┘ └──────────────┘
│
┌──────┴───────┐
│ Redis │
│ (sessions) │
└──────────────┘
| Requirement | Version |
|---|---|
| Node.js | 20+ |
| pnpm | 9+ |
| Docker | latest |
| OpenAI Key | — |
git clone https://github.com/scrobot/ragler.git
cd ragler
docker compose up -d redis qdrantcd backend
pnpm install
cp .env.example .env
# set OPENAI_API_KEY in .env
pnpm start:devcurl http://localhost:3000/api/health/liveness
# → {"status":"ok"}cd frontend
pnpm install
pnpm dev
# → http://localhost:3000curl -X POST http://localhost:3000/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'The fastest way to run RAGler — all services in one command.
git clone https://github.com/scrobot/ragler.git
cd ragler
# Set your OpenAI key
echo "OPENAI_API_KEY=sk-your-key-here" > .env
# Start everything
docker compose up -dThis pulls pre-built images from ghcr.io/scrobot/ragler and starts:
| Service | URL | Description |
|---|---|---|
| Frontend | localhost:3000 | RAGler UI |
| Backend API | localhost:3010 | API + Swagger |
| Qdrant | localhost:6333 | Vector DB dashboard |
| Redis | localhost:6379 | Session store |
docker compose up -d --builddocker compose --profile debug up -d
# → RedisInsight at http://localhost:5540docker compose down # stop containers
docker compose down -v # stop + delete volumesBackend config lives in backend/.env. Key variables:
| Variable | Required | Default | Description |
|---|---|---|---|
OPENAI_API_KEY |
✅ | — | OpenAI API key |
REDIS_HOST |
✅ | — | Redis hostname |
REDIS_PORT |
— | 6379 |
Redis port |
QDRANT_URL |
✅ | — | Qdrant connection URL |
PORT |
— | 3000 |
Backend port |
SESSION_TTL |
— | 86400 |
Draft session TTL (seconds) |
SQLITE_PATH |
— | data/ragler.db |
SQLite path for settings |
Toggle features via environment variables or the UI (Settings → Features):
| Flag | Default | Controls |
|---|---|---|
FEATURE_WEB_INGEST |
true |
Web URL ingestion |
FEATURE_FILE_INGEST |
true |
File upload ingestion |
FEATURE_AGENT |
true |
AI agent (chat, cleaning) |
| Resource | Link |
|---|---|
| 📚 Full docs | scrobot.github.io/ragler |
| 🔧 API Swagger | localhost:3000/api/docs |
| 🏛️ Architecture | docs/architecture |
| 🚀 Getting started | docs/getting-started |
cd backend
pnpm test # run all tests
pnpm lint # lint check
pnpm typecheck # type checkContributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- Create your feature branch (
git checkout -b feat/amazing-feature) - Commit using conventional commits (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feat/amazing-feature) - Open a Pull Request
| Problem | Solution |
|---|---|
| Readiness check fails | Check Redis/Qdrant: docker compose ps |
| 401/403 errors | Ensure X-User-ID header is set |
| Ingest failures | Verify OPENAI_API_KEY and network connectivity |
Distributed under the ISC License.
Built with ❤️ by scrobot
