DevPik Logo
open sourceai tutoreducationai agentsragpersonalized learning

DeepTutor: HKU's Open-Source AI Tutor, and the Memory It Keeps About You

DeepTutor is an open-source AI tutor from the Data Intelligence Lab at the University of Hong Kong: chat, quizzes, research, worked solutions, living books and mastery paths over your own material, with one memory shared across all of them. That memory is the interesting part. It is 11 Markdown files you can open, and the code that writes them has rules: every fact needs a citation, cross-topic claims must be hedged, and words like "mastered" and "always" are banned.

ByMuhammad Tayyab10 min read
All open source picks
HKUDS/DeepTutor
The official repository — this write-up is not affiliated with the project.
47.0kPythonApache-2.0

What Is DeepTutor?

DeepTutor is an open-source AI tutor from HKUDS, the Data Intelligence Lab at the University of Hong Kong. Its README calls it an agent-native learning workspace: one app where you chat with a tutor, have it quiz you, research a topic into a cited report, work through problems step by step, turn your notes into an interactive book and follow a mastery path, all over your own documents and with one shared memory of how you learn. The full list of modes is Chat, Ask Questions, Quiz, Research, Visualize, Solve, Course Study, Mastery Path, Immersive Reading and Audio Overview. They share one runtime and one session context instead of being ten separate apps, so a quiz can build on what you asked in chat an hour earlier.

The project is led by Bingxi Zhao within HKUDS, the group directed by Chao Huang that also publishes LightRAG and nanobot. It is licensed under Apache-2.0, with a Python 3.11+ backend and a Next.js 16 front end. The repository was created on December 28, 2025 and released the next day, and by its own news feed it reached 10,000 stars in 39 days and 20,000 in 111. It had 47,024 stars and 5,858 forks when we checked on October 28, 2026.

It also moves fast. We counted 87 GitHub releases between v0.2.0 on January 2 and v1.6.15 on October 18, a median of about two days apart, with a quiet February and March before the 1.0 betas arrived in April. The research behind it is on arXiv as "DeepTutor: Towards Agentic Personalized Tutoring" (2604.26962). The paper reports a 10.8% average gain on personalization metrics, evaluated with TutorBench, a benchmark the same team introduced, and a 29.4% gain in agentic reasoning across five backbone models. Both are the authors' own results, and the personalization figure comes from a benchmark they built, so read them as claims rather than independent findings.

Its Memory of You Is 11 Markdown Files

Most AI tutors that "remember" you keep that memory where you cannot see it, usually as embeddings in a vector store. DeepTutor's README says the opposite on purpose: memory is a file-backed, three-layer system you can read, curate and audit, "deliberately not a hidden vector store". Reading the memory code shows how literal that is.

  • L1 is the raw record. Every surface that learns about you (chat, notebook, quiz, knowledge base, book, partner and Co-Writer) appends events to a daily file, trace/<surface>/<date>.jsonl. Nothing in it is rewritten. Each line is one JSON event, so a JSON formatter will pretty-print any line you want to inspect.
  • L2 is one Markdown file per surface, such as L2/chat.md and L2/quiz.md: short curated facts about you, each pointing back at the L1 events it came from.
  • L3 is four Markdown files that synthesize across surfaces: recent.md, profile.md, scope.md and preferences.md.

That is seven L2 files and four L3 files, so DeepTutor's curated memory of a learner fits in 11 Markdown documents you can open in any editor, or paste into a Markdown converter to read rendered. In the app, the Memory Graph draws the same pyramid, with L3 in the center, L2 around it and the L1 traces on the outside, and its edges are the actual citations between them.

A background consolidator keeps the files current in four passes. Update reads what is new since the last run, oldest first, cuts it into chunks at paragraph boundaries and makes one model call per chunk, at most 20 chunks per L2 run and 10 per L3 run by default. Audit re-checks existing lines against the raw evidence. Dedup merges repeated facts, three iterations by default, and runs automatically after every update. Merge is the only pass with no model call: it collapses duplicate citations into single footnotes. Those budgets live under memory: in data/user/settings/main.yaml and on the Settings → Memory page. If you edit the file by hand, a YAML formatter will catch an indentation slip before DeepTutor reads it.

The Rules It Must Follow When It Writes About You

