Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RabbAI

A Torah study chavruta that lives in your terminal.

Not a chatbot with a Jewish theme. A study partner configured by one file of prose about you — which sources every claim by name, transliterates before it translates, and hands you the disagreement instead of smoothing it over.

Sefaria · Hebcal · any OpenAI-compatible model

Why it's different · Install · The profile · Commands · Siddur scans


╭─ kimi-k3 · neuralwatt ──────────────────────────────── 12 day streak ─╮
│ › what does the Rambam mean by love of God                            │
╰─ /help  ·  /study  ·  /page N ───────────────────────────── learning ─╯

Why this exists

Ask a general assistant a question about halacha and you get a confident paragraph with no name attached to it, smoothing four centuries of argument into one reasonable-sounding answer. That is the opposite of how the material works.

A Jew is also rarely inside exactly one tradition. Someone can be Sephardic by family and Chabad by community, Ashkenazi by birth and Modern Orthodox by choice, or raised in none of them and reading their way in. Those strands genuinely disagree, and a teacher standing inside a single community cannot comfortably hold that tension.

RabbAI is built to hold it. Where the traditions you named read a text differently, you get each reading and what is at stake in the disagreement — not a synthesis, and not a vote.

The three things it will not do

It will not recite liturgy from memory. Vowels and wording differ between nusachim, and a plausible reconstruction is the one mistake you cannot catch. It searches and quotes Sefaria instead.

It will not infer anything about you. Not your gender from your name, not your observance from your community. If you did not say, it asks, and until then it says "they".

It will not invent your questions. The file that drives learning mode ships empty. If you have not said what you are here for, it teaches the text on its own terms rather than reaching for a connection to a question nobody asked.


What it does

Works a text properly /study loads this week's parsha. Learning mode states what the verse says, explains the language, connects it to one of your anchor questions, gives each tradition's reading, and closes with one thing to think about. One verse done well is a session.
Reads real sources Searches and quotes Sefaria rather than reciting from memory
Knows the siddur /look shema → page 42 of Tehillat Hashem. With scans of your own copy, /page 42 shows it the page.
Keeps the day /shabbat for candle lighting and havdalah where you live, /today for the daily cycles, /floor and /streak for the minimum that counts
Remembers Every conversation stored locally, plus an observer that reads your own transcripts and keeps notes on where you actually are — which feed back into how you are taught

There is also a web UI, rabbi --serve, on http://127.0.0.1:5555.


Install

You need Python 3.11 or newer and an API key (below).

pip install git+https://github.com/macmenes/rabbai
rabbi setup
rabbi

Or with uv, which keeps it out of your system Python:

uv tool install git+https://github.com/macmenes/rabbai
rabbi setup

No git on the machine? There is nothing to install for that either:

pip install https://github.com/macmenes/rabbai/archive/refs/heads/main.tar.gz

