finds.dev← search

// the find

paulpierre/RasaGPT

★ 2,465 · Python · MIT · updated Nov 2025

💬 RasaGPT is the first headless LLM chatbot platform built on top of Rasa and Langchain. Built w/ Rasa, FastAPI, Langchain, LlamaIndex, SQLModel, pgvector, ngrok, telegram

RasaGPT wires together Rasa, LangChain/LlamaIndex, pgvector, FastAPI, and Telegram into a working RAG chatbot with multi-tenancy scaffolding. It's primarily a reference implementation showing how to glue these pieces together, not a production-ready platform. Aimed at developers who want a running starting point rather than assembling all the plumbing themselves.

- The Docker Compose setup genuinely solves real pain points: Rasa on Apple Silicon, ngrok tunnel automation for Telegram webhooks, and correct service startup ordering via wait-for-it.sh.

- Custom pgvector implementation instead of blindly using Langchain's opinionated PGVector class gives you actual schema control, which matters as soon as you have multi-tenant requirements.

- The multi-tenancy data model (Organization → Project → Document → Node) is a reasonable starting schema that most chatbot platforms skip entirely.

- Author is honest about quality: the README explicitly calls it 'far from production code, rife with prompt injection vulnerabilities' and the TODO list is candid about what's missing.

- Pinned to Python 3.9 and uses LlamaIndex's deprecated GPTSimpleVectorIndex—the LlamaIndex API has changed substantially since this was written, so you'll hit import errors immediately without manual dependency archaeology.

- Zero tests (acknowledged in TODO), and the LLM retrieval quality is self-described as 'hit or miss' with fixed 1000-character chunking and basic euclidean distance—this will need significant work before it's useful on real data.

- Requires ngrok for any external access, meaning you're hard-blocked in environments where ngrok is unavailable or prohibited, and the ngrok free tier URL changes on restart, which breaks the Telegram webhook until the rasa-credentials service catches up.

- The index is persisted as a flat index.json file rather than properly in pgvector, making the pgvector integration feel incomplete—you get the vector store plumbing but the actual retrieval path bypasses it.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →