Skip to content

Repository files navigation

Rumi

Rumi

The open-source AI teaching assistant that lives on WhatsApp
You're not teaching alone.

Quick Start · Features · Languages · Content Library · Agent-Native · Docs · Website

License CI Node.js WhatsApp 15 minute setup Agent-native

A teacher and students using Rumi on WhatsApp


Rumi gives every teacher a coach in their pocket. It runs entirely on WhatsApp — the app teachers already have — and offers classroom coaching on real lessons, reading assessments from a voice note, lesson plans, curriculum quizzes, and professional development, in the teacher's own language, 24 hours a day.

It is built to be cloned and run by anyone. Bring your own API keys, point it at a WhatsApp number, and you have a teaching assistant for your schools — no commissioning, no vendor, no lock-in.

Meets teachers where they areNo app to install, no login to remember, no training day. If a teacher can send a WhatsApp message, they can use Rumi.
Coaches right after the lessonA teacher records their class and gets a framework-scored report plus a reflective conversation — while the lesson is still fresh, not at an annual workshop.
Hears children readA student reads aloud into a voice note; Rumi returns words-per-minute, accuracy, pronunciation and comprehension against grade benchmarks.
Ships with real content890 curriculum videos, 10,929 QA-certified questions, 15,557 voice clips and 3,217 illustrations — free, CDN-hosted, one command to import.
Speaks their language15 languages for chat, voice-note transcription and spoken replies — including a full Indian-language suite and Pakistan's regional languages.
Try it without MetaLink your own WhatsApp with a QR code and start chatting in about fifteen minutes. No Business account, no app review, no waiting.
Set up by talking to itThe repo is agent-native: open it in Claude Code, Cursor or Codex and say "set me up". Or run one guided wizard that asks in plain language and checks every answer for you.
Your keys, your dataYour Supabase, your WhatsApp number, your model provider. Nothing routes through us. Apache-2.0.

Quick Start

# 1. Fork this repo on GitHub, then clone YOUR fork
git clone https://github.com/YOUR-ORG/rumi-platform.git
cd rumi-platform

# 2. Install — tools, dependencies, and the `rumi` command
./install.sh

# 3. Connect Rumi to your accounts — guided, one question at a time
rumi setup

# 4. Start it
rumi start

Then message the number Rumi linked and send Hi.

About fifteen minutes, most of it waiting for a Supabase project to start. rumi setup asks in plain language rather than by variable name ("where should Rumi keep its memory", not SUPABASE_URL), checks every value against the real service as you type it, creates the whole database for you, and saves each answer as it goes — so Ctrl+C is safe and running it again picks up where you stopped.

Important: you need a second phone number to test from

⚠️ By default Rumi links your own WhatsApp account, the same way WhatsApp Web does — so Rumi is your number. You cannot have a useful conversation with yourself, so you need a different number to message it from.

Any of these works: a spare SIM, an old phone, a work phone, a family member's phone, or a second WhatsApp account logged into WhatsApp Web in your browser. Both numbers need WhatsApp installed and active.

If you skip this you will pair successfully, send a message, and see nothing happen — not because anything is broken, but because Rumi is on the other end of your own chat.

What you need

Where to get it What it's for Cost
Node.js 22+ and git nodejs.org Running Rumi free
A Supabase project supabase.com Where Rumi remembers teachers, lessons and assessments free tier is plenty
An OpenRouter key openrouter.ai/keys How Rumi thinks — one key, 500+ models a few dollars goes a long way
A Redis address Upstash · Railway · or local Docker Conversations in progress, and background jobs free tier is plenty
WhatsApp on your phone — The number Rumi answers as free
A second number with WhatsApp a spare SIM, old phone, or colleague The number you message Rumi from — see above free

The wizard offers to start Redis locally with Docker if you have it, so that row is often one keypress. A Meta WhatsApp Business account is not required to try Rumi — see the two ways to run it.

Optional feature keys (Soniox, ElevenLabs, Uplift, Gamma, Kie.ai, Azure, Mistral) unlock the features that use them, and only those. rumi setup offers them at the end and skipping is a real answer — every one can be added later by setting its key. Each is documented in .env.template.

The rumi command

Command What it does
rumi setup Connect Rumi to your accounts. Start here. --reconfigure re-asks everything.
rumi start Start Rumi
rumi status Is Rumi running, which WhatsApp number it answers as, what's switched on
rumi doctor Check every connection in detail, with where to get anything missing
rumi console Open the web console — same answers in a browser, and you can change things there
rumi pair Link (or re-link) WhatsApp — sessions do expire
rumi graduate Move to an official WhatsApp Business number

If install.sh could not put rumi on your PATH, node bin/rumi.js <command> is identical.

Prefer a screen to a terminal? rumi start opens it for you — or go to http://localhost:3000/console yourself. The console shows whether every service is answering, which features are on and which key each one is waiting for, the speech-to-text → AI → text-to-speech pipeline with the model behind each layer, and a live feed of what Rumi is doing right now. You can set any key there instead of editing .env, with the same "where do I get this" links the wizard gives you and a Test connection button on each one. It opens without a password on your own machine, and stays locked anywhere else until you set one. (rumi start --no-open if you would rather it did not.) Full details: docs/console.md.

Would rather not type it yourself? Open the repo in a coding agent (Claude Code, Cursor, Codex) and say "set me up" — it walks you through the same sequence in conversation, following the /setup skill. Setting up a real deployment (hosting, the Meta webhook, WhatsApp Flows, background workers), or prefer the manual route? SETUP.md has the full walkthrough, including getting a WhatsApp number from scratch.


The two ways to run Rumi

Rumi's messaging channel is pluggable. You pick one during setup, in plain language, and you can change your mind later.

Just trying it out Real deployment
What it is Rumi becomes a linked device on your own WhatsApp, exactly like WhatsApp Web An official WhatsApp Business number through Meta's Cloud API
To get started Scan a QR code. ~2 minutes. A Meta Business account, a verified number, and their app-review process
Good for Evaluating, demos, development Schools, districts, anything with real teachers on it
Limits One personal account; WhatsApp may disconnect it. Tap-through forms, approved templates and picture-menu carousels are Meta-only — Rumi asks the same questions as an ordinary chat instead, so nothing is blocked, but it looks plainer. None — the full experience

Moving across is one command: rumi graduate. Teachers, conversations and past assessments all carry over on their own, because Rumi identifies people by phone number rather than by channel. The one thing that cannot follow you is the number itself, so tell your testers to start a chat with the new one.

Rumi also works on Slack and Discord now, in addition to WhatsApp — not instead of it. If your team already lives on Slack or Discord, teachers can talk to Rumi right there, with the same features — coaching, reading assessment, quizzes, attendance, and more. To turn this on, add a Slack or Discord bot's login keys to your .env file (SLACK_BOT_TOKEN + SLACK_SIGNING_SECRET for Slack, DISCORD_BOT_TOKEN for Discord). A few WhatsApp-only touches (like tap-through forms) look a little different on Slack/Discord — Rumi just asks the same questions as a normal message instead — but nothing is missing. See docs/onboarding/sandbox-production-design.md for how this works under the hood.

Or run Rumi on a messenger you own. With Rumi Messenger (a Matrix homeserver plus a Rumi-branded Android and web app), teachers sign in with their phone number and find Rumi already there as a contact — end-to-end encrypted, self-hosted, with no per-message fee. Set MATRIX_HOMESERVER_URL + MATRIX_ACCESS_TOKEN (or run rumi setup). Encryption works on Node 22+. See docs/channels/matrix.md, including what works on Matrix today.


Why Rumi Exists

Across the world, millions of teachers work in isolation — in rural schools, multigrade classrooms, and under-resourced systems where instructional coaches simply don't exist. Traditional professional development reaches teachers once or twice a year at best. The gap between what teachers need and what the system provides is enormous.

Rumi fills that gap. By meeting teachers on WhatsApp — the world's most widely used messaging app — Rumi provides instant coaching on real lessons, reading-fluency assessment, curriculum-aligned content, and multilingual support, all on the phone already in their pocket. The core insight: the best time to coach a teacher is right after they teach, and the best tool is the one they already have.

Why open source? Good teaching support shouldn't depend on which country or company you happen to work for. Any ministry, NGO, school network, or research team can stand up their own instance — adapt the frameworks to their curriculum, run it in their languages, keep their data in their own systems, and improve it for everyone.


What Rumi Does

Every feature lives on WhatsApp. Click any feature for its own page — what it is, how it works, and the API key(s) that switch it on.