The more interesting part is what the consolidator is allowed to write. The prompts that turn your activity into memory carry hard rules, and one of them is enforced in code as well.

  • Every fact needs evidence. An L2 fact is one line of at most 240 characters, verb-led ("uses X", "stuck on Y"), and it must cite at least one L1 event from the chunk the model was reading. The code checks this, not just the prompt: a fact with no citation is rejected, a citation to anything outside the chunk is dropped, and a fact left with no valid citation is rejected too. Both checks, enforce_required and drop_invalid_refs, are on by default.
  • Cross-surface claims must be hedged. L3 facts have to follow a template, Across N <surface> interactions, the user X or <surface> entries show the user X, so the profile says how much evidence a claim rests on instead of stating it as a trait.
  • Absolutes are banned. The prompts forbid deeply, truly, mastered, expert, passionate, loves, hates, always, never and fully understands, unless the word sits inside quotation marks, as when quoting the learner. The tutor may write "across 6 quiz interactions, the user missed recursion base cases". It may not write "has mastered recursion" or "always forgets base cases".

That banned list reads like the words an AI text cleaner strips from generated prose, and for a similar reason: they sound confident while saying little. For a tutor the stakes are higher, because a profile that says you have "mastered" a topic is a profile that stops teaching it.

One detail from reading the code: the no-absolutes rule is enforced by the prompt alone. The repository has a code-level filter for those words, in English and Chinese, in consolidator/guards.py, with tests, but we found no call to it in the update, audit or dedup passes, on the main branch at v1.6.15 or on the dev branch as of October 28. The citation rule is code; the no-absolutes rule depends on the model following instructions. That is one more reason the plain files matter. You can open L3/profile.md, read what the tutor believes about you, and correct it.

Everything Else DeepTutor Does

Chat is the default mode and where most work starts. The model works in rounds, calls tools when they help, and finishes with a plain answer, and an ask_user tool lets it stop and ask a clarifying question instead of guessing. Tools you can switch on include web search, paper search, Zotero search, GeoGebra analysis, and image or video generation once you configure a generation model.

Knowledge Center lets you choose the retrieval engine per library: LlamaIndex by default (hybrid vector and BM25 search), PageIndex, GraphRAG, LightRAG or a remote LightRAG server, a self-hosted WeKnora knowledge base, Tencent IMA, MarginNote 4, a Kiwix ZIM archive or a linked Obsidian vault. A library can also follow a GitHub repository or a documentation site and re-sync it, every 24 hours by default for documentation sites. Which engine retrieves best depends on your documents, so deeptutor kb eval scores a library against a JSONL file of questions and gold passages and reports Recall@k, Precision@k, nDCG@k, MRR and MAP.

Book turns your sources into a "living book" of editable blocks, including quizzes, flash cards, timelines, code, figures and concept graphs, and proposes a chapter outline for you to review before it writes anything. Co-Writer is a split-view Markdown editor where you select a passage and ask DeepTutor to rewrite, expand or shorten just that span. Immersive Reading brings documents, YouTube or Bilibili videos and audio into one reader with timestamp-grounded tutoring and saved notes.

Partners are persistent companions with their own SOUL.md, memory and channels, reachable over Telegram, Slack, Discord, WhatsApp, Microsoft Teams, Feishu and other messaging platforms. My Agents works the other way round: DeepTutor can run Claude Code, Codex, Grok CLI, Kimi, opencode and other agent CLIs on your machine and stream their work into a chat turn, and it can import your ChatGPT, Claude Code and Codex history as searchable conversations. Everything is also reachable from one deeptutor command, with an interactive REPL for people and JSON output for other agents.

How to Run DeepTutor

The quickest trial is one Docker command:

bash
docker run --rm --name deeptutor \
  -p 127.0.0.1:3782:3782 \
  -v deeptutor-data:/app/data \
  ghcr.io/hkuds/deeptutor:latest

Open http://127.0.0.1:3782, add a model provider under Settings → Providers, and the named volume keeps your settings and data for the next run. For a local install, run pip install -U deeptutor, then deeptutor init (ports, LLM provider and key, and optional embedding and search providers) and deeptutor start. That path needs Python 3.11 to 3.14 and Node.js 20 or newer, because it launches the packaged Next.js server. The README also has a prompt you can paste into Claude Code or Codex to have the agent install and configure everything, reading the repository's own setup guide first.