The command is rabbi, not rabbai — you install the program and then talk to the teacher. (rabbai works too, if the pun is more trouble than it's worth at 5am.)

rabbi setup takes two minutes, asks nothing you cannot change later, and every question can be skipped with Enter.

The key

RabbAI talks to NeuralWatt by default, an OpenAI-compatible API priced by the energy a request actually costs. Sign up, make a key, and paste it into rabbi setup.

It uses three model tiers, all configurable in ~/.rabbai/.env:

tier default for
deep kimi-k3 theology, working through a text
ops kimi-k3-fast quizzes, reminders, the observer
vision kimi-k3-fast reading scanned siddur pages

Any OpenAI-compatible endpoint works — point NEURALWATT_BASE_URL elsewhere and name that provider's models. It needs a model with tool calling; vision is optional.


The profile is the product

Everything the teacher knows about you is five Markdown files in ~/.rabbai/profile, read fresh at the start of every question:

file what it holds
student.md who you are, your pronouns, your traditions, your Hebrew
questions.md the two-to-five questions you are actually in this for
curriculum.md what is in rotation, and what your daily floor is
siddur.md which prayer book is on your table
observed.md written by the observer, from your own transcripts

rabbi setup writes the first four from what you tell it. Then edit them by hand — they are prose, not settings, and this is the single highest-leverage thing you can do. Write the way you would brief a tutor who has never met you.

Two files carry most of the weight. student.md shapes every answer; questions.md decides what a text gets tied to. Both are plain Markdown, and neither will ever contain a word you did not put there.


Commands

/study load this week's parsha and start learning it
/text Deuteronomy 11:26 print a passage with Rashi
/ref <ref> set the text under study
/mode learning|chat|recap|quiz|davening switch how it answers
/look shema find a prayer and open its page
/page 42 send siddur page 42 (needs scans — see below)
/siddur <prayer> print a prayer's text
/shabbat /today /quote candle lighting, the learning calendar, a line of Torah
/floor /streak log the daily minimum, see the run
/new /resume /history /stats conversations, and what they cost

Editing keys in the input box are the ones you expect: arrows and word motion, Home/End, ctrl-a/e/k/u/w/y, Up/Down for history, Alt-Enter for a second line, and paste. Long questions wrap inside the box, which grows to hold them.


Siddur page scans

/page and /look can show the model a photograph of the page you are looking at, which is how you get an answer about the words in front of you rather than about a different edition. Held against a page, a vision model will give you the printed nikkud, the English rubrics, and where to bow.

No scans ship with this program, and none ever will. The Siddur Tehillat Hashem is in copyright, and so is every other siddur worth photographing. If you photograph a copy you own, lay it out as one folder per printed page:

my-siddur/
  page-0022/
    he.png      # the Hebrew page
    en.png      # the facing English page

and point at it:

echo 'RABBAI_SIDDUR_PAGES=/path/to/my-siddur' >> ~/.rabbai/.env

Without scans, /page 22 still works: it tells the teacher where in the siddur you are, and it finds and quotes that text from Sefaria instead. The page index built into /look covers Tehillat Hashem (Nusach Ari, Kehot 2002) and was transcribed from that edition's own table of contents.


Where your things live

Everything the program writes is under ~/.rabbai, and nothing is written next to the code:

~/.rabbai/
  .env             your key and settings (mode 600)
  profile/         who you are
  rabbai.db        every conversation
  training.jsonl   the same, as JSONL, if you ever want to fine-tune on it
  siddur/          the siddur corpus, fetched from Sefaria
  cache/           Shabbat times and calendar

Move it with RABBAI_HOME. Nothing leaves your machine except the requests to your model provider, Sefaria and Hebcal.

Settings

All optional; all live in ~/.rabbai/.env or the real environment, which wins.

NEURALWATT_API_KEY your key
NEURALWATT_BASE_URL any OpenAI-compatible endpoint
RABBAI_MODEL_DEEP / _OPS / RABBAI_VISION_MODEL the three tiers
RABBAI_MAX_TOKENS_DEEP / _OPS / _VISION budgets; reasoning eats these before the first answer token, so do not set them low
RABBAI_THINKING line (default), off, or full
RABBAI_GEONAMEID / RABBAI_TZ where you are, for Shabbat times
RABBAI_SIDDUR_PAGES your page scans
RABBAI_VAULT an Obsidian vault to mirror study notes into
RABBAI_HOME where all of the above lives
RABBAI_BIDI force right-to-left reordering on/off; only needed if your terminal handles Hebrew badly
NO_COLOR no colour

rabbi --check verifies the key, the models, Sefaria and Hebcal, and prints where everything is.


Development

git clone https://github.com/macmenes/rabbai
cd rabbai
python3 -m venv .venv && .venv/bin/pip install -e '.[dev]'
.venv/bin/python -m pytest

A .env in the checkout is read before the installed one, so working on the code does not touch your own study. The suite is offline and does not need a key.

The launch banner is a pixel grid in rabbai/art.py — edit the grid, not the renderer, and docs/banner.png is drawn from those same cells so the two cannot drift apart.


What it is not

It is not a rabbi, and it will be wrong. It is a model, it can invent a citation that sounds exactly like a real one, and the more confident it sounds the more you should go and look. Every claim comes with a name attached precisely so that you can check it. For anything that matters — halacha, a decision, a life — ask a person.

Licence

MIT. See LICENSE.

About

A Torah study chavruta in your terminal — sourced answers, every side of a disagreement, and a profile you write yourself

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages