Skip to main content

Your teaching files, your AI co-teacher. Upload curriculum materials, get a digital co-teacher that generates lessons in your voice.

Project description

EDUagent ๐ŸŽ“

Your teaching files, your AI co-teacher.

Open-source AI assistant that learns from your lesson plans and generates new ones in your exact teaching voice.

No cloud service. No vendor lock-in. Your materials stay on your machine.

CI PyPI Python 3.10+ MIT License GitHub stars

Quickstart ยท Features ยท Roadmap ยท Contributing


If EDUagent helps your teaching, give it a star. It helps other teachers find it.


How it works

Your lesson plans (PDFs, DOCX, PPTX, TXT)
        โ†“
EDUagent reads them and learns your teaching fingerprint:
  โ€ข Teaching style (inquiry-based, direct instruction, Socratic...)
  โ€ข Structural preferences (AIM questions, Do Nows, exit tickets...)
  โ€ข Vocabulary level and tone
  โ€ข Assessment approach
        โ†“
You ask: "Plan a 2-week unit on WWI for my 10th graders"
        โ†“
EDUagent generates:
  โ€ข Full unit plan with essential questions
  โ€ข 10 daily lesson plans in YOUR voice
  โ€ข Student worksheets, assessments, rubrics
  โ€ข IEP/504 accommodations
  โ€ข Differentiation for struggling/advanced/ELL students

Real output

This is actual EDUagent output โ€” not mockups. Generated for an 8th grade Social Studies class studying the American Revolution.

Unit plan:

Unit: "Liberty and Loyalty: The American Revolution"
Duration: 2 weeks (10 lessons)

Essential Questions:
  1. Was war inevitable?
  2. What defines freedom?
  3. How do ideas change the world?
  4. When is rebellion justified?

Lesson 1 โ€” Do Now (verbatim from generation):

Alright, friends, as you settle in, I want you to take out your notebook and answer this question on the board: 'What does freedom mean to you? Is there ever a time when following the rules is more important than being free?' Take 5 minutes to jot down your honest thoughts. There are no wrong answers here; I just want to hear your voice.

Lesson 1 โ€” Direct Instruction (verbatim):

Alright, friends, today we're starting one of my favorite units in all of history. We're going to answer a question that sounds simple but is actually incredible: How did ordinary people decide to risk everything for freedom? I want you to really sit with this for a second.

Lesson 2 โ€” Do Now (verbatim):

Alright, friends, settle in. Grab your notebooks. I want you to think about this: Have you ever had to pay for something or follow a rule that you didn't agree with? Maybe a chore you didn't want to do, or a fee you thought was unfair? Write down: 1) What was the rule or cost? 2) How did it make you feel? 3) Did you speak up against it? You have 5 minutes. Let's get those minds warming up.

Every lesson includes differentiation, exit tickets, and homework โ€” all in the teacher's voice. See FEATURES.md for more.


๐Ÿš€ Getting Started

Never used a terminal? No problem. We'll walk you through everything step by step.


Step 1 โ€” Check that Python is installed

EDUagent runs on Python. Most Macs already have it. Here's how to check:

  1. On a Mac: press Cmd + Space, type Terminal, hit Enter
  2. On Windows: press the Windows key, type cmd, hit Enter
  3. In the window that opens, type this and press Enter:
    python --version
    
    If you see something like Python 3.11.2, you're good. If you see an error, download Python here โ€” click the big yellow button and run the installer.

Step 2 โ€” Install EDUagent

In the same Terminal window, type this and press Enter:

pip install eduagent

Wait about 30 seconds. You'll see text scrolling โ€” that's normal. When it stops and you see a $ again, it worked.


Step 3 โ€” Get an AI key (free to start)

EDUagent needs an AI brain. The easiest option is Anthropic Claude โ€” you get $5 free credit, no credit card required.

  1. Go to console.anthropic.com and create a free account
  2. Click API Keys in the left sidebar โ†’ Create Key
  3. Copy the key (starts with sk-ant-...)
  4. Back in Terminal, type this (replace the key with yours):
    • Mac/Linux:
      export ANTHROPIC_API_KEY=sk-ant-your-key-here
      
    • Windows:
      set ANTHROPIC_API_KEY=sk-ant-your-key-here
      

