Sahil-SS9/MrHermagi-tutorbot
A Discord AI tutor bot — daily lessons, curriculum YAML, HTML + audio delivery. Built on Hermes Agent.
MrHermagi-tutorbot is a Discord-based AI educational assistant that automates the delivery of structured learning paths using Hermes Agent profiles. The bot utilizes YAML-defined curricula to generate daily lessons consisting of Discord summaries, dark-mode HTML deep-dives, and TTS audio for mobile listening. It features a Socratic teacher persona that delivers content to forum channels and provides interactive Q&A support in dedicated text channels. Users can swap subjects by updating a configuration file without modifying the underlying infrastructure or restarting the gateway.
- Delivers daily lessons via Discord forum threads with TTS audio
- Uses YAML files to define and easily swap custom curricula
- Provides interactive Q&A using a patient, analogy-driven Socratic persona
full readme from github
MrHermagi-tutorbot 🧘
A Discord AI tutor bot — daily lessons, curriculum YAML, HTML + audio delivery.
MrHermagi turns your Discord server into a personal learning academy. Pick any subject, define a curriculum in YAML, and get daily lessons delivered to a forum with full HTML deep-dives and TTS audio summaries for commute listening.
Named after Mr. Miyagi: the student thinks they're learning one thing, but they're learning something deeper underneath. Wax on, wax off.
What you get
- Daily lessons — delivered to a Discord forum at 07:00 UK. One thread per week, lessons as replies
- Multi-format content — scannable Discord summary + full dark-mode HTML lesson + TTS audio for commute
- Interactive Q&A — dedicated channel where you can ask questions, share links, have conversations
- Curriculum YAML — define any subject in a config file. Swap topics without touching infrastructure
- Teacher persona — patient, analogy-driven, Socratic. Teaches from first principles, no assumed knowledge
Quick start
# 1. Set up your Discord bot (see discord-bot-setup.md)
# 2. Copy the profile
cp -r mrhermagi-tutorbot/profiles/mrhermagi ~/.hermes/profiles/
# 3. Edit your details
nano ~/.hermes/profiles/mrhermagi/USER.md # Who you are, what you know
nano ~/.hermes/profiles/mrhermagi/curriculum.yaml # Your subject (or use the AI/ML one)
# 4. Set up the Q&A channel prompt in config.yaml
# Add under discord.channel_prompts:
# "YOUR_CHANNEL_ID": "You are MrHermagi, ..."
# 5. Create the cron
hermes cron create \
--profile mrhermagi \
--schedule "0 7 * * *" \
--deliver "discord:YOUR_FORUM_CHANNEL_ID" \
--prompt "$(cat templates/cron-prompt.md)" \
--name "MrHermagi Daily Lesson"
# 6. Threaded delivery (HTML + audio as ONE comment inside the weekly thread)
# Recent Hermes builds deliver lesson files correctly into the week thread.
# If your build posts the text, HTML and audio as THREE separate posts (or
# spawns a new thread per attachment), see scheduler.diff for the fix and
# apply it to your Hermes checkout's cron/scheduler.py + Discord adapter,
# then restart the gateway. Path varies by install — find it with:
# python -c "import cron.scheduler as s; print(s.__file__)"
Note on the delivery fix. Older versions of this repo shipped a
scheduler.diffthat only combined text with a single attachment. The real cause of the "three separate posts" clutter is that the Discord file-send path ignored the targetthread_idand created a new forum thread per file. The current fix is two-part: (1) the file-send methods honourthread_idso attachments land in the existing weekly thread, and (2) the cron scheduler attaches the lesson text as a caption on the HTML so it is one combined message plus the audio follow-up. Audio always posts as a separate message (Discord does not reliably caption audio).
Structure
mrhermagi-tutorbot/
├── README.md # This file
├── discord-bot-setup.md # Step-by-step Discord bot creation guide
├── scheduler.diff # Patch for combined text+attachment delivery
├── profiles/
│ └── mrhermagi/
│ ├── SOUL.md # Teacher persona (edit if you want)
│ ├── USER.md # Your context — who you are, what you know
│ └── config.yaml # Profile config (model, toolsets, channels)
├── curriculum/
│ ├── ai-ml-learning.yaml # Full 28-lesson AI/ML curriculum (example)
│ └── template.yaml # Blank template for your own subject
└── templates/
├── cron-prompt.md # Cron prompt template
└── lesson-template.html # Dark-mode HTML lesson template
How to switch subjects
- Write a new
curriculum.yamlfor the new subject (usetemplate.yaml) - Move the old one to
curriculum-old.yamlfor reference - MrHermagi reads the new YAML and delivers the first pending lesson
- That's it. No profile changes, no cron rewriting, no gateway restarts
Example: Switch from AI/ML to AI-Computing (Build Your Own PC)
# curriculum.yaml
meta:
title: "AI-Computing: Build Your Own PC"
description: "From zero hardware knowledge to understanding every component"
total_days: 28
weeks:
- week: 1
theme: "CPU Architecture"
days:
- day: 1
title: "What Is a CPU?"
topic: "Fetch-decode-execute cycle, cores, threads, clock speed"
...
Swap the file. Tomorrow's lesson picks up from Day 1.
Example curriculum included
The curriculum/ai-ml-learning.yaml covers a complete 4-week AI/ML foundations sprint:
| Week | Theme | Lessons |
|---|---|---|
| 1 | Foundations: Text Models | Tokens, parameters, inference, model families |
| 2 | All Modalities | Image, voice, audio, video, multimodal |
| 3 | Running & Comparing | Quantisation, benchmarks, token-maxxing |
| 4 | Advanced | Agents, fine-tuning, production, Hermes architecture |
Prerequisites
- Hermes Agent running with Discord gateway
- Discord server with:
- One forum channel (for curriculum delivery)
- One text channel (for Q&A — optional but recommended)
- Bot has Send Messages, Create Threads, and Attach Files permissions
Built with
- Hermes Agent — multi-agent orchestration
- Discord.py — Discord gateway integration
- edge-tts — audio summary generation
- No external API costs beyond your existing Hermes provider
Choosing a model
The default works on a free/low-cost model so anyone can run it. Lesson quality
is mostly bounded by the model: a small free model gives serviceable lessons, a
larger model gives noticeably deeper, better-structured ones. Set the model on
the cron job (or in the profile config.yaml). For teaching, a strong
general/instruct model is a better fit than a coding-specialised one — for
example a large general model such as gpt-oss:120b via an OpenAI-compatible
provider produces markedly richer lessons than a 20-30B free model. Keep a
smaller model as a fallback to stay resilient and cheap.
License
MIT. Use it, share it, fork it, sell it. If you improve it, send a PR back.