Feature What it does Switches on when you set
💬 AI Chat Ask any teaching question by text or voice; get an expert, pedagogy-grounded answer core (uses OPENROUTER_API_KEY); voice needs SONIOX_API_KEY
📝 Registration Friendly WhatsApp onboarding for teachers always on (core)
🎯 Classroom Coaching A class recording → framework-scored report + reflective conversation SONIOX_API_KEY
📏 Lesson-plan Fidelity Did the lesson follow the plan? The plan → observable moves → each checked against the timestamped recording, with the moment as proof LP_FIDELITY_ENABLED=true + SONIOX_API_KEY
📖 Reading Assessment A student reads aloud → fluency, accuracy, pronunciation, comprehension SONIOX_API_KEY
📋 Lesson Plans A topic + grade → a full lesson-plan PDF GAMMA_API_KEY
📸 Pic-to-LP A photo of a textbook page → an illustrated 2-page lesson plan KIE_API_KEY
📚 Homework Pick a class + chapters → a curriculum homework bundle PDF HOMEWORK_FLOW_ID
🧠 Quiz Teacher sends a topic quiz to a class; students answer on their parents' WhatsApp, teacher gets a results report core (uses OPENROUTER_API_KEY)
📝 Test Papers A chapter or a whole unit — from a loaded textbook, the teacher's own lesson plans or an uploaded chapter — → a printable test paper + separate answer key, any language (right-to-left included); edits make new versions, "my papers" re-sends core (uses OPENROUTER_API_KEY); PDFs need Chromium
🎬🎓 Video Quizzes A curriculum video → its quiz, 3 s later — pictures, voice notes, class share links, and a next-morning reteach report. Ships with the open Taleemabad content library (see below ↓) one import script + DEFAULT_REGION=pakistan
📝🧒 Lesson Quiz A quiz on the lesson just taught (coaching recording) or planned (lesson plan): a one-page teacher PDF, one link the class forwards, each child answers in their own chat with instant reasons, and a next-morning class report with what to reteach TRANSCRIPT_QUIZ_ENABLED=true (uses OPENROUTER_API_KEY)
🗣️ Voice Messages Full spoken interaction in many languages SONIOX_API_KEY + ELEVENLABS_API_KEY
🎬 Video Generation A topic → a short narrated educational video VIDEO_GENERATION_ENABLED + KIE_API_KEY
✅ Attendance Mark a class (teacher) or the staff (head teacher) by voice or by tapping names, approved leave included; get back the month's register, regenerated whole after every mark — on WhatsApp, Slack, Discord and Matrix always on (core)
👋 Teacher Nudges A teacher who has gone quiet for about a day gets one short, friendly check-in — once per quiet spell, on whichever channel they last used TEACHER_NUDGES_ENABLED
🧮 Exam Checker Photograph answer sheets → vision OCR + AI grading MISTRAL_API_KEY
🚦 Public limits Run Rumi on a public link: a per-sender rate limit on every channel, daily caps for accounts that have not finished registration (messages, lesson plans, coaching, quizzes), and a "Rumi is busy" reply with one operator alert when the model budget runs out. See Running Rumi in public always on (30 messages, 120 media a minute); daily caps when you set DAILY_*_CAP_*
🔐 Rumi Messenger (Matrix) Run Rumi on your own end-to-end-encrypted messenger: same features, numbered menus instead of buttons, no per-message fee MATRIX_HOMESERVER_URL + MATRIX_ACCESS_TOKEN
🌅 Morning Brief Every morning, one thread that tells your team how the programme is doing — registration, lesson plans, coaching, scores, reading, every school worst-first — on WhatsApp, Slack, Discord or Matrix, with a live page BRIEF_RECIPIENTS + a read-only BRIEF_DATABASE_URL
🔭 Observe — the coach's assistant For the people who visit classrooms: a lesson recording becomes pre-filled ratings the coach edits, a guide for the feedback conversation, coaching on how that conversation went (never a score, and no praise for a belittling one), and a warm report for the teacher; with lesson-plan fidelity on, Section B checks the lesson against its plan, move by move, and the coach confirms each verdict — with a schedule, a pending list and a portal view OBSERVE_ENABLED=true + a roster (node bot/scripts/observe-roster.js); recordings need SONIOX_API_KEY
📱 Your own Android app Rumi on an app you own, brand and host: the Rumi Messenger chat app (Rumi is one of the contacts), plus an optional portal app for the teacher dashboard — no per-message fee a Matrix server (Rumi Messenger); the portal app needs portal/.env.app
🖥️ Teacher portal sign-in Teachers and coaches sign in to the portal with their phone number; the setup link and reset code arrive in their own chat with Rumi, on WhatsApp or Rumi Messenger (also with no WhatsApp at all) PORTAL_URL (bot) + MAIN_BOT_URL, INTERNAL_API_KEY (dashboard and bot)