Prefer ChatGPT? Use OPENAI_API_KEY= instead. Want free? Install Ollama and run eduagent config set-model ollama โ€” no API key needed.


Step 4 โ€” Start EDUagent

eduagent chat

That's it. EDUagent will ask you a few questions about what you teach, then you can point it at your existing lesson plans (or just start from scratch).

Example:

EDUagent: What do you teach?
You: 9th grade Global History in New York

EDUagent: Do you have any lesson plans or materials I can learn from?
You: yes, they're in my Documents/Teaching folder

EDUagent: Analyzing 246 files... I can see your style now.
  You love Socratic questioning, primary sources, and AIM questions.
  Ready to help โ€” what do you need?

You: write a do now for tomorrow's lesson on the causes of WWI
EDUagent: Here's your Do Now...

๐Ÿ“ฑ Want it on your phone? (Telegram bot)

Once EDUagent is set up, you can connect it to Telegram so you can generate lessons from your phone โ€” during your commute, in the copy room, wherever.

What is Telegram? It's a free messaging app (like iMessage or WhatsApp). You need the app on your phone and an account. Download it at telegram.org if you don't have it yet.

Step 1 โ€” Create your teacher bot

  1. Open Telegram on your phone
  2. In the search bar, type @BotFather and tap the result (it has a blue checkmark)
  3. Tap Start, then send this message: /newbot
  4. It will ask for a name โ€” type something like My Lesson Planner
  5. It will ask for a username โ€” type something like mrsmith_lessons_bot (must end in bot)
  6. BotFather will send you a token โ€” a long string like 7412836591:AAHdqTqFEe...
  7. Copy that token (hold down on it, select Copy)

Step 2 โ€” Connect it to EDUagent

In Terminal on your computer:

pip install 'eduagent[telegram]'
eduagent bot --token PASTE-YOUR-TOKEN-HERE

Leave that Terminal window open (the bot runs as long as the window is open). Now open Telegram, find your new bot, and send it a message โ€” it should respond!

Keep it running: For the bot to work when your computer is closed, you'll need to run it on a server. For most teachers, just running it during school hours is fine.


Bonus: Student bot (your students ask questions, get your answers)

You can create a second bot for your students. They join with a class code you create โ€” then they can ask questions about the lesson and get answers in your teaching voice, any time of day.

  1. Repeat Step 1 above to create a second bot (e.g., mrsmith_students_bot)
  2. Copy the new token
  3. In Terminal:
    eduagent student-bot --token PASTE-STUDENT-BOT-TOKEN-HERE
    
  4. In your teacher bot, type: /create-class to get a class code
  5. Share the code and your student bot username with your students
  6. Students open Telegram, find your student bot, send /join YOUR-CODE and start asking questions

๐ŸŒ Prefer a website interface?

eduagent serve

Then open your browser and go to http://localhost:8000 โ€” you'll see a full dashboard.



๐Ÿ“ฆ Installation options

pip install eduagent                    # Core (terminal chat + web dashboard)
pip install 'eduagent[telegram]'        # + Telegram bot for teacher and students
pip install 'eduagent[voice]'           # + Voice note transcription
pip install 'eduagent[all]'             # Everything

# Requires Python 3.10+. Run: python --version
# Don't have Python? Download at https://python.org/downloads

๐Ÿ”ง Which AI should I use?

EDUagent is the tool โ€” it needs an AI brain to do the thinking. Think of it like a car: EDUagent is the car, and the AI is the engine. You pick the engine and pay for it directly. Nothing goes through our servers.


Option 1 โ€” Anthropic Claude (best quality, pay per use)

Claude is widely considered the best AI for writing and nuanced instruction. Two models to choose from:

  • Claude Sonnet 4.6 โ€” excellent quality, more affordable. Great for daily lesson planning.
  • Claude Opus 4.6 โ€” the smartest available. Noticeably better output, noticeably more expensive.

