<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Personalized Tutoring on Producthunt daily</title>
        <link>https://producthunt.programnotes.cn/en/tags/personalized-tutoring/</link>
        <description>Recent content in Personalized Tutoring on Producthunt daily</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Fri, 10 Apr 2026 16:25:30 +0800</lastBuildDate><atom:link href="https://producthunt.programnotes.cn/en/tags/personalized-tutoring/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>DeepTutor</title>
        <link>https://producthunt.programnotes.cn/en/p/deeptutor/</link>
        <pubDate>Fri, 10 Apr 2026 16:25:30 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/deeptutor/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1458682625221-3a45f8a844c7?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NzU4MDk0ODd8&amp;ixlib=rb-4.1.0" alt="Featured image of post DeepTutor" /&gt;&lt;h1 id=&#34;hkudsdeeptutor&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/DeepTutor&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;HKUDS/DeepTutor&lt;/a&gt;
&lt;/h1&gt;&lt;div align=&#34;center&#34;&gt;
&lt;img src=&#34;assets/logo-ver2.png&#34; alt=&#34;DeepTutor&#34; width=&#34;140&#34; style=&#34;border-radius: 15px;&#34;&gt;
&lt;h1 id=&#34;deeptutor-agent-native-personalized-tutoring&#34;&gt;DeepTutor: Agent-Native Personalized Tutoring
&lt;/h1&gt;&lt;p&gt;&lt;a href=&#34;https://trendshift.io/repositories/17099&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;https://trendshift.io/api/badge/repositories/17099&#34; alt=&#34;HKUDS%2FDeepTutor | Trendshift&#34; style=&#34;width: 250px; height: 55px;&#34; width=&#34;250&#34; height=&#34;55&#34;/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.python.org/downloads/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/Python-3.11%2B-3776AB?style=flat-square&amp;amp;logo=python&amp;amp;logoColor=white&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Python 3.11&amp;#43;&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://nextjs.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/Next.js-16-000000?style=flat-square&amp;amp;logo=next.js&amp;amp;logoColor=white&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Next.js 16&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;LICENSE&#34; &gt;&lt;img src=&#34;https://img.shields.io/badge/License-Apache_2.0-blue?style=flat-square&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;License&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/DeepTutor/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/github/v/release/HKUDS/DeepTutor?style=flat-square&amp;amp;color=brightgreen&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;GitHub release&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;#&#34; &gt;&lt;img src=&#34;https://img.shields.io/badge/arXiv-Coming_Soon-b31b1b?style=flat-square&amp;amp;logo=arxiv&amp;amp;logoColor=white&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;arXiv&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://discord.gg/eRsjPgMU4t&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/Discord-Community-5865F2?style=flat-square&amp;amp;logo=discord&amp;amp;logoColor=white&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Discord&#34;
	
	
&gt;&lt;/a&gt;
[
&lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/DeepTutor/issues/78&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/WeChat-Group-07C160?style=flat-square&amp;amp;logo=wechat&amp;amp;logoColor=white&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;WeChat&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;#-key-features&#34; &gt;Features&lt;/a&gt; · &lt;a class=&#34;link&#34; href=&#34;#-get-started&#34; &gt;Get Started&lt;/a&gt; · &lt;a class=&#34;link&#34; href=&#34;#-explore-deeptutor&#34; &gt;Explore&lt;/a&gt; · &lt;a class=&#34;link&#34; href=&#34;#-tutorbot--persistent-autonomous-ai-tutors&#34; &gt;TutorBot&lt;/a&gt; · &lt;a class=&#34;link&#34; href=&#34;#%EF%B8%8F-deeptutor-cli--agent-native-interface&#34; &gt;CLI&lt;/a&gt; · &lt;a class=&#34;link&#34; href=&#34;#-community--ecosystem&#34; &gt;Community&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;assets/README/README_CN.md&#34; &gt;🇨🇳 中文&lt;/a&gt; · &lt;a class=&#34;link&#34; href=&#34;assets/README/README_JA.md&#34; &gt;🇯🇵 日本語&lt;/a&gt; · &lt;a class=&#34;link&#34; href=&#34;assets/README/README_ES.md&#34; &gt;🇪🇸 Español&lt;/a&gt; · &lt;a class=&#34;link&#34; href=&#34;assets/README/README_FR.md&#34; &gt;🇫🇷 Français&lt;/a&gt; · &lt;a class=&#34;link&#34; href=&#34;assets/README/README_AR.md&#34; &gt;🇸🇦 العربية&lt;/a&gt; · &lt;a class=&#34;link&#34; href=&#34;assets/README/README_RU.md&#34; &gt;🇷🇺 Русский&lt;/a&gt; · &lt;a class=&#34;link&#34; href=&#34;assets/README/README_HI.md&#34; &gt;🇮🇳 हिन्दी&lt;/a&gt; · &lt;a class=&#34;link&#34; href=&#34;assets/README/README_PT.md&#34; &gt;🇵🇹 Português&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h3 id=&#34;-news&#34;&gt;📰 News
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;[2026.4.4]&lt;/strong&gt; Long time no see! ✨ DeepTutor v1.0.0 is finally here — an agent-native evolution featuring a ground-up architecture rewrite, TutorBot, and flexible mode switching under the Apache-2.0 license. A new chapter begins, and our story continues!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;[2026.2.6]&lt;/strong&gt; 🚀 We&amp;rsquo;ve reached 10k stars in just 39 days! A huge thank you to our incredible community for the support!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;[2026.1.1]&lt;/strong&gt; Happy New Year! Join our &lt;a class=&#34;link&#34; href=&#34;https://discord.gg/eRsjPgMU4t&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Discord&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/DeepTutor/issues/78&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;WeChat&lt;/a&gt;, or &lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/DeepTutor/discussions&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Discussions&lt;/a&gt; — let&amp;rsquo;s shape the future of DeepTutor together!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;[2025.12.29]&lt;/strong&gt; DeepTutor is officially released!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;-releases&#34;&gt;📦 Releases
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;[2026.4.10]&lt;/strong&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/DeepTutor/releases/tag/v1.0.0-beta.4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;v1.0.0-beta.4&lt;/a&gt; — Embedding progress tracking with HTTP 429 rate limit retry, cross-platform start tour dependency management, and case-insensitive MIME validation fix.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;[2026.4.8]&lt;/strong&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/DeepTutor/releases/tag/v1.0.0-beta.3&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;v1.0.0-beta.3&lt;/a&gt; — Remove litellm dependency with native OpenAI/Anthropic SDK providers, Windows Math Animator compatibility, robust JSON parsing for LLM outputs, Guided Learning KaTeX &amp;amp; navigation fixes, and full i18n coverage for Chinses.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;[2026.4.7]&lt;/strong&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/DeepTutor/releases/tag/v1.0.0-beta.2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;v1.0.0-beta.2&lt;/a&gt; — Runtime cache invalidation for hot settings reload, MinerU nested output support, mimic WebSocket fix, Python 3.11+ minimum, and CI improvements.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;[2026.4.4]&lt;/strong&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/DeepTutor/releases/tag/v1.0.0-beta.1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;v1.0.0-beta.1&lt;/a&gt; — Agent-native architecture rewrite (DeepTutor 2.0) with two-layer plugin model (Tools + Capabilities), CLI &amp;amp; SDK entry points, TutorBot multi-channel bot agent, Co-Writer, Guided Learning, and persistent memory.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;details&gt;
&lt;summary&gt;&lt;b&gt;Past releases&lt;/b&gt;&lt;/summary&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;[2026.1.23]&lt;/strong&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/DeepTutor/releases/tag/v0.6.0&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;v0.6.0&lt;/a&gt; — Session persistence, incremental document upload, flexible RAG pipeline import, and full Chinese localization.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;[2026.1.18]&lt;/strong&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/DeepTutor/releases/tag/v0.5.2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;v0.5.2&lt;/a&gt; — Docling support for RAG-Anything, logging system optimization, and bug fixes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;[2026.1.15]&lt;/strong&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/DeepTutor/releases/tag/v0.5.0&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;v0.5.0&lt;/a&gt; — Unified service configuration, RAG pipeline selection per knowledge base, question generation overhaul, and sidebar customization.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;[2026.1.9]&lt;/strong&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/DeepTutor/releases/tag/v0.4.0&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;v0.4.0&lt;/a&gt; — Multi-provider LLM &amp;amp; embedding support, new home page, RAG module decoupling, and environment variable refactor.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;[2026.1.5]&lt;/strong&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/DeepTutor/releases/tag/v0.3.0&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;v0.3.0&lt;/a&gt; — Unified PromptManager architecture, GitHub Actions CI/CD, and pre-built Docker images on GHCR.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;[2026.1.2]&lt;/strong&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/DeepTutor/releases/tag/v0.2.0&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;v0.2.0&lt;/a&gt; — Docker deployment, Next.js 16 &amp;amp; React 19 upgrade, WebSocket security hardening, and critical vulnerability fixes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/details&gt;
&lt;h2 id=&#34;-key-features&#34;&gt;✨ Key Features
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Unified Chat Workspace&lt;/strong&gt; — Five modes, one thread. Chat, Deep Solve, Quiz Generation, Deep Research, and Math Animator share the same context — start a conversation, escalate to multi-agent problem solving, generate quizzes, then deep-dive into research, all without losing a single message.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Personal TutorBots&lt;/strong&gt; — Not chatbots — autonomous tutors. Each TutorBot lives in its own workspace with its own memory, personality, and skill set. They set reminders, learn new abilities, and evolve as you grow. Powered by &lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/nanobot&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;nanobot&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI Co-Writer&lt;/strong&gt; — A Markdown editor where AI is a first-class collaborator. Select text, rewrite, expand, or summarize — drawing from your knowledge base and the web. Every piece feeds back into your learning ecosystem.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Guided Learning&lt;/strong&gt; — Turn your materials into structured, visual learning journeys. DeepTutor designs multi-step plans, generates interactive pages for each knowledge point, and lets you discuss alongside each step.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Knowledge Hub&lt;/strong&gt; — Upload PDFs, Markdown, and text files to build RAG-ready knowledge bases. Organize insights across sessions in color-coded notebooks. Your documents don&amp;rsquo;t just sit there — they actively power every conversation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Persistent Memory&lt;/strong&gt; — DeepTutor builds a living profile of you: what you&amp;rsquo;ve studied, how you learn, and where you&amp;rsquo;re heading. Shared across all features and TutorBots, it gets sharper with every interaction.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agent-Native CLI&lt;/strong&gt; — Every capability, knowledge base, session, and TutorBot is one command away. Rich terminal output for humans, structured JSON for AI agents and pipelines. Hand DeepTutor a &lt;a class=&#34;link&#34; href=&#34;SKILL.md&#34; &gt;&lt;code&gt;SKILL.md&lt;/code&gt;&lt;/a&gt; and your agents can operate it autonomously.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-get-started&#34;&gt;🚀 Get Started
&lt;/h2&gt;&lt;h3 id=&#34;option-a--setup-tour-recommended&#34;&gt;Option A — Setup Tour (Recommended)
&lt;/h3&gt;&lt;p&gt;A &lt;strong&gt;single interactive script&lt;/strong&gt; that walks you through everything: dependency installation, environment configuration, live connection testing, and launch. No manual &lt;code&gt;.env&lt;/code&gt; editing needed.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/HKUDS/DeepTutor.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; DeepTutor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Create a Python environment&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;conda create -n deeptutor &lt;span class=&#34;nv&#34;&gt;python&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;3.11 &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; conda activate deeptutor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Or: python -m venv .venv &amp;amp;&amp;amp; source .venv/bin/activate&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Launch the guided tour&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python scripts/start_tour.py
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The tour asks how you&amp;rsquo;d like to use DeepTutor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Web mode&lt;/strong&gt; (recommended) — Picks a dependency profile, installs everything (pip + npm), then spins up a temporary server and opens the &lt;strong&gt;Settings&lt;/strong&gt; page in your browser. A four-step guided tour walks you through LLM, Embedding, and Search provider setup with live connection testing. Once complete, DeepTutor restarts automatically with your configuration.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CLI mode&lt;/strong&gt; — A fully interactive terminal flow: choose a dependency profile, install dependencies, configure providers, verify connections, and apply — all without leaving the shell.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Either way, you end up with a running DeepTutor at &lt;a class=&#34;link&#34; href=&#34;http://localhost:3782&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://localhost:3782&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;option-b--manual-local-install&#34;&gt;Option B — Manual Local Install
&lt;/h3&gt;&lt;p&gt;If you prefer full control, install and configure everything yourself.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Install dependencies&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/HKUDS/DeepTutor.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; DeepTutor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;conda create -n deeptutor &lt;span class=&#34;nv&#34;&gt;python&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;3.11 &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; conda activate deeptutor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install -e &lt;span class=&#34;s2&#34;&gt;&amp;#34;.[server]&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Frontend&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; web &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm install &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ..
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;2. Configure environment&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp .env.example .env
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Edit &lt;code&gt;.env&lt;/code&gt; and fill in at least the required fields:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# LLM (Required)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;LLM_BINDING=openai
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;LLM_MODEL=gpt-4o-mini
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;LLM_API_KEY=sk-xxx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;LLM_HOST=https://api.openai.com/v1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Embedding (Required for Knowledge Base)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;EMBEDDING_BINDING=openai
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;EMBEDDING_MODEL=text-embedding-3-large
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;EMBEDDING_API_KEY=sk-xxx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;EMBEDDING_HOST=https://api.openai.com/v1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;EMBEDDING_DIMENSION=3072
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;details&gt;
&lt;summary&gt;&lt;b&gt;Supported LLM Providers&lt;/b&gt;&lt;/summary&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Provider&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Binding&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Default Base URL&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;AiHubMix&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;aihubmix&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;https://aihubmix.com/v1&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Anthropic&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;anthropic&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;https://api.anthropic.com/v1&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Azure OpenAI&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;azure_openai&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;—&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;BytePlus&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;byteplus&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;https://ark.ap-southeast.bytepluses.com/api/v3&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;BytePlus Coding Plan&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;byteplus_coding_plan&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;https://ark.ap-southeast.bytepluses.com/api/coding/v3&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Custom (OpenAI-compat)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;custom&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;—&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;DashScope (Qwen)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;dashscope&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;https://dashscope.aliyuncs.com/compatible-mode/v1&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;DeepSeek&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deepseek&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;https://api.deepseek.com&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Gemini&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;gemini&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;https://generativelanguage.googleapis.com/v1beta/openai/&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;GitHub Copilot&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;github_copilot&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;https://api.githubcopilot.com&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Groq&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;groq&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;https://api.groq.com/openai/v1&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;MiniMax&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;minimax&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;https://api.minimax.io/v1&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Mistral&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;mistral&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;https://api.mistral.ai/v1&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Moonshot (Kimi)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;moonshot&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;https://api.moonshot.ai/v1&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Ollama&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;ollama&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;http://localhost:11434/v1&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;OpenAI&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;openai&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;https://api.openai.com/v1&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;OpenAI Codex&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;openai_codex&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;https://chatgpt.com/backend-api&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;OpenRouter&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;openrouter&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;https://openrouter.ai/api/v1&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;OpenVINO Model Server&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;ovms&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;http://localhost:8000/v3&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Qianfan (Ernie)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;qianfan&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;https://qianfan.baidubce.com/v2&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;SiliconFlow&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;siliconflow&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;https://api.siliconflow.cn/v1&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Step Fun&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;stepfun&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;https://api.stepfun.com/v1&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;vLLM&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;vllm&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;http://localhost:8000/v1&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;VolcEngine&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;volcengine&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;https://ark.cn-beijing.volces.com/api/v3&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;VolcEngine Coding Plan&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;volcengine_coding_plan&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;https://ark.cn-beijing.volces.com/api/coding/v3&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Xiaomi MIMO&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;xiaomi_mimo&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;https://api.xiaomimimo.com/v1&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Zhipu AI (GLM)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;zhipu&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;https://open.bigmodel.cn/api/paas/v4&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;&lt;b&gt;Supported Embedding Providers&lt;/b&gt;&lt;/summary&gt;
&lt;p&gt;Embedding uses the same provider list as LLM. Common choices:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Provider&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Binding&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Model Example&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;OpenAI&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;openai&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;text-embedding-3-large&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;DashScope&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;dashscope&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;text-embedding-v3&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Ollama&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;ollama&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;nomic-embed-text&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;SiliconFlow&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;siliconflow&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;BAAI/bge-m3&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;vLLM&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;vllm&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Any embedding model&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Any OpenAI-compatible&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;custom&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;—&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;&lt;b&gt;Supported Web Search Providers&lt;/b&gt;&lt;/summary&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Provider&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Env Key&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Notes&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Brave&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;BRAVE_API_KEY&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Recommended, free tier available&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Tavily&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;TAVILY_API_KEY&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Jina&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;JINA_API_KEY&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;SearXNG&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;—&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Self-hosted, no API key needed&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;DuckDuckGo&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;—&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;No API key needed&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Perplexity&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;PERPLEXITY_API_KEY&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Requires API key&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/details&gt;
&lt;p&gt;&lt;strong&gt;3. Start services&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Backend (FastAPI)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python -m deeptutor.api.run_server
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Frontend (Next.js) — in a separate terminal&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; web &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm run dev -- -p &lt;span class=&#34;m&#34;&gt;3782&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;Service&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;Default Port&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Backend&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;8001&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Frontend&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;3782&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Open &lt;a class=&#34;link&#34; href=&#34;http://localhost:3782&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://localhost:3782&lt;/a&gt; and you&amp;rsquo;re ready to go.&lt;/p&gt;
&lt;h3 id=&#34;option-c--docker-deployment&#34;&gt;Option C — Docker Deployment
&lt;/h3&gt;&lt;p&gt;Docker wraps the backend and frontend into a single container — no local Python or Node.js required. Two options depending on your preference:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Configure environment variables&lt;/strong&gt; (required for both options)&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/HKUDS/DeepTutor.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; DeepTutor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp .env.example .env
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Edit &lt;code&gt;.env&lt;/code&gt; and fill in at least the required fields (same as &lt;a class=&#34;link&#34; href=&#34;#option-b--manual-local-install&#34; &gt;Option B&lt;/a&gt; above).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2a. Pull official image (recommended)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Official images are published to &lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/DeepTutor/pkgs/container/deeptutor&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub Container Registry&lt;/a&gt; on every release, built for &lt;code&gt;linux/amd64&lt;/code&gt; and &lt;code&gt;linux/arm64&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose -f docker-compose.ghcr.yml up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To pin a specific version, edit the image tag in &lt;code&gt;docker-compose.ghcr.yml&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;ghcr.io/hkuds/deeptutor:1.0.0 &lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# or :latest&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;2b. Build from source&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This builds the image locally from &lt;code&gt;Dockerfile&lt;/code&gt; and starts the container.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Verify &amp;amp; manage&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Open &lt;a class=&#34;link&#34; href=&#34;http://localhost:3782&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://localhost:3782&lt;/a&gt; once the container is healthy.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose logs -f   &lt;span class=&#34;c1&#34;&gt;# tail logs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose down       &lt;span class=&#34;c1&#34;&gt;# stop and remove container&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;details&gt;
&lt;summary&gt;&lt;b&gt;Cloud / remote server deployment&lt;/b&gt;&lt;/summary&gt;
&lt;p&gt;When deploying to a remote server, the browser needs to know the public URL of the backend API. Add one more variable to your &lt;code&gt;.env&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Set to the public URL where the backend is reachable
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;NEXT_PUBLIC_API_BASE_EXTERNAL=https://your-server.com:8001
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The frontend startup script applies this value at runtime — no rebuild needed.&lt;/p&gt;
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;&lt;b&gt;Development mode (hot-reload)&lt;/b&gt;&lt;/summary&gt;
&lt;p&gt;Layer the dev override to mount source code and enable hot-reload for both services:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose -f docker-compose.yml -f docker-compose.dev.yml up
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Changes to &lt;code&gt;deeptutor/&lt;/code&gt;, &lt;code&gt;deeptutor_cli/&lt;/code&gt;, &lt;code&gt;scripts/&lt;/code&gt;, and &lt;code&gt;web/&lt;/code&gt; are reflected immediately.&lt;/p&gt;
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;&lt;b&gt;Custom ports&lt;/b&gt;&lt;/summary&gt;
&lt;p&gt;Override the default ports in &lt;code&gt;.env&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;BACKEND_PORT=9001
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;FRONTEND_PORT=4000
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Then restart:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose up -d     &lt;span class=&#34;c1&#34;&gt;# or docker compose -f docker-compose.ghcr.yml up -d&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;&lt;b&gt;Data persistence&lt;/b&gt;&lt;/summary&gt;
&lt;p&gt;User data and knowledge bases are persisted via Docker volumes mapped to local directories:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Container path&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Host path&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Content&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;/app/data/user&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;./data/user&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Settings, memory, workspace, sessions, logs&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;/app/data/knowledge_bases&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;./data/knowledge_bases&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Uploaded documents &amp;amp; vector indices&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;These directories survive &lt;code&gt;docker compose down&lt;/code&gt; and are reused on the next &lt;code&gt;docker compose up&lt;/code&gt;.&lt;/p&gt;
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;&lt;b&gt;Environment variables reference&lt;/b&gt;&lt;/summary&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Variable&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;Required&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;LLM_BINDING&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;LLM provider (&lt;code&gt;openai&lt;/code&gt;, &lt;code&gt;anthropic&lt;/code&gt;, etc.)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;LLM_MODEL&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Model name (e.g. &lt;code&gt;gpt-4o&lt;/code&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;LLM_API_KEY&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Your LLM API key&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;LLM_HOST&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;API endpoint URL&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;EMBEDDING_BINDING&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Embedding provider&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;EMBEDDING_MODEL&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Embedding model name&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;EMBEDDING_API_KEY&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Embedding API key&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;EMBEDDING_HOST&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Embedding endpoint&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;EMBEDDING_DIMENSION&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Vector dimension&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;SEARCH_PROVIDER&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;No&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Search provider (&lt;code&gt;tavily&lt;/code&gt;, &lt;code&gt;jina&lt;/code&gt;, &lt;code&gt;serper&lt;/code&gt;, &lt;code&gt;perplexity&lt;/code&gt;, etc.)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;SEARCH_API_KEY&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;No&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Search API key&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;BACKEND_PORT&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;No&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Backend port (default &lt;code&gt;8001&lt;/code&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;FRONTEND_PORT&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;No&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Frontend port (default &lt;code&gt;3782&lt;/code&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;NEXT_PUBLIC_API_BASE_EXTERNAL&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;No&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Public backend URL for cloud deployment&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;DISABLE_SSL_VERIFY&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;No&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Disable SSL verification (default &lt;code&gt;false&lt;/code&gt;)&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/details&gt;
&lt;h3 id=&#34;option-d--cli-only&#34;&gt;Option D — CLI Only
&lt;/h3&gt;&lt;p&gt;If you just want the CLI without the web frontend:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install -e &lt;span class=&#34;s2&#34;&gt;&amp;#34;.[cli]&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deeptutor chat                                   &lt;span class=&#34;c1&#34;&gt;# Interactive REPL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deeptutor run chat &lt;span class=&#34;s2&#34;&gt;&amp;#34;Explain Fourier transform&amp;#34;&lt;/span&gt;   &lt;span class=&#34;c1&#34;&gt;# One-shot capability&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deeptutor run deep_solve &lt;span class=&#34;s2&#34;&gt;&amp;#34;Solve x^2 = 4&amp;#34;&lt;/span&gt;         &lt;span class=&#34;c1&#34;&gt;# Multi-agent problem solving&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deeptutor kb create my-kb --doc textbook.pdf     &lt;span class=&#34;c1&#34;&gt;# Build a knowledge base&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;See &lt;a class=&#34;link&#34; href=&#34;#%EF%B8%8F-deeptutor-cli--agent-native-interface&#34; &gt;DeepTutor CLI&lt;/a&gt; for the full feature guide and command reference.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-explore-deeptutor&#34;&gt;📖 Explore DeepTutor
&lt;/h2&gt;&lt;div align=&#34;center&#34;&gt;
&lt;img src=&#34;assets/figs/deeptutor-architecture.png&#34; alt=&#34;DeepTutor Architecture&#34; width=&#34;800&#34;&gt;
&lt;/div&gt;
&lt;h3 id=&#34;-chat--unified-intelligent-workspace&#34;&gt;💬 Chat — Unified Intelligent Workspace
&lt;/h3&gt;&lt;div align=&#34;center&#34;&gt;
&lt;img src=&#34;assets/figs/dt-chat.png&#34; alt=&#34;Chat Workspace&#34; width=&#34;800&#34;&gt;
&lt;/div&gt;
&lt;p&gt;Five distinct modes coexist in a single workspace, bound by a &lt;strong&gt;unified context management system&lt;/strong&gt;. Conversation history, knowledge bases, and references persist across modes — switch between them freely within the same topic, whenever the moment calls for it.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Mode&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;What It Does&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Chat&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Fluid, tool-augmented conversation. Choose from RAG retrieval, web search, code execution, deep reasoning, brainstorming, and paper search — mix and match as needed.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Deep Solve&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Multi-agent problem solving: plan, investigate, solve, and verify — with precise source citations at every step.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Quiz Generation&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Generate assessments grounded in your knowledge base, with built-in validation.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Deep Research&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Decompose a topic into subtopics, dispatch parallel research agents across RAG, web, and academic papers, and produce a fully cited report.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Math Animator&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Turn mathematical concepts into visual animations and storyboards powered by Manim.&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Tools are &lt;strong&gt;decoupled from workflows&lt;/strong&gt; — in every mode, you decide which tools to enable, how many to use, or whether to use any at all. The workflow orchestrates the reasoning; the tools are yours to compose.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Start with a quick chat question, escalate to Deep Solve when it gets hard, generate quiz questions to test yourself, then launch a Deep Research to go deeper — all in one continuous thread.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;-co-writer--ai-inside-your-editor&#34;&gt;✍️ Co-Writer — AI Inside Your Editor
&lt;/h3&gt;&lt;div align=&#34;center&#34;&gt;
&lt;img src=&#34;assets/figs/dt-cowriter.png&#34; alt=&#34;Co-Writer&#34; width=&#34;800&#34;&gt;
&lt;/div&gt;
&lt;p&gt;Co-Writer brings the intelligence of Chat directly into a writing surface. It is a full-featured Markdown editor where AI is a first-class collaborator — not a sidebar, not an afterthought.&lt;/p&gt;
&lt;p&gt;Select any text and choose &lt;strong&gt;Rewrite&lt;/strong&gt;, &lt;strong&gt;Expand&lt;/strong&gt;, or &lt;strong&gt;Shorten&lt;/strong&gt; — optionally drawing context from your knowledge base or the web. The editing flow is non-destructive with full undo/redo, and every piece you write can be saved straight to your notebooks, feeding back into your learning ecosystem.&lt;/p&gt;
&lt;h3 id=&#34;-guided-learning--visual-step-by-step-mastery&#34;&gt;🎓 Guided Learning — Visual, Step-by-Step Mastery
&lt;/h3&gt;&lt;div align=&#34;center&#34;&gt;
&lt;img src=&#34;assets/figs/dt-guide.png&#34; alt=&#34;Guided Learning&#34; width=&#34;800&#34;&gt;
&lt;/div&gt;
&lt;p&gt;Guided Learning turns your personal materials into structured, multi-step learning journeys. Provide a topic, optionally link notebook records, and DeepTutor will:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Design a learning plan&lt;/strong&gt; — Identify 3–5 progressive knowledge points from your materials.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generate interactive pages&lt;/strong&gt; — Each point becomes a rich visual HTML page with explanations, diagrams, and examples.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enable contextual Q&amp;amp;A&lt;/strong&gt; — Chat alongside each step for deeper exploration.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Summarize your progress&lt;/strong&gt; — Upon completion, receive a learning summary of everything you&amp;rsquo;ve covered.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Sessions are persistent — pause, resume, or revisit any step at any time.&lt;/p&gt;
&lt;h3 id=&#34;-knowledge-management--your-learning-infrastructure&#34;&gt;📚 Knowledge Management — Your Learning Infrastructure
&lt;/h3&gt;&lt;div align=&#34;center&#34;&gt;
&lt;img src=&#34;assets/figs/dt-knowledge.png&#34; alt=&#34;Knowledge Management&#34; width=&#34;800&#34;&gt;
&lt;/div&gt;
&lt;p&gt;Knowledge is where you build and manage the document collections that power everything else in DeepTutor.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Knowledge Bases&lt;/strong&gt; — Upload PDF, TXT, or Markdown files to create searchable, RAG-ready collections. Add documents incrementally as your library grows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Notebooks&lt;/strong&gt; — Organize learning records across sessions. Save insights from Chat, Guided Learning, Co-Writer, or Deep Research into categorized, color-coded notebooks.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Your knowledge base is not passive storage — it actively participates in every conversation, every research session, and every learning path you create.&lt;/p&gt;
&lt;h3 id=&#34;-memory--deeptutor-learns-as-you-learn&#34;&gt;🧠 Memory — DeepTutor Learns As You Learn
&lt;/h3&gt;&lt;div align=&#34;center&#34;&gt;
&lt;img src=&#34;assets/figs/dt-memory.png&#34; alt=&#34;Memory&#34; width=&#34;800&#34;&gt;
&lt;/div&gt;
&lt;p&gt;DeepTutor maintains a persistent, evolving understanding of you through two complementary dimensions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Summary&lt;/strong&gt; — A running digest of your learning progress: what you&amp;rsquo;ve studied, which topics you&amp;rsquo;ve explored, and how your understanding has developed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Profile&lt;/strong&gt; — Your learner identity: preferences, knowledge level, goals, and communication style — automatically refined through every interaction.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Memory is shared across all features and all your TutorBots. The more you use DeepTutor, the more personalized and effective it becomes.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;-tutorbot--persistent-autonomous-ai-tutors&#34;&gt;🦞 TutorBot — Persistent, Autonomous AI Tutors
&lt;/h3&gt;&lt;div align=&#34;center&#34;&gt;
&lt;img src=&#34;assets/figs/tutorbot-architecture.png&#34; alt=&#34;TutorBot Architecture&#34; width=&#34;800&#34;&gt;
&lt;/div&gt;
&lt;p&gt;TutorBot is not a chatbot — it is a &lt;strong&gt;persistent, multi-instance agent&lt;/strong&gt; built on &lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/nanobot&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;nanobot&lt;/a&gt;. Each TutorBot runs its own agent loop with independent workspace, memory, and personality. Create a Socratic math tutor, a patient writing coach, and a rigorous research advisor — all running simultaneously, each evolving with you.&lt;/p&gt;
&lt;div align=&#34;center&#34;&gt;
&lt;img src=&#34;assets/figs/tb.png&#34; alt=&#34;TutorBot&#34; width=&#34;800&#34;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Soul Templates&lt;/strong&gt; — Define your tutor&amp;rsquo;s personality, tone, and teaching philosophy through editable Soul files. Choose from built-in archetypes (Socratic, encouraging, rigorous) or craft your own — the soul shapes every response.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Independent Workspace&lt;/strong&gt; — Each bot has its own directory with separate memory, sessions, skills, and configuration — fully isolated yet able to access DeepTutor&amp;rsquo;s shared knowledge layer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Proactive Heartbeat&lt;/strong&gt; — Bots don&amp;rsquo;t just respond — they initiate. The built-in Heartbeat system enables recurring study check-ins, review reminders, and scheduled tasks. Your tutor shows up even when you don&amp;rsquo;t.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Full Tool Access&lt;/strong&gt; — Every bot reaches into DeepTutor&amp;rsquo;s complete toolkit: RAG retrieval, code execution, web search, academic paper search, deep reasoning, and brainstorming.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Skill Learning&lt;/strong&gt; — Teach your bot new abilities by adding skill files to its workspace. As your needs evolve, so does your tutor&amp;rsquo;s capability.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multi-Channel Presence&lt;/strong&gt; — Connect bots to Telegram, Discord, Slack, Feishu, WeChat Work, DingTalk, Email, and more. Your tutor meets you wherever you are.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Team &amp;amp; Sub-Agents&lt;/strong&gt; — Spawn background sub-agents or orchestrate multi-agent teams within a single bot for complex, long-running tasks.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deeptutor bot create math-tutor --persona &lt;span class=&#34;s2&#34;&gt;&amp;#34;Socratic math teacher who uses probing questions&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deeptutor bot create writing-coach --persona &lt;span class=&#34;s2&#34;&gt;&amp;#34;Patient, detail-oriented writing mentor&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deeptutor bot list                  &lt;span class=&#34;c1&#34;&gt;# See all your active tutors&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h3 id=&#34;-deeptutor-cli--agent-native-interface&#34;&gt;⌨️ DeepTutor CLI — Agent-Native Interface
&lt;/h3&gt;&lt;div align=&#34;center&#34;&gt;
&lt;img src=&#34;assets/figs/cli-architecture.png&#34; alt=&#34;DeepTutor CLI Architecture&#34; width=&#34;800&#34;&gt;
&lt;/div&gt;
&lt;p&gt;DeepTutor is fully CLI-native. Every capability, knowledge base, session, memory, and TutorBot is one command away — no browser required. The CLI serves both humans (with rich terminal rendering) and AI agents (with structured JSON output).&lt;/p&gt;
&lt;p&gt;Hand the &lt;a class=&#34;link&#34; href=&#34;SKILL.md&#34; &gt;&lt;code&gt;SKILL.md&lt;/code&gt;&lt;/a&gt; at the project root to any tool-using agent (&lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/nanobot&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;nanobot&lt;/a&gt;, or any LLM with tool access), and it can configure and operate DeepTutor autonomously.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;One-shot execution&lt;/strong&gt; — Run any capability directly from the terminal:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deeptutor run chat &lt;span class=&#34;s2&#34;&gt;&amp;#34;Explain the Fourier transform&amp;#34;&lt;/span&gt; -t rag --kb textbook
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deeptutor run deep_solve &lt;span class=&#34;s2&#34;&gt;&amp;#34;Prove that √2 is irrational&amp;#34;&lt;/span&gt; -t reason
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deeptutor run deep_question &lt;span class=&#34;s2&#34;&gt;&amp;#34;Linear algebra&amp;#34;&lt;/span&gt; --config &lt;span class=&#34;nv&#34;&gt;num_questions&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deeptutor run deep_research &lt;span class=&#34;s2&#34;&gt;&amp;#34;Attention mechanisms in transformers&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Interactive REPL&lt;/strong&gt; — A persistent chat session with live mode switching:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deeptutor chat --capability deep_solve --kb my-kb
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Inside the REPL: /cap, /tool, /kb, /history, /notebook, /config to switch on the fly&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Knowledge base lifecycle&lt;/strong&gt; — Build, query, and manage RAG-ready collections entirely from the terminal:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deeptutor kb create my-kb --doc textbook.pdf       &lt;span class=&#34;c1&#34;&gt;# Create from document&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deeptutor kb add my-kb --docs-dir ./papers/         &lt;span class=&#34;c1&#34;&gt;# Add a folder of papers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deeptutor kb search my-kb &lt;span class=&#34;s2&#34;&gt;&amp;#34;gradient descent&amp;#34;&lt;/span&gt;        &lt;span class=&#34;c1&#34;&gt;# Search directly&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deeptutor kb set-default my-kb                      &lt;span class=&#34;c1&#34;&gt;# Set as default for all commands&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Dual output mode&lt;/strong&gt; — Rich rendering for humans, structured JSON for pipelines:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deeptutor run chat &lt;span class=&#34;s2&#34;&gt;&amp;#34;Summarize chapter 3&amp;#34;&lt;/span&gt; -f rich    &lt;span class=&#34;c1&#34;&gt;# Colored, formatted output&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deeptutor run chat &lt;span class=&#34;s2&#34;&gt;&amp;#34;Summarize chapter 3&amp;#34;&lt;/span&gt; -f json    &lt;span class=&#34;c1&#34;&gt;# Line-delimited JSON events&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Session continuity&lt;/strong&gt; — Resume any conversation right where you left off:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deeptutor session list                              &lt;span class=&#34;c1&#34;&gt;# List all sessions&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deeptutor session open &amp;lt;id&amp;gt;                         &lt;span class=&#34;c1&#34;&gt;# Resume in REPL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;details&gt;
&lt;summary&gt;&lt;b&gt;Full CLI command reference&lt;/b&gt;&lt;/summary&gt;
&lt;p&gt;&lt;strong&gt;Top-level&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Command&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor run &amp;lt;capability&amp;gt; &amp;lt;message&amp;gt;&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Run any capability in a single turn (&lt;code&gt;chat&lt;/code&gt;, &lt;code&gt;deep_solve&lt;/code&gt;, &lt;code&gt;deep_question&lt;/code&gt;, &lt;code&gt;deep_research&lt;/code&gt;, &lt;code&gt;math_animator&lt;/code&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor chat&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Interactive REPL with optional &lt;code&gt;--capability&lt;/code&gt;, &lt;code&gt;--tool&lt;/code&gt;, &lt;code&gt;--kb&lt;/code&gt;, &lt;code&gt;--language&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor serve&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Start the DeepTutor API server&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;deeptutor bot&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Command&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor bot list&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;List all TutorBot instances&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor bot create &amp;lt;id&amp;gt;&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Create and start a new bot (&lt;code&gt;--name&lt;/code&gt;, &lt;code&gt;--persona&lt;/code&gt;, &lt;code&gt;--model&lt;/code&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor bot start &amp;lt;id&amp;gt;&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Start a bot&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor bot stop &amp;lt;id&amp;gt;&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Stop a bot&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;deeptutor kb&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Command&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor kb list&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;List all knowledge bases&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor kb info &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Show knowledge base details&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor kb create &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Create from documents (&lt;code&gt;--doc&lt;/code&gt;, &lt;code&gt;--docs-dir&lt;/code&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor kb add &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Add documents incrementally&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor kb search &amp;lt;name&amp;gt; &amp;lt;query&amp;gt;&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Search a knowledge base&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor kb set-default &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Set as default KB&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor kb delete &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Delete a knowledge base (&lt;code&gt;--force&lt;/code&gt;)&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;deeptutor memory&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Command&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor memory show [file]&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;View memory (&lt;code&gt;summary&lt;/code&gt;, &lt;code&gt;profile&lt;/code&gt;, or &lt;code&gt;all&lt;/code&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor memory clear [file]&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Clear memory (&lt;code&gt;--force&lt;/code&gt;)&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;deeptutor session&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Command&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor session list&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;List sessions (&lt;code&gt;--limit&lt;/code&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor session show &amp;lt;id&amp;gt;&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;View session messages&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor session open &amp;lt;id&amp;gt;&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Resume session in REPL&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor session rename &amp;lt;id&amp;gt;&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Rename a session (&lt;code&gt;--title&lt;/code&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor session delete &amp;lt;id&amp;gt;&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Delete a session&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;deeptutor notebook&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Command&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor notebook list&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;List notebooks&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor notebook create &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Create a notebook (&lt;code&gt;--description&lt;/code&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor notebook show &amp;lt;id&amp;gt;&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;View notebook records&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor notebook add-md &amp;lt;id&amp;gt; &amp;lt;path&amp;gt;&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Import markdown as record&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor notebook replace-md &amp;lt;id&amp;gt; &amp;lt;rec&amp;gt; &amp;lt;path&amp;gt;&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Replace a markdown record&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor notebook remove-record &amp;lt;id&amp;gt; &amp;lt;rec&amp;gt;&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Remove a record&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;deeptutor config&lt;/code&gt; / &lt;code&gt;plugin&lt;/code&gt; / &lt;code&gt;provider&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Command&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor config show&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Print current configuration summary&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor plugin list&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;List registered tools and capabilities&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor plugin info &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Show tool or capability details&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;deeptutor provider login &amp;lt;provider&amp;gt;&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Provider auth (&lt;code&gt;openai-codex&lt;/code&gt; OAuth login; &lt;code&gt;github-copilot&lt;/code&gt; validates an existing Copilot auth session)&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/details&gt;
&lt;h2 id=&#34;-roadmap&#34;&gt;🗺️ Roadmap
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;Status&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Milestone&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;🔜&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Authentication &amp;amp; Login&lt;/strong&gt; — Optional login page for public deployments with multi-user support&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;🔜&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Themes &amp;amp; Appearance&lt;/strong&gt; — Diverse theme options and customizable UI appearance&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;🔜&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;LightRAG Integration&lt;/strong&gt; — Integrate &lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/LightRAG&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;LightRAG&lt;/a&gt; as an advanced knowledge base engine&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;🔜&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Documentation Site&lt;/strong&gt; — Comprehensive docs page with guides, API reference, and tutorials&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;If you find DeepTutor useful, &lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/DeepTutor/stargazers&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;give us a star&lt;/a&gt; — it helps us keep going!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-community--ecosystem&#34;&gt;🌐 Community &amp;amp; Ecosystem
&lt;/h2&gt;&lt;p&gt;DeepTutor stands on the shoulders of outstanding open-source projects:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Project&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Role in DeepTutor&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/nanobot&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;nanobot&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Ultra-lightweight agent engine powering TutorBot&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/run-llama/llama_index&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;LlamaIndex&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;RAG pipeline and document indexing backbone&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Wing900/ManimCat&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;ManimCat&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;AI-driven math animation generation for Math Animator&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;From the HKUDS ecosystem:&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/LightRAG&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;⚡ LightRAG&lt;/a&gt;&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/AutoAgent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;🤖 AutoAgent&lt;/a&gt;&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/AI-Researcher&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;🔬 AI-Researcher&lt;/a&gt;&lt;/th&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/nanobot&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;🧬 nanobot&lt;/a&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Simple &amp;amp; Fast RAG&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Zero-Code Agent Framework&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Automated Research&lt;/td&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Ultra-Lightweight AI Agent&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;-contributing&#34;&gt;🤝 Contributing
&lt;/h2&gt;&lt;div align=&#34;center&#34;&gt;
&lt;p&gt;We hope DeepTutor becomes a gift for the community. 🎁&lt;/p&gt;
&lt;a href=&#34;https://github.com/HKUDS/DeepTutor/graphs/contributors&#34;&gt;
  &lt;img src=&#34;https://contrib.rocks/image?repo=HKUDS/DeepTutor&amp;max=999&#34; alt=&#34;Contributors&#34; /&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;See &lt;a class=&#34;link&#34; href=&#34;CONTRIBUTING.md&#34; &gt;CONTRIBUTING.md&lt;/a&gt; for guidelines on setting up your development environment, code standards, and pull request workflow.&lt;/p&gt;
&lt;h2 id=&#34;-star-history&#34;&gt;⭐ Star History
&lt;/h2&gt;&lt;div align=&#34;center&#34;&gt;
&lt;a href=&#34;https://www.star-history.com/#HKUDS/DeepTutor&amp;type=timeline&amp;legend=top-left&#34;&gt;
  &lt;picture&gt;
    &lt;source media=&#34;(prefers-color-scheme: dark)&#34; srcset=&#34;https://api.star-history.com/svg?repos=HKUDS/DeepTutor&amp;type=timeline&amp;theme=dark&amp;legend=top-left&#34; /&gt;
    &lt;source media=&#34;(prefers-color-scheme: light)&#34; srcset=&#34;https://api.star-history.com/svg?repos=HKUDS/DeepTutor&amp;type=timeline&amp;legend=top-left&#34; /&gt;
    &lt;img alt=&#34;Star History Chart&#34; src=&#34;https://api.star-history.com/svg?repos=HKUDS/DeepTutor&amp;type=timeline&amp;legend=top-left&#34; /&gt;
  &lt;/picture&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;div align=&#34;center&#34;&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Data Intelligence Lab @ HKU&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/DeepTutor/stargazers&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;⭐ Star us&lt;/a&gt; · &lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/DeepTutor/issues&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;🐛 Report a bug&lt;/a&gt; · &lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/DeepTutor/discussions&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;💬 Discussions&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Licensed under the &lt;a class=&#34;link&#34; href=&#34;LICENSE&#34; &gt;Apache License 2.0&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
  &lt;img src=&#34;https://visitor-badge.laobi.icu/badge?page_id=HKUDS.DeepTutor&amp;style=for-the-badge&amp;color=00d4ff&#34; alt=&#34;Views&#34;&gt;
&lt;/p&gt;
&lt;/div&gt;
</description>
        </item>
        
    </channel>
</rss>