No tiers, no toggles to hunt for. Rumi gates features by presence: set a feature's API key and it switches on; leave it blank and it stays off cleanly — the bot never crashes over a missing key. Run rumi status or rumi doctor anytime to see exactly which features are live and which key would switch each remaining one on.

Go deeper: browse the full feature library · understand how lesson plans get routed in LP_PATHS.md · or look at a real sample coaching report (PDF) rendered by the actual pipeline.

Utility flows round it out — settings (language + coaching framework), status (your active sessions), edit-class (roster), and a student-video library.

🌐 Languages

15 languages, for text chat, voice-note transcription (STT), and spoken replies (TTS) alike. Alongside English, Urdu, Arabic and Spanish, Rumi covers Pakistan's regional languages — Punjabi, Sindhi, Pashto and Balochi (via Meta's MMS-ASR) — Sri Lankan Tamil, and a complete Indian-language suite:

🇮🇳 हिन्दी Hindi · বাংলা Bengali · मराठी Marathi · తెలుగు Telugu · தமிழ் Tamil · ಕನ್ನಡ Kannada

Every one works end to end — teachers chat and send voice notes in their language, get spoken and written replies back, and generate lesson plans localized to their classrooms (₹ money problems, locally familiar names and contexts). Pick a language anytime with /language (on Rumi Messenger, just language: every command also works as the bare word), or just message Rumi in your own script. Which languages appear is driven per-region by config (region_features), so a deployment shows only what it serves.


📱 Your own Android app

WhatsApp bills every business message, and those prices keep rising. Rumi doesn't need it: give teachers Rumi Messenger, a branded Android chat app (a fork of Element X) that signs in to your Matrix server, where Rumi is one of their contacts — the same lesson plans, quizzes and coaching, with no per-message fee and every message end-to-end encrypted. Optionally, wrap the teacher portal in its own app too.

  • Your own Android app — what the app is, the white-label checklist (every value you change), debug and signed builds, publishing an APK on GitHub Releases or Google Play, keystore custody, and the AGPL-3.0 obligations in plain words.
  • Portal app — portal/ as a Capacitor Android app with over-the-air updates, App Links and a back key that behaves; build guide in portal/ANDROID.md.

📚 The Taleemabad Content Library

The Taleemabad content library — 890 videos, 10,929 certified questions, 15,557 voice clips, 3,217 illustrations

▶ Watch the film: Taleemabad Library on Rumi (68 s)
▶ 68 seconds: a phone on a charpai, one message, and 890 lessons — watch the film

Rumi ships with a real, complete content library — free and openly hosted. Between 2015 and 2021, Taleemabad's content team hand-wrote question banks, hand-drew the artwork, and studio-recorded voice clips for the Taleemabad Student App, used by hundreds of thousands of Pakistani children. That entire archive has been rescued, matched to its 890 curriculum videos (Nursery–Grade 6, English + Urdu), QA-certified question by question, and rebuilt for WhatsApp:

Video quizzes on WhatsApp: tap-the-picture Flow, Urdu phonics by voice note, score card

  • A teacher sends /video, browses grade → subject → topic, and the video lands in her chat. Three seconds later she's offered its quiz — 15 questions with per-answer feedback, picture options she can actually tap, and phonics questions asked by voice note.
  • She can forward one link to her class WhatsApp group; every child plays in their own 1:1 chat, and she gets a next-morning PDF naming exactly what to reteach and why the class got it wrong.
  • All media is served from a public CDN — the videos, all 3,217 illustrations, and all 15,557 voice clips — so your clone needs zero content hosting. One command imports the whole library:
node bot/scripts/setup/import-video-quiz-library.js --apply

The library is Pakistani national-curriculum content, so the quiz feature is region-gated to pakistan out of the box (DEFAULT_REGION=pakistan in .env switches it on — the seed data does the rest). If you serve another curriculum, the gate is one row of config, and the full pipeline for building your own corpus is documented in docs/features/video-quizzes.md.


🤖 Built to be run by an AI agent

