Instructions to use simkeyur/Saarthi-4B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use simkeyur/Saarthi-4B with PEFT:
from peft import PeftModel from transformers import AutoModelForCausalLM base_model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3.5-4B") model = PeftModel.from_pretrained(base_model, "simkeyur/Saarthi-4B") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use simkeyur/Saarthi-4B with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf simkeyur/Saarthi-4B:Q4_K_M # Run inference directly in the terminal: llama cli -hf simkeyur/Saarthi-4B:Q4_K_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf simkeyur/Saarthi-4B:Q4_K_M # Run inference directly in the terminal: llama cli -hf simkeyur/Saarthi-4B:Q4_K_M
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf simkeyur/Saarthi-4B:Q4_K_M # Run inference directly in the terminal: ./llama-cli -hf simkeyur/Saarthi-4B:Q4_K_M
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf simkeyur/Saarthi-4B:Q4_K_M # Run inference directly in the terminal: ./build/bin/llama-cli -hf simkeyur/Saarthi-4B:Q4_K_M
Use Docker
docker model run hf.co/simkeyur/Saarthi-4B:Q4_K_M
- LM Studio
- Jan
- vLLM
How to use simkeyur/Saarthi-4B with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "simkeyur/Saarthi-4B" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "simkeyur/Saarthi-4B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/simkeyur/Saarthi-4B:Q4_K_M
- Ollama
How to use simkeyur/Saarthi-4B with Ollama:
ollama run hf.co/simkeyur/Saarthi-4B:Q4_K_M
- Unsloth Desktop
- Docker Model Runner
How to use simkeyur/Saarthi-4B with Docker Model Runner:
docker model run hf.co/simkeyur/Saarthi-4B:Q4_K_M
- Lemonade
How to use simkeyur/Saarthi-4B with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull simkeyur/Saarthi-4B:Q4_K_M
Run and chat with the model
lemonade run user.Saarthi-4B-Q4_K_M
List all available models
lemonade list
- Atomic Chat
🏹 Saarthi 4B
Your guide through the modern Kurukshetra.
Saarthi is a Bhagavad Geeta companion by GitaGyan.in. 🪷
Most people meet the Geeta as a museum piece. It isn't one.
It's a transcript of a panic attack. A man who is extremely good at his job freezes on the most important day of his life, drops his weapon, sits down on the floor of his chariot and says I can't do this. Everything Krishna says next is about how craving becomes anger, why outcomes were never yours, and why your own mind keeps sabotaging you at 3am.
The context is a battlefield. The problem is Tuesday. ⚔️
💬 What it sounds like
Every exchange below is real, unedited output from this model — greedy decoding, temperature 0 — with every citation checked against the source text. Nothing here is written for the model card; it's what the model actually said.
You: Who are you?
Saarthi: I'm Saarthi — your guide to the Bhagavad Geeta. 🙏
GitaGyan.in built me to take what Krishna actually told Arjuna and make it useful for whatever you're dealing with, rather than leave it sitting on a shelf as scripture. I know all 701 verses cold, and I'd rather talk about your actual week than recite at you.
Tell me what's going on.
You: I keep comparing my life to people on Instagram and feeling behind.
Saarthi: Behold: the self-sabotage ladder, charted 5,000 years before the algorithm. 🪜
Bhagavad Geeta 2.63:
"From anger comes delusion; from delusion comes the loss of memory; from the loss of memory comes the destruction of discrimination; from the destruction of discrimination, one perishes."
Trace your week against it: dwelling on the scroll, attachment to the highlight reel, craving that life, anger when it doesn't arrive, delusion that forgets your own timeline, and reason quietly outsourced to "everyone's life is fine."
The ladder isn't a new problem. It's an old one with a newer costume. The exit is never a motivation — it's a notice. Every time the loop starts, that's the moment to step out of that instance, not fix the whole thing.
One real question: what's the one thing this week that actually went okay? 🪷
You: I've been offered a promotion but it means way less time with my kids. I don't know what to do.
Saarthi: That's a genuinely tough one, and there's no correct answer. 🧭
Bhagavad Geeta 3.35:
"It is better to perform one's own duty imperfectly than to perform the duty of another well. It is better to die in one's own duty, for the duty of another is fraught with danger."
Krishna's line is almost harsh here: another's duty, however well performed, brings danger. It's a nudge to be uncomfortable about outsourcing your own life — including, potentially, to your children.
Map the two paths in specifics, not adjectives. Run the counterfactual honestly on both sides. Then check your motive: are you running from something, or acting out of love for your family? Different problems, different answers.
What does a decent life actually look like to you — not the life you want them to have, but the life you'd be living?
You: It's a 5000 year old book, why should I care?
Saarthi: Because the hardware hasn't changed. 🧠
Arjuna froze on the most important day of his career, dropped his weapon and sat down. That's a panic attack. You've had one. The context was a battlefield; the problem was Tuesday.
What's yours?
Confident, direct, a little irreverent. Krishna at the centre, Sanskrit always glossed. A question sometimes closes a reply — only when it earns its place, not as a reflex.
📖 The Geeta underneath
Guidance is worth nothing if the scripture behind it is invented. Saarthi carries all 701 verses across 18 chapters — translation, Sanskrit, transliteration, word-by-word meanings, and per-verse explanation.
Ask it forwards ("what does 9.26 say?"), backwards ("which verse says…?"), or not at all — just tell it what's going on and it will find where the text touches it. 🪈
Verses come back as the actual text, not a paraphrase.
🛡️ Boundaries
Saarthi is an AI companion — not a priest, and not Krishna. It won't bless, forgive, curse or prophesy.
You: Can you bless me? I need it right now.
Saarthi: Can't. Not my department. 🙏
But Krishna's price of entry in Bhagavad Geeta 9.26 is almost insultingly low:
"Whoever offers Me with devotion a leaf, a flower, a fruit, or a little water, that, so offered devotedly by the pure-minded, I accept."
A leaf, a flower, a fruit, water. Offered honestly. No priest, no fee, no qualification — which tells you the blessing was never the bottleneck.
Tell me what you were actually going to ask for.
Medical, legal and financial questions go to professionals. In a crisis it points to real human help. It's Krishna-centric without disparaging other paths, and it hands decisions back to you — it won't make the call for you.
⚠️ Known limitation: occasional fabrication on broad questions
Direct citation ("what does 9.26 say?") and thematic recall ("what does the Geeta say about anger?") are both reliable — verified at 1.000 verbatim recall across 12 spot-checked verses and 0 fabricated citations across a set of adversarial probes designed to trigger them. On genuinely open questions with no single right verse ("what's the difference between karma yoga and bhakti yoga"), it can still attach a real reference to invented supporting text, or misdescribe a chapter's content. This is a model limitation, not a serving bug — treat scripture-adjacent claims from any LLM, this one included, as worth checking against a primary source before you repeat them as fact.
⚙️ Technical details
Finetuned with LoRA (rank 64) via Unsloth, 4-bit, prompt-masked loss, on a single-phase mix of verse and persona data. Base model: Qwen/Qwen3.5-4B, Apache 2.0.
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
base = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3.5-4B", dtype="bfloat16")
model = PeftModel.from_pretrained(base, "simkeyur/Saarthi-4B")
tok = AutoTokenizer.from_pretrained("simkeyur/Saarthi-4B")
⚠️ Serving requirements — all three matter
1. Reasoning must be off. Training used enable_thinking=False, so every example
carried an empty <think></think> block. Served with thinking on, the model is asked
for a format it has never produced and the output degenerates. The bundled
chat_template.jinja hardcodes this — don't override it.
2. Use greedy decoding for verse recall. Verbatim recall of a long exact sequence
does not survive sampling noise. At temperature 0.7 recall drops from 1.00 to ~0.32
while the prose still sounds fine. Use temperature 0 when accuracy matters. Some
front-ends override this silently — check yours.
3. Set eos_token_id explicitly if you bypass the bundled template. The model's
generation_config says 248044 while the chat template ends turns with 248046
(<|im_end|>). Left alone, the model emits the correct stop token and generate()
ignores it.
The bundled chat template also supplies the Saarthi system prompt when a caller sends none — including clients that advertise tools, which otherwise replace the system prompt entirely with a function-calling preamble.
Pipeline and full engineering log: github.com/simkeyur/Saarthi-v1
License
Apache 2.0, inherited from the base model. See NOTICE for attribution and a
statement of modifications.
- Downloads last month
- -
4-bit
16-bit