Setup:

  1. Go to console.anthropic.com and create an account
  2. Add a credit card (you only pay for what you use โ€” no subscription)
  3. Click API Keys in the left sidebar โ†’ Create Key โ†’ copy it
  4. In Terminal: export ANTHROPIC_API_KEY=sk-ant-your-key-here

Cost depends entirely on how much you use it. Light use (a few lessons a week): $10โ€“30/month. Heavy daily use: $100โ€“200/month. Opus 4.6 is roughly 5ร— more expensive than Sonnet โ€” only worth it if output quality is your top priority.


Option 2 โ€” OpenAI GPT-5.4 (professional grade, pay per use)

The company behind ChatGPT. GPT-5.4 is highly capable and produces professional-quality output.

Setup:

  1. Go to platform.openai.com and create an account
  2. Add a credit card under Billing
  3. Click API Keys โ†’ Create new secret key โ†’ copy it
  4. In Terminal: export OPENAI_API_KEY=sk-your-key-here

GPT-5.4 is powerful but the cost adds up fast. Light use: $10โ€“30/month. Heavy daily use: $100โ€“200/month. No monthly cap โ€” you pay for every token.


Option 3 โ€” Ollama Cloud with MiniMax M2.7 (~$20/month flat rate)

Ollama is a platform that gives you access to powerful AI for a flat monthly fee โ€” no surprise bills. MiniMax M2.7 is an excellent model for education: smart, fast, and great at learning your teaching voice.

Setup:

  1. Go to ollama.com and create a free account
  2. There is some free usage to try it before committing
  3. Upgrade to the $20/month plan for unlimited use
  4. Find your API key: log in โ†’ click your profile icon (top right) โ†’ Settings โ†’ API Keys โ†’ Generate
  5. In Terminal: export OLLAMA_API_KEY=your-key-here then eduagent config set-model ollama

Best value for most teachers. Flat rate, no surprises, and MiniMax M2.7 is excellent at capturing your specific teaching style.


Option 4 โ€” Local model on your own computer (โš ๏ธ not recommended)

You can run a small AI model entirely on your computer โ€” free, no internet needed. The catch: local models are significantly less intelligent than cloud options. They often struggle to capture your teaching voice or write naturally. Most teachers will be disappointed with the results.

If you want to try anyway, we recommend the Qwen 3.5 series:

Your computer Recommended model Command to install
Basic laptop (8GB RAM) Qwen 3.5 4B ollama pull qwen3.5:4b
Modern Mac or PC (16GB RAM) Qwen 3.5 9B ollama pull qwen3.5:9b
High-end workstation (32GB+ RAM) Qwen 3.5 32B ollama pull qwen3.5:32b

Then run: eduagent config set-model ollama

Start with Option 3 if cost is your concern โ€” $20/month for cloud is far better than a free local model.


Bottom line: Most teachers should start with Option 3 (Ollama cloud, $20/month). Flat rate, great quality, no surprises. If you want the best possible output regardless of cost, use Option 1 with Claude Sonnet 4.6.

๐Ÿ“‹ Commands

Command What it does
eduagent chat Start terminal chat
eduagent bot --token TOKEN Start teacher Telegram bot
eduagent student-bot --token TOKEN Start student Telegram bot
eduagent serve Start web dashboard
eduagent ingest <path> Learn from your lesson plans
eduagent persona show See what EDUagent learned about you
eduagent unit <topic> Generate a unit plan
eduagent lesson <topic> Generate a single lesson
eduagent materials Generate worksheet + assessment
eduagent sub-packet Generate a substitute teacher packet
eduagent standards list Browse your state's standards
eduagent demo See example output (no API key needed)

๐Ÿ—๏ธ Architecture

Teacher's files (PDFs, DOCX, PPTX, TXT)
        โ†“ ingestor.py
Document corpus
        โ†“ persona.py
TeacherPersona (style, structure, voice)
        โ†“
Generation pipeline:
  planner.py โ†’ UnitPlan
  lesson.py  โ†’ DailyLesson
  materials.py โ†’ Worksheet + Assessment
  differentiation.py โ†’ IEP/504 modifications