Rumi is agent-native: the repository is structured so a coding agent (Claude Code, Cursor, Codex, …) can read it, set it up, debug it, and customize it with you. This is what makes "clone and run it yourself" realistic for a small, non-specialist team.

  • Progressive-disclosure context. A root CLAUDE.md (and AGENTS.md) orients the agent, then routes it down to folder guides (bot/CLAUDE.md, infrastructure/CLAUDE.md) and, on demand, to 18 operational skills under .claude/skills/ — coaching, reading-assessment, registration, lesson-plan routing, whatsapp-flows, debugging, logging, database analysis, QA, the pre-merge checklist, the curriculum builder, the morning brief, and more. The agent loads only what the task needs.
  • Just ask. Open the repo in your agent and say "set me up" — it asks you for each credential in conversation, checks every one against the real service, creates your database, and hands you the two steps that need human hands (pasting one SQL helper, scanning the WhatsApp QR). It uses the same modules the rumi setup wizard does, so the two paths can't drift. Or say "swap the coaching framework to TEACH" and it follows the customization guide to the exact files.
  • Guard-railed for safety. CI runs a secret scan (gitleaks) plus conformance guards that keep the schema, the docs, and the agent skills honest — so an agent's changes can't silently break a clone or leak a credential.

Start at CLAUDE.md → it points the way.


Architecture

rumi-platform/
├── bin/rumi.js             # The `rumi` CLI — setup, start, status, doctor, pair, graduate
├── install.sh              # One-time bootstrap: tools, dependencies, .env, the rumi command
├── bot/                    # WhatsApp bot (Node.js + Express)
│   ├── whatsapp-bot.js     # Entry point — webhook, inbound routing, message dispatch
│   ├── shared/
│   │   ├── config/         # Presence-based feature gating, branding, languages, regions
│   │   ├── services/
│   │   │   ├── messaging/  # Talks to WhatsApp, Slack, Discord and Matrix, and the plain-text fallback for simple setups
│   │   │   ├── queue/      # Pluggable queue (sqs | bullmq)
│   │   │   └── …           # LLM, coaching, reading, lesson plans, quiz, video, …
│   │   ├── handlers/       # text / voice / image / flow / exam / attendance
│   │   ├── routes/         # WhatsApp Flow endpoints (also drive the text fallbacks)
│   │   └── utils/          # Structured logging, correlation IDs, html-to-pdf
│   ├── workers/            # Async workers (coaching, video, lesson plans, quiz, exam, …)
│   └── scripts/setup/      # The wizard, doctor, pairing, flow registration, encryption
├── dashboard/              # Observability portal — analytics, health
├── portal/                 # Teacher web portal (React)
├── infrastructure/
│   └── supabase/           # SQL schema (76 tables), RLS policies, seed data + bootstrap
├── docs/                   # Architecture, features, customization, cost, samples
└── .claude/                # Agent-native config — CLAUDE.md routers + 18 operational skills

How a message flows

Teacher on WhatsApp, Slack, Discord, or Matrix
  → Meta Cloud API (webhook)  ·OR·  linked-device socket (sandbox)  ·OR·  Slack/Discord events  ·OR·  Matrix sync
    → one normalized inbound shape → message dispatch
      → user lookup (Supabase) → language detection → feature routing
        → text | voice | image | flow handler
          → LLM (OpenRouter) → reply
          → async job queue (Redis or SQS) → background workers → reports / media
            → delivered back to the teacher on their own channel

Every channel converges on the same dispatch, so a feature is written once and works on all of them. A correlation id threads each request across the webhook, the queue, and the workers, so any flow can be traced end to end. See docs/architecture.md for the full picture.


Customization

Rumi is meant to be adapted to your context — your curriculum, your frameworks, your languages, your brand.

Quick (environment variables):

BOT_NAME=MyAssistant
ORG_NAME=My School Network
SUPPORT_CONTACT=help@example.org
LLM_MODEL=anthropic/claude-sonnet-4

Deep (agent-first): this repo is designed to be customized by AI-assisted IDEs. The Agent Customization Guide maps each goal to exact files:

I want to… Guide
Swap the coaching framework (TEACH / Danielson / custom) Section 1
Use ASER / EGRA instead of DIBELS for reading Section 2
Change the lesson-plan format (5E, UbD, …) Section 3
Add a language Section 4
Switch LLM provider/model Section 5
Rebrand the bot Section 11

Technology Stack