Two things to know before you start. DeepTutor is free, but the models are not: you bring API keys for the providers you use, or point it at local models served by Ollama, LM Studio or vLLM, and both the learning modes and the memory consolidator make model calls. An experimental OpenAI Codex sign-in can use your ChatGPT plan instead of an API key. And it runs single-user by default. Turn authentication on and one install hosts an admin plus isolated per-user workspaces, with learner and guardian roles for supervised learners. The first account to register becomes the admin, so register yours before you share the address.

Three Projects Called DeepTutor

Search for DeepTutor and you will hit three unrelated things. This page is about the open-source HKU project, documented at deeptutor.info. DeepTutor for Zotero is a separate product: a commercial AI reading add-on with paid plans, built on the Zotero reference manager by a different company. The HKU team states in its README that it has no paid online products of any form, so a price tag means you are looking at the other one. And DeepTutor was also the name of an earlier research system: a 2015 AAAI paper by Vasile Rus and colleagues described a conversational intelligent tutoring system of that name, a decade before large language models.

If a guide mentions a Zotero plugin, a subscription or a 2015 study, it is not about the project on this page.

Who Should Use It, and What to Watch Out For

DeepTutor fits three kinds of user best. Self-learners who study from their own PDFs, notes and lecture videos and want a tutor that remembers what they struggled with last week. Teachers and tutors who can run one shared install with learner accounts. And developers who want an AI tutor they can extend with their own tools, MCP servers and community skills from its EduHub catalog.

Four things to watch. First, scope: DeepTutor does a lot, and the README's own screenshots still show v1.4.6 while a refresh is under way, so expect to explore. Second, pace: a release every two days on median is great for fixes and hard on anyone who needs stability, and v1.6.3 was a breaking front and back end refactor, so pin a version before you roll it out to a class. Third, cost: the software is free, the model calls behind every mode and the background memory passes are not. Fourth, the memory is written by a model. The rules above make it cautious and the files make it checkable, but read profile.md now and then rather than trusting it blindly.

Frequently Asked Questions

What is DeepTutor?

An open-source AI tutor from HKUDS, the Data Intelligence Lab at the University of Hong Kong. It combines chat, quizzes, research reports, worked solutions, interactive books, reading and mastery paths over your own documents, with one memory of how you learn shared across all of them.

Is DeepTutor free?

Yes. It is open source under Apache-2.0, and the team states it has no paid online products. You pay only for the AI models you connect, or nothing extra if you run local models through Ollama, LM Studio or vLLM.

How do I install DeepTutor?

The quickest way is Docker: run the ghcr.io/hkuds/deeptutor:latest image on port 3782 and open http://127.0.0.1:3782. For a local install, run pip install -U deeptutor, then deeptutor init and deeptutor start, with Python 3.11 to 3.14 and Node.js 20 or newer.

How does DeepTutor remember what I have learned?

With a three-layer, file-based memory. L1 is an append-only daily log of events per surface, L2 is one Markdown file of cited facts per surface, and L3 is four Markdown files (recent, profile, scope and preferences) that synthesize across surfaces. A background consolidator updates, audits and deduplicates them.

Can I see or edit what DeepTutor remembers about me?

Yes. The memory is plain JSONL and Markdown files rather than a hidden vector store, and the app's Memory Graph shows how each fact links to the evidence behind it. You can read the files, edit them, and tune the consolidator under Settings, Memory.

Is DeepTutor the same as DeepTutor for Zotero?

No. DeepTutor for Zotero is a separate commercial add-on with paid plans, from a different company. The HKU DeepTutor is free and open source, and its team states it has no paid products. A 2015 tutoring research system by Vasile Rus and colleagues also used the name.

Who made DeepTutor?

HKUDS, the Data Intelligence Lab at the University of Hong Kong directed by Chao Huang, with the project led by Bingxi Zhao. The repository was created in December 2025 and had 47,024 stars in October 2026.

Related DevPik tools

Muhammad Tayyab

Written by

Muhammad Tayyab

CEO & Founder at Mergemain

Muhammad Tayyab builds free, privacy-first developer tools at DevPik. He writes about AI trends, developer tools, and web technologies.

More open source picks