Delivery:
  commands/bot.py      โ†’ Telegram bot
  commands/generate.py โ†’ Generation CLI commands
  commands/config.py   โ†’ Config & API key management
  commands/export.py   โ†’ Export (PDF, Classroom, share)
  api/server.py        โ†’ Web dashboard (FastAPI)
  cli.py               โ†’ Entry point (~100 lines)

Security & reliability:
  API keys stored in OS keychain (keyring) โ€” never in config.json
  JSON repair via json-repair package for resilient LLM output parsing
  Thread-safe SQLite with per-operation connections and context managers
  SQL injection guards on all dynamic queries
  CORS middleware + slowapi rate limiting on API endpoints

โœ… Features

  • Persona extraction from your curriculum files
  • Unit planning with essential questions + lesson sequence
  • Daily lesson generation (AIM, Do Now, instruction, exit ticket)
  • Worksheets, assessments, rubrics
  • IEP/504 accommodation generation
  • 50-state standards alignment (auto-detects your state)
  • Telegram bot (standalone, no other tools required)
  • Web dashboard with streaming generation
  • Student chatbot (students ask questions in teacher's voice)
  • Voice note transcription
  • School/department curriculum sharing
  • Substitute teacher packet generator
  • Parent communication generator
  • Subject skill libraries (Social Studies, Math, Science, ELA, History)
  • Self-improvement loop (gets better the more it's used)
  • MCP server (tools callable from any AI agent)
  • Google Classroom export (personal accounts only โ€” never school accounts)
  • Hosted version (coming soon)

See FEATURES.md for detailed descriptions and screenshots.

๐Ÿ”’ Privacy

  • Your files never leave your machine unless you choose a cloud LLM
  • API keys stored in OS keychain โ€” not in config files, not in the repo
  • Google Drive: Personal accounts only. Never use school-issued Google accounts โ€” your district's IT policy almost certainly prohibits third-party OAuth, and we don't want to be the reason you get a call from your principal.

๐Ÿ—บ๏ธ Roadmap

See ROADMAP.md for the full plan. Highlights:

Version What's coming
v0.2.0 Hosted version โ€” no install, no terminal, no API keys
v0.3.0 iOS and Android apps
v1.0.0 District deployment with admin dashboard and SSO

๐Ÿค Contributing

See CONTRIBUTING.md. First issues are labeled good first issue.

Subject matter experts welcome: if you know how great lessons are structured in your subject, open a PR for eduagent/skills/your_subject.py.

๐Ÿ“„ License

MIT. Build on it, sell it, use it in your classroom. Just don't be evil.


๐Ÿ‘จโ€๐Ÿซ Built by a teacher

EDUagent was created by Mr. Mac โ€” 9 years teaching Social Studies in Long Island, NY school districts. This isn't a startup's idea of what teachers need. It's a tool built by someone who writes lesson plans every week, knows what a good Do Now looks like, and got tired of starting from scratch.

Mr. Mac is the primary user and the reason this exists. Every feature was built because he needed it.


If EDUagent saves you time, star it on GitHub so other teachers can find it.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

eduagent-0.1.3.tar.gz (412.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

eduagent-0.1.3-py3-none-any.whl (323.7 kB view details)

Uploaded Python 3

File details

Details for the file eduagent-0.1.3.tar.gz.

File metadata

  • Download URL: eduagent-0.1.3.tar.gz
  • Upload date:
  • Size: 412.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for eduagent-0.1.3.tar.gz
Algorithm Hash digest
SHA256 5eb90f7cfad0e04e2123247db2ee3d19aea22c2768839f74cd11975b2bb9cf4c
MD5 051353b4bdfb3bd250eebaa9c39ace7b
BLAKE2b-256 340b533745cbe57db323681d02c36afb8bbca2360466302b7f53fe16ca6aefc4

See more details on using hashes here.

File details

Details for the file eduagent-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: eduagent-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 323.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for eduagent-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 5b2595125a1c82c1cb11d876b8b8428c707df13693c368b5d28bfa00801b3211
MD5 bdc2d6470ec6a4346fd023dbbb73d81b
BLAKE2b-256 3dc41c2f658421c02897ab88f9183cc66359cda9d32b3c180dec040b20799ae8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page