v0.12.1.md
docs/release-notes/v0.12.1.md
Tesserae v0.12.1 — every endpoint routes in fleet serve
<!-- translations:start -->
한국어 · 中文 · 日本語 · Русский · Español · Français · Deutsch
<!-- translations:end -->
Released 2026-06-29 · PyPI · GitHub release · pip install --upgrade tesserae==0.12.1
A patch release that completes the multi-project serve story from v0.12.0. Drop-in over v0.12.0.
Every /api/* routes to the right project in a bare server
In v0.12.0, bare tesserae serve (serving every registered project) only routed /api/ask — /api/clip and /api/transcript-search returned 404, so the Chrome clipper couldn't clip to a multi-project server and the per-project sessions search didn't work. Now every endpoint routes:
/api/ask,/api/ask/health,/api/transcript-search— routed by the page's/<alias>/Referer to that project./api/clip— a clip comes from an external web page, so there's no Tesserae Referer to route on. The server resolves the target project from (1) aprojectalias in the clip body, (2) the sole registered project if there's only one, else (3) a400listing the available aliases. The Chrome extension gained a Target project setting that fills inproject.
Single-project tesserae serve --project X is unchanged — its security (the extension/loopback CORS gate, the clip token, and the 5 MB body cap) is byte-identical, since both modes now share one implementation.
Transcript search fails closed with 409 when two registered projects share a directory name (memex namespaces transcripts by basename, so it can't tell them apart) — rather than mixing one project's session history into another's.
Also
- Docs —
docs/ingest.mdgained a "Building the concept layer (--extractor)" guide for the v0.12.0 LLM extractor; the cognee backend'sGRAPH_COMPLETIONdefault and the fleet live-ask are now documented.
Upgrading from v0.12.0
Drop-in. To clip into a specific project from a bare tesserae serve, set Target project in the extension options to that project's alias.