Layer Technology Purpose
Runtime Node.js 22+ Server-side JavaScript
Web Express.js Webhook + API routes
Messaging WhatsApp (official API or a linked-device QR code), plus Slack, Discord and Matrix Messages, media, interactive forms
AI / LLM OpenRouter (500+ models) Chat, analysis, content
Database Supabase (PostgreSQL) 76 tables with Row-Level Security
Queue Redis or AWS SQS (pluggable via QUEUE_DRIVER) Transcription, reports, video, exams
Speech-to-Text Soniox, Whisper, Modal MMS-ASR Multilingual transcription
Text-to-Speech ElevenLabs (+ Uplift for Urdu/regional) Voice replies, reflective questions
PDF PDFKit / pdfmake / Playwright Coaching & reading reports
Images / Video Kie.ai (Nano Banana Pro), FFmpeg Educational visuals & video
OCR Mistral vision (+ Chandra, Surya) Exam-sheet scanning
Pronunciation Azure Speech (optional) Reading-assessment scoring
Hosting Railway / Docker / any Node host Deployment
Observability Console + correlation IDs; Axiom optional Structured logs + tracing

Testing

npm test               # the full suite
npm run test:security  # secret scan — no hardcoded credentials
npm run test:schema    # database schema validation
npm run test:setup     # setup tooling
rumi doctor            # live preflight: which services + features are configured
npm run simulate       # CLI simulator — try features without WhatsApp

Every push and PR is gated by CI: an automated secret scan (gitleaks) plus conformance guards that verify the schema, the docs, the agent skills, and the link web all stay honest.


Documentation

Doc What it covers
SETUP.md Full setup — the two-command path, then the manual/production walkthrough
docs/local-stack.md Run Rumi on a laptop with no Supabase account and no Docker
docs/channels/matrix.md Run Rumi on your own messenger (Matrix): setup, encryption, the relay, what works
docs/features/ Per-feature deep dives (what / how / enable) — one page each
docs/onboarding/sandbox-production-design.md How the channel drivers work, and how rumi graduate moves between them
docs/onboarding/whatsapp.md Getting a WhatsApp Business number, start to finish
docs/onboarding/api-keys.md Every API key: what it unlocks and where to get it
docs/LP_PATHS.md How a lesson-plan request is routed (pre-generated vs Gamma vs photo)
docs/console.md The operator web console — settings, health, the pipeline, live activity
docs/architecture.md System architecture & message flow
CLAUDE.md + .claude/ Agent-native context: the routers + the 18 operational skills
docs/agent-customization.md Agent-first deep customization (frameworks, languages, branding)
docs/cost-guide.md Monthly cost estimates — core baseline + per-feature add-ons
docs/monitoring.md Observability & debugging
docs/railway-operations.md Running on Railway (scaling, logs, workers)
docs/pulling-updates.md Keeping your fork in sync with upstream
docs/samples/ Sample artifacts (e.g. a rendered coaching report)
SECURITY.md Security policy & responsible disclosure
.github/CONTRIBUTING.md Development setup, code style, testing, PR guidelines

Troubleshooting

Symptom What's happening
I paired successfully but Rumi never replies You are almost certainly messaging from the same number Rumi is linked to. Use a second number.
rumi doctor says everything is "not configured" Run it from the repo root, or make sure .env is there. rumi status will tell you what it can see.
WhatsApp keeps syncing, or the session drops Two processes must never share one WhatsApp session. Run rumi status to see what's holding it, stop that, then rumi pair.
The bot won't start — "Missing REQUIRED env var(s)" rumi doctor names each missing value and where to get it.
A feature says it isn't available It's presence-gated. rumi status lists which key switches it on.

More: docs/monitoring.md · or open the repo in your coding agent and paste the error.


Contributing

Contributions are welcome. See .github/CONTRIBUTING.md for development setup, code style, testing, and PR guidelines.


About

Rumi is built by Taleemabad and shared with the world as open source. The name comes from Jalaluddin Rumi, the 13th-century poet and teacher who believed that education is not the filling of a vessel but the kindling of a flame.

Website: hellorumi.ai · Research: hellorumi.ai/research

License

Apache License 2.0 — see LICENSE. You are free to use, modify, and distribute this software. We encourage contributing improvements back to the community.

About

Open-source AI teaching assistant on WhatsApp — classroom coaching, reading assessments, lesson plans, and voice interaction in 9 languages

Topics

Resources

Contributing

Security policy

Stars

18 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages