Skip to content

Releases: HKUDS/DeepTutor

v1.5.0

Choose a tag to compare

@pancacake pancacake released this 04 Jul 08:40

DeepTutor v1.5.0 Release Notes

Release Date: 2026.07.04

v1.5.0 closes out the entire v1.4 line and opens the next. Rather than a single-point delta, this note looks back across the whole arc from v1.4.0-beta to today — the release that turned DeepTutor into an agent-native, community-driven tutoring platform. Over these weeks the community sent 36 merged pull requests and helped us resolve 53 issues. Thank you — this release is as much yours as ours.

Highlights since v1.4.0

  • Partners, born from TutorBot. TutorBot grew into Partners: a production-grade IM pipeline across 15+ channels — Slack, Discord, Telegram, Feishu, WeCom, Zulip, Matrix (with optional E2EE), and a native Mattermost channel — with live streaming replies. You can connect your own Partners, or your local Claude Code / Codex, under My Agents and consult them live mid-chat; each Partner carries its own private memory and its conversations can branch, resume, and replay.
  • One agentic chat engine. Chat was rebuilt on a single agent loop with native tool calling on every OpenAI-compatible cloud provider (and SiliconFlow, MiniMax M3, Qwen, Gemini 2.5+), smooth streaming, and an honest activity header.
  • A real Knowledge Center. Multiple retrieval engines — LlamaIndex + a FAISS vector backend, LightRAG (local and standalone-server), GraphRAG, PageIndex, and linked / Obsidian knowledge bases — behind one console, on a pluggable document-parse layer (text-only, MinerU, Docling, markitdown, PyMuPDF4LLM). Large-KB retrieval got dramatically faster.
  • Guided Learning & Mastery Path. Rebuilt on the chat loop with a per-type mastery gate, a /learning dashboard, LaTeX-rendered quizzes, and graded questions that flow into your Question Bank.
  • Multi-user, done properly. Real per-user isolation, admin grants, a redesigned User Management page, a self-service Profile page with avatars, deny-by-default MCP tools, and per-user session isolation.
  • Deployment hardening. Rootless-Podman / read-only-rootfs support, a single-port request-time proxy, env-configurable host binding, and a portable supervisord config.
  • Security lockdown. The Partner/TutorBot tool sandbox was locked down and a cluster of authorization-bypass, path-traversal, and RCE reports were fixed (see below).
  • Three-layer Memory & richer surfaces. A top-level Memory workbench (L1/L2/L3) with Partner conversations bridged in, plus continued work on Deep Research, Solve, Visualize (Animator merged in), and Co-Writer.

In v1.5.0 specifically: the default LlamaIndex engine now routes ingestion through the shared document-parse layer (so it honors your chosen parsing engine and indexes extracted images as multimodal nodes), Partner and Soul ids are ASCII/URL-safe so non-Latin names stay reachable, and the optional graphrag / rag-lightrag extras install cleanly on Python 3.14+ (issues #606, and the fixes below).

Merged pull requests

With gratitude to everyone who sent code:

  • #484 — Zulip: content-detection fallback so bots receive @-mentions — @wedone
  • #485 — Make require_auth async so the user ContextVar reaches the endpoint — @truffle-dev
  • #490 — Unblock Gemini 2.5+ and harden the Visualize pipeline — @skinred78
  • #493 — Fix SQLite file-descriptor exhaustion — @thelooter
  • #500 — Guided Learning feature work — @arlenwoox
  • #507 — Harden ExecTool defaults against command injection (#506) — @kagura-agent
  • #508 — Fix the GPT-5 token-limit parameter in the init-wizard probe — @lezhimiffyliu
  • #509 — Prevent Document nodes from bypassing the chunking pipeline — @washi4
  • #513 — Add a Profile button when no profiles exist — @wedone
  • #524 — Truncate oversized event payloads in the session response — @xiongjnu
  • #528 — Native tool calling for reasoning models on OpenAI-compatible endpoints — @wedone
  • #529 — Qwen JSON preamble, force-recompile overview pages, health false positives — @alvinets
  • #540 — Preserve math before citation linkification — @thakrarsagar
  • #542 — Route the OAuth backend through the native provider — @thakrarsagar
  • #543 — Upgrade the MiniMax default model to M3 — @octo-patch
  • #549 — Keep NEXT_PUBLIC_AUTH_ENABLED out of the minifier constant-fold — @IliaAvdeev
  • #550 — Keep sidebar footer items as text when the sidebar is collapsed — @IliaAvdeev
  • #558 — Surface bad-login errors inline instead of a silent reload — @IliaAvdeev
  • #559 — Accept a username, not just an email, on login and register — @IliaAvdeev
  • #568 — Gate LLM features for users without an assigned model — @IliaAvdeev
  • #570 — Show only provider-relevant fields in Search settings — @IliaAvdeev
  • #571 — Discoverable profile rename and auto-name by provider — @IliaAvdeev
  • #572 — Translate the missing English settings-tour steps — @IliaAvdeev
  • #573 — User profile page with avatar — @IliaAvdeev
  • #577 — Harden the image for rootless Podman with a read-only rootfs — @enihcam
  • #578 — Chat-history loading animation — @emmett001
  • #579 — Deny MCP tools until explicitly granted (multi-user) — @Hinotoi-agent
  • #582 — Run supervisord as root so services start under rootful Docker — @IliaAvdeev
  • #583 — Redesign the User Management page (avatars, search, skeletons, confirm dialog) — @IliaAvdeev
  • #584 — Enable native tool calls for SiliconFlow — @TyrionH-is-coding
  • #585 — Move the Back link to its own row in the page header — @IliaAvdeev
  • #586 — Make BACKEND_HOST and FRONTEND_HOST env-configurable — @enihcam
  • #588 — Render LaTeX in quiz options — @ZhouJ-sh
  • #593 — Portable supervisord config across rootful + rootless keep-id — @enihcam
  • #602 — Preserve a configured zero LlamaIndex chunk overlap — @VectorPeak
  • #604 — Fix mastery choice persistence and grading — @spring618

Resolved issues

🔒 Security & isolation

  • #506 — ExecTool executed LLM-generated shell commands over the chat WebSocket
  • #514 — Authorization bypass in the book-confirmation flow
  • #515 — Cross-session authorization bypass in turn regeneration
  • #516 — Cross-bot authorization bypass in TutorBot file management
  • #517 — Path traversal in the TutorBot filesystem tool
  • #518 — Remote code execution via the TutorBot shell tool
  • #596 — Sessions were not isolated by user

🐛 Bug fixes

  • #301 — Guided Learning not working with LM Studio (Docker)
  • #472 — Co-Writer responses came back extremely short
  • #481 — Non-admin users hit 404 on all session requests (Docker multi-user)
  • #487 — A new quiz inherited the previous quiz's answer state
  • #489 — Visualize and other capabilities silently truncated on Gemini 2.5 / 3.x
  • #494knowledge_learning router not registered in main.py
  • #495 — Knowledge extractor JSON-parsing error with DeepSeek
  • #496LearningSession had no metadata field, so agents got empty context
  • #497KnowledgePoint validation rejected LLM-extracted data
  • #502 — Docker sed placeholder broke API base-URL validation with a non-default port
  • #503 — Unable to communicate with v1.4.0-beta
  • #504 — Settings-load failure and zombie running turns after container restart (Docker)
  • #512 — New user could not create an initial profile via the UI (Docker)
  • #520 — Chat input disabled after the first turn; hardcoded URL guard broke deployments
  • #521 — Errors while embedding some knowledge-base documents
  • #527 — Qwen 3.6 Plus failed to use native tool calling
  • #530 — self-signed-certificate error despite disable_ssl_verify: true
  • #531allow_shell_exec silently reset to false on every auto-start
  • #534allow_shell_exec could not be persisted
  • #536 — Container appeared to crash after idle time
  • #537 — Responses were incoherent
  • #574 — Partner conversations never reached the Memory system (empty L1)
  • #580 — supervisord pidfile CRIT on rootless Podman + keep-id + read-only rootfs
  • #587 — Quiz option cards did not render LaTeX formulas
  • #594 — Choosing PyMuPDF4LLM as the parser was overridden by MinerU when building a LightRAG KB
  • #595 — Deep Research returned a success response even when a block failed
  • #599 — Wrong top-left logo/icon after login in multi-user mode
  • #603 — Guided Learning choice options were lost and correct answers could be mis-graded
  • #605 — v1.4.15 could not be installed with uv

✨ Features & requests

  • #511 — HTTP API for multi-turn conversations with a specific TutorBot
  • #553 — User profile page (account + avatar) and a lighter Admin page
  • #555 — Moodle support
  • #569 — Feature request
  • #576 — Rootless Podman with a read-only rootfs for hardened deployments
  • #589 — PyMuPDF4LLM for building knowledge bases
  • #590 — Native Mattermost channel for the Partner subsystem
  • #591 — Support for a standalone external LightRAG container endpoint

💬 Questions & discussions

  • #476 — Does adding a doc to a knowledge base have quadratic complexity?
  • #505 — How to register a provider on v1.4.0
  • #532 — RAG chat could not return information from the selected knowledge base
  • #535 — Can TutorBot do almost everything the main system does, via skills?
  • #552 — RAG chat on a 250 MB knowledge base returned nothing
  • #565 — Question
  • #592 — Should DeepTutor become installable apps?
  • #597 — Does a Partner have its own memory?
  • #598 — Can non-admin users use and create Partners in multi-user mode?

Upgrade Notes

Drop-in from any v1.4.x: pip install -U deeptutor; Docker users pull ghcr.io/hkuds/deeptutor:latest. No migrations — existing knowledge bases, partners, souls, and mastery paths keep working as-is. Two things to know:

  • LlamaIndex re-indexing now extracts through the engine you pick in Settings → Document Parsing, not the old text-only path. Existing indexes are untouched; only a re-index picks up the new engine. If a document doesn't extract, confirm the active engine supports that format (keep it on text-only for the previous behavior).
  • Non-Latin partner/soul ids only change for newly created ...
Read more

v1.4.15

Choose a tag to compare

@pancacake pancacake released this 30 Jun 14:33

DeepTutor v1.4.15 Release Notes

Release Date: 2026.06.30

A small release on top of v1.4.14: Partners gain a native Mattermost channel, Guided Learning multiple-choice questions persist and grade correctly, and a configured zero chunk overlap is honored when indexing. Drop-in — no migrations.

What's New

Native Mattermost channel

Partners can now connect to a self-hosted Mattermost server through its own v4 WebSocket + REST API instead of routing through Mattermost's Slack-compatibility shim. Set a bot account's server URL and access token in the partner's Channels tab; replies render with native Markdown, and group chats answer on @-mention or to every message per group_policy. It reuses the existing httpx + websockets transport, so no new dependency is needed (issue #590).

Guided Learning choices persist and grade correctly

Multiple-choice questions in Mastery Path now register every full option body with mastery_quiz — not just the bare A/B/C labels — so the engine grades deterministically and the saved Question Bank entry shows the real choices alongside the correct answer. Paths created before this release recover the option text from the original ask_user card at grading time.

Configured zero chunk overlap is honored

Setting a knowledge base's chunk_overlap (or chunk_size) to 0 on the LlamaIndex engine was silently replaced with the default of 50 before indexing. An explicit 0 is now preserved, so a no-overlap chunking strategy indexes exactly as configured.

Upgrade Notes

Drop-in from v1.4.14: pip install -U deeptutor; Docker users pull ghcr.io/hkuds/deeptutor:latest. No migrations and no behavior changes — existing knowledge bases, partners, and mastery paths keep working as-is.

Full Changelog: v1.4.14...v1.4.15

v1.4.14

Choose a tag to compare

@pancacake pancacake released this 29 Jun 15:24

DeepTutor v1.4.14 Release Notes

Release Date: 2026.06.29

A fixes-and-polish follow-up to v1.4.13: open an assigned partner straight into chat with one click, Deep Research reports flag when a subtopic couldn't be completed, LightRAG indexes without MinerU installed, FAISS handles non-ASCII paths, and PocketBase sessions are isolated per user. Drop-in for the default backend — no migrations.

What's New

Open an assigned partner straight into chat

For a non-admin user, clicking a partner the administrator assigned now connects it as an agent and drops you into a fresh chat already targeting it — no separate trip through My Agents. Admins still click through to the partner's management page as before.

Deep Research flags partial results

When some research subtopics can't be completed — a block raises, or exhausts its iteration budget without finishing — the report no longer looks like a clean success. The run surfaces a warning notice and the result envelope carries partial, failed_block_count, and failed_block_titles, so callers can tell the report rests on partial evidence (issue #595).

LightRAG indexes without MinerU

LightRAG indexing hard-failed with "Parser 'mineru' is not properly installed" even when you'd picked a different parsing engine, because RAG-Anything ran a one-time install check on its default parser. DeepTutor already feeds it pre-parsed content, so that spurious check is now skipped and indexing proceeds regardless of which parse engine you chose (issue #594).

FAISS indexes on non-ASCII paths

Rebuilding a FAISS-backed knowledge base crashed on Windows when the path held non-ASCII characters — a Chinese knowledge-base name, or a C:\Users\张三 home directory. FAISS indexes now persist and load through a Python byte stream that handles Unicode paths; the on-disk format is unchanged and stays cross-readable with stock FAISS.

PocketBase sessions isolated per user

On the optional PocketBase backend, every session is now stamped with and filtered by user_id, matching the per-user-file isolation the default SQLite backend already provides. A session's messages and turns are reachable only through that session, so one user can no longer read or mutate another's conversations.

Upgrade Notes

Drop-in from v1.4.13 on the default JSON/SQLite backend: pip install -U deeptutor; Docker users pull ghcr.io/hkuds/deeptutor:latest. No migrations and no behavior changes for existing single-user setups.

On the optional PocketBase backend, sessions are now scoped by user_id. Sessions created before this upgrade carry no user_id and won't appear in the session list until re-created (or backfilled with the current user's id). PocketBase stays a single-user integration — keep integrations.pocketbase_url blank for multi-user deployments.

Full Changelog: v1.4.13...v1.4.14

v1.4.13

Choose a tag to compare

@pancacake pancacake released this 27 Jun 10:48

DeepTutor v1.4.13 Release Notes

Release Date: 2026.06.27

A fixes-and-polish follow-up to v1.4.12: partners with non-Latin names create correctly and can be handed to specific users, logos render after login in multi-user mode, and small knowledge bases retrieve reliably. Drop-in — no migrations.

What's New

Partners: any-language names, and admin assignment

Creating a partner with a Chinese (or any non-Latin) name now works — the id keeps Unicode letters instead of collapsing to an empty slug. Partners also become a grantable resource: an admin can assign specific partners to specific non-admin users, who then see, connect, and consult them in chat. The partner still runs in its own isolated workspace, and the partner CRUD API stays admin-only — a grant only opens the door to use an assigned partner.

Multi-user: logos and static assets render after login

In a multi-user deployment, the sidebar logo and login banner showed up broken after signing in (issue #599): the auth gate bounced the Next.js image optimizer's cookie-less loopback fetch to /login. Public static assets now bypass the gate, so logos, favicons, fonts, and icons load normally. The middleware's routing policy moved into a pure, unit-tested module.

Small knowledge bases retrieve reliably

Hybrid (BM25) retrieval crashed on a knowledge base with only a document or two, because the requested result count exceeded the number of indexed chunks. The count is now clamped to the corpus size, so tiny knowledge bases return what they have instead of erroring at query time.

One upload limit for every format

Document uploads now share a single 200 MB limit across all formats; the separate, lower cap that rejected larger PDFs is gone. The in-container proxy body limit was raised to match, so large uploads pass through without silent truncation.

Portable container startup

The container's supervisord configuration now starts cleanly under both rootful Docker/Podman and rootless Podman with userns_mode: keep-id. It no longer pins its own privilege or writes to a root-owned path, removing a startup failure (and a cosmetic pidfile warning) under rootless keep-id.

Upgrade Notes

Drop-in from v1.4.12: pip install -U deeptutor; Docker users pull ghcr.io/hkuds/deeptutor:latest. No migrations and no behavior changes for existing single-user setups. In multi-user deployments, assigning a partner to a user is a new option in the grant editor — nothing changes until you use it.

Full Changelog: v1.4.12...v1.4.13

v1.4.12

Choose a tag to compare

@pancacake pancacake released this 24 Jun 08:26

DeepTutor v1.4.12 Release Notes

Release Date: 2026.06.24

A knowledge-base release on top of v1.4.11: a new LightRAG Server
retrieval engine, a lightweight PyMuPDF4LLM parsing engine, and a FAISS vector
backend that makes large-KB retrieval dramatically faster. Drop-in — existing
knowledge bases keep working untouched.

What's New

LightRAG Server retrieval engine

Point a knowledge base at a standalone LightRAG server you run yourself, and
DeepTutor offloads retrieval to it over HTTP — no local index is built. Each KB
stores its own server URL (plus optional API key) at connect time, so one server
workspace maps to one KB, and queries run in any of LightRAG's modes
(naive/local/global/hybrid/mix). It needs no install and is always available in the
engine picker.

PyMuPDF4LLM document parsing

A fifth parsing engine joins Text-only, MinerU, Docling, and markitdown. PyMuPDF4LLM
rides on PyMuPDF (already bundled), making it the lightest image-capable option — no
model downloads, no CUDA, runs on low-end and GPU-less machines — turning PDFs and
e-books into Markdown and extracting images. Install with
pip install deeptutor[parse-pymupdf4llm]; engines that need packages can now be
installed in the background straight from Settings → Document Parsing.

FAISS vector retrieval

The default LlamaIndex engine now retrieves through FAISS instead of re-parsing
the entire vector store on every query, so search on large knowledge bases is
dramatically faster. faiss-cpu ships as a core dependency with a graceful fallback
to the previous store, so there's nothing new to install.

Upgrade Notes

Drop-in from v1.4.11: pip install -U deeptutor; Docker users pull
ghcr.io/hkuds/deeptutor:latest. No migrations. Existing LlamaIndex knowledge bases
keep loading and querying as-is — re-index a KB to move it onto the faster FAISS
backend. The new engines are opt-in: choose LightRAG Server or PyMuPDF4LLM when
creating a knowledge base or in Settings.

Full Changelog: v1.4.11...v1.4.12

v1.4.11

Choose a tag to compare

@pancacake pancacake released this 23 Jun 15:55

DeepTutor v1.4.11 Release Notes

Release Date: 2026.06.23

A fixes-and-polish follow-up to v1.4.10: native tool calling now
lights up on every cloud OpenAI-compatible provider, the admin Users page is
rebuilt, quiz options render LaTeX, and the container story gains configurable
host binding. Drop-in — no migrations.

What's New

Native tool calling on every cloud OpenAI-compatible provider

Cloud providers that lacked a dedicated capability entry — SiliconFlow, Gemini,
Zhipu, Qianfan, NVIDIA NIM, the Volc/BytePlus coding plans — now use native
function calling
instead of silently falling back to prose. Function calling is
part of the OpenAI-compatible API contract, so any registered cloud provider is
assumed tool-capable unless it's explicitly opted out. This is what lets KB
retrieval and the capability tools actually fire on those providers. Local servers
(Ollama, vLLM, LM Studio, llama.cpp, Lemonade, …) still fall back to prose, since
tool support there depends on the loaded model.

Redesigned User Management page

The admin Users page is rebuilt with avatars, a username search box, skeleton
loading states, and a styled confirm dialog before destructive actions in place of
the raw browser prompt.

LaTeX in quiz options

Answer choices now render Markdown and math, so $…$ and formulas show up in the
options the same way they already did in question text.

Configurable container host binding

BACKEND_HOST and FRONTEND_HOST are now environment-configurable, so on Linux
host networking you can keep both services on loopback (127.0.0.1) instead of
exposing them on every interface. supervisord now runs as root so services start
correctly under rootful Docker, and the dead gosu / libcap2-bin infrastructure
is gone — the container follows a single root-supervisord model. See
CONTAINERIZATION.md.

Honest session-loading overlay

Opening a conversation drops the simulated progress bar that crept to a fake 99%
over ~24 seconds and shows an honest indeterminate spinner instead; the
conversation now appears the moment the fetch resolves, with a "Still loading…"
hint after 8 seconds.

Upgrade Notes

Drop-in from v1.4.10: pip install -U deeptutor; Docker users pull
ghcr.io/hkuds/deeptutor:latest. No migrations, no configuration changes. The one
behavior change is native tool calling defaulting on for cloud OpenAI-compatible
providers — almost always what you want, since it's what makes KB retrieval and
capability tools fire.

Full Changelog: v1.4.10...v1.4.11

v1.4.10

Choose a tag to compare

@pancacake pancacake released this 21 Jun 07:03

DeepTutor v1.4.10 Release Notes

Release Date: 2026.06.21

A deployment-and-account follow-up to v1.4.9: a self-service
profile page with avatars, a hardened container story you can run rootless
behind a single port, and tighter MCP tool access in multi-user deployments.
Drop-in for everyone — the one behavior change is scoped to non-admin users in
multi-user mode.

Heads-up for multi-user deployments. MCP tools are now deny-by-default
for non-admin users
: a regular user can no longer discover or load
deployment-wide MCP host tools until an admin grants the specific tool names
in their grant. Admins stay unrestricted, and single-user / no-auth installs
are unaffected (their session runs as admin). Nothing migrates and nothing
breaks on upgrade — if your non-admins need MCP tools, grant the names in the
user's grant.

What's New

Profile page with avatars

Every signed-in user gets a self-service Profile page: pick a built-in icon
(with a color) or upload your own image as an avatar, see your account and role,
and sign out. Your avatar then shows up in the sidebar, and an admin ring marks
admin accounts at a glance.

Run DeepTutor in a container, rootless-ready

A new CONTAINERIZATION.md
guide covers three shapes — plain docker run, docker compose with the
PocketBase sidecar, and a hardened rootless Podman path (compose.yaml,
read-only root filesystem, tmpfs system dirs) — plus a .env.example to start
from. The frontend now proxies /api/* and /ws/* to the backend at request
time
, so the browser only ever talks to one port (:3782): no API URL baked
into the JS bundle, no startup sed. Map a single port and you're done.

Tighter MCP tool access in multi-user mode

As noted above, non-admin users now fail closed on MCP tools until an admin
grants the names. The grant editor surfaces MCP tool grants alongside the
built-in tool whitelist, so you can see and set exactly what each user can reach.

Quieter logs

Routine 200s — the chatty frontend polling of /settings, /tools,
/knowledge/list, and friends — no longer flood the console. uvicorn's
per-request access log is now disabled on every launch path (deeptutor start, the launcher, and the Docker entrypoint), and a single middleware
surfaces only non-200s, the ones actually worth seeing.

Fixes

  • Client auth state resolves at request time through the new proxy, which also
    sizes the request body for uploads (avatar images, attachments).
  • Avatar rendering falls back safely for unknown colors instead of turning
    invisible; the auth-status fetch is de-duplicated.
  • docker-compose.yml PocketBase mount path corrected.

Upgrade Notes

Drop-in from v1.4.9: pip install -U deeptutor; Docker users pull
ghcr.io/hkuds/deeptutor:latest. No migrations, no configuration changes.
Multi-user deployments only: if your non-admin users rely on MCP tools,
grant the specific tool names per user — they fail closed until you do.

Full Changelog: v1.4.9...v1.4.10

v1.4.9

Choose a tag to compare

@pancacake pancacake released this 19 Jun 12:05

DeepTutor v1.4.9 Release Notes

Release Date: 2026.06.19

A maintenance follow-up to v1.4.8 that sharpens Settings and
wires Mastery practice into your Question Bank. Search settings now show only
the connection fields your provider actually uses, connection profiles can be
renamed and name themselves after their provider, and the questions you answer
in a Mastery Path are recorded for review. Drop-in — no migrations.

What's New

Search settings show only the fields your provider uses

Settings → Search now adapts its connection fields to the provider you pick.
API-key providers (Brave, Tavily, Jina, Perplexity, Serper) show just the API
key; SearXNG shows just its Base URL, marked required; DuckDuckGo and "none"
show no credentials at all. Custom or unrecognized providers still show every
field, so nothing a provider might need is ever hidden.

Rename connection profiles, auto-named by their provider

A new connection profile now arrives already named after its provider, with a
rename control surfaced next to it. As long as you haven't typed your own name,
the profile keeps tracking the provider when you switch it — a "Brave" profile
becomes "Jina" — but the moment you rename it, the name is yours and is never
overwritten.

Mastery practice flows into your Question Bank

When DeepTutor grades a question inside a Mastery Path, the attempt — the
question, your answer, and whether you got it right — is now recorded in that
session's Question Bank. Practice you do inside a learning plan sits alongside
your generated quizzes, ready to revisit.

Fixes & docs

  • The Tools step of the Settings tour showed raw placeholder text instead
    of its title and description; it now reads correctly in both English and
    Chinese, with a test guarding against untranslated tour steps.
  • The README and its translations were refreshed for the current UI — an
    updated surface walkthrough, My Agents, the Knowledge Center, and current
    screenshots.

Upgrade Notes

Drop-in from v1.4.8: pip install -U deeptutor; Docker users pull
ghcr.io/hkuds/deeptutor:latest. No migrations, no configuration changes.

Full Changelog: v1.4.8...v1.4.9

v1.4.8

Choose a tag to compare

@pancacake pancacake released this 18 Jun 14:17

DeepTutor v1.4.8 Release Notes

Release Date: 2026.06.18

A focused follow-up to v1.4.7: the agents you connect under
My Agents now include your own Partners, and every Partner gains a
private memory of its own. Connect a partner beside your local Claude Code /
Codex, select it in chat, and DeepTutor consults it live — its persona, library
and skills answering through the partner's own loop. Drop-in — no migrations.

A partner's memory now lives with the partner. Previously a partner read
and wrote the owner's shared memory; now each partner keeps its own
long-term memory in its workspace, while still reading the owner's shared
memory as context. This is non-destructive — the owner's memory is untouched
and stays readable — it only changes where a partner's new memories land.
Nothing to do on upgrade.

What's New

Consult a Partner as a Connected Agent

My Agents now lists your Partners next to a local Claude Code / Codex.
Connect one and select it in the composer, and the turn runs on a single
consult_subagent tool against that partner's own chat loop — its soul, library
and skills — streaming its trace live in the sidebar. Every consult within one
DeepTutor chat threads into a single partner session, archived in that partner's
history and titled from your first question, and the connection wears the
partner's own avatar.

Partners Get Their Own Memory

A partner now has a split memory model, exposed through three always-on
tools that replace chat's read_memory / write_memory on every partner turn:

  • partner_read — reads the owner's shared memory and the partner's own,
    concatenated.
  • partner_memorize — writes only to the partner's own workspace; a partner can
    never touch the owner's memory.
  • partner_search — keyword search over the partner's own conversation history.

Because these are mandatory, the per-Partner read_memory / write_memory
toggles are gone from Partner tool settings.

Reference a Partner Conversation as Context

A partner conversation can now be pulled into a DeepTutor chat as a referenced
transcript (admin-only), framed as a third party under the partner's own name —
the same way imported agent histories are.

Upgrade Notes

  • Drop-in from v1.4.7: pip install -U deeptutor; Docker users pull
    ghcr.io/hkuds/deeptutor:latest. No migrations.
  • The partner-memory change above is automatic and non-destructive: existing
    partners keep reading the owner's shared memory and simply gain their own
    writable store.

Full Changelog: v1.4.7...v1.4.8

v1.4.7

Choose a tag to compare

@pancacake pancacake released this 17 Jun 16:25

DeepTutor v1.4.7 Release Notes

Release Date: 2026.06.18

A focused release on top of v1.4.6: your local coding agents
become something DeepTutor can talk to. Connect Claude Code or Codex
running on your machine as a knowledge source, and chat consults it live
mid-turn. My Agents graduates to a top-level destination, Partner
conversations gain branch / resume / delete with a replayable trace, and the
EduHub skill browser and voice providers are sturdier. Drop-in — no migrations.

Everything new is opt-in. Connecting a local agent needs the Claude Code
or Codex CLI already installed on the machine running DeepTutor — nothing is
detected or launched until you connect one. My Agents moved from
/space/agents to a top-level /agents (same content, new home). Existing
data loads as-is; nothing to migrate.

What's New

Connected Agents — Consult Your Local Claude Code / Codex

You can now point a knowledge base at a live agent CLI on your own machine
and consult it from chat:

  • DeepTutor detects an installed Claude Code or Codex and connects it as
    a new subagent knowledge source — a pointer to the CLI plus an optional
    working directory, with nothing indexed or copied.
  • Select that agent in the composer and the turn runs on a single
    consult_subagent tool: the model asks your local agent, watches its run
    stream in, and goes back and forth up to a per-turn budget before answering
    you in its own voice.
  • Configure each backend at /settings/agents.

My Agents, Now Top-Level

The My Agents hub moves out of the Learning Space to its own destination at
/agents, with two halves: the live agents you've connected (above), and
the Claude Code / Codex chat histories you've imported as resumable agents.

Partners: Branch, Resume, and a Replayable Trace

Partner conversations got sturdier on both IM and the web:

  • New slash commands — /branch, /stop, /sessions, /resume, /delete
    join /help, /new, /status, /history, and /tool.
  • The web Partner chat now persists each turn's thinking/tool trace and
    rehydrates it into the collapsible activity panel when you reopen a
    conversation, switch sessions, or branch — matching product chat.
  • Conversations carry real auto-derived titles, and you can branch, resume,
    or delete them from either surface.
  • Built-in tools are now configurable per Partner alongside the toggleable
    system tools.

Sturdier EduHub & Voice

The EduHub skill browser is a full in-app catalog now — search and preview
registry skills before importing — and a new [EduHub] issue template routes
registry bug reports to the main repo. On the voice side, providers surface
HTTP errors with status and body instead of a generic failure, and STT accepts
raw PCM streams (converted to WAV server-side).

Upgrade Notes

  • Drop-in from v1.4.6: pip install -U deeptutor; Docker users pull
    ghcr.io/hkuds/deeptutor:latest. No migrations.
  • Connected Agents require the Claude Code and/or Codex CLI installed on the
    host running DeepTutor — they are detected, never installed for you.
  • The docs at deeptutor.info are still catching up to
    the recent releases and will be refreshed shortly.

Full Changelog: v1.4.6...v1.4.7