1.2.1 is a regular patch release. Its main theme is web research: Kimi, DeepSeek and Firecrawl join as web-search providers, and a new webFetch slot lets the agent's fetch_url tool use a hosted reader instead of the built-in one. It also contains one breaking change, the removal of the legacy director-graph classroom chat (#1913), and removes retired models from the built-in catalogs (#1939). Read Breaking Changes before upgrading from 1.2.0.
Breaking Changes
- The legacy director-graph classroom chat is removed; classroom chat always runs on Pi. #1913
- Pi needs a Classroom model with tool calling: select one for Classroom in Course Model Config, or set the
classroomslot (or thellmslot it inherits from) inopenmaic.yml. For Gemini, use the nativegooglepreset. - Remove
NEXT_PUBLIC_PI_CHAT_ENABLED. A production build accepts only unset, an empty string,trueor1(exact match) and fails with migration guidance on any other value. The Docker build arg and its Compose forwarding remain only to carry the value to that check. POST /api/chatis removed and answers404. WithACCESS_CODEset, an unauthenticated request still gets401first.
- Pi needs a Classroom model with tool calling: select one for Classroom in Course Model Config, or set the
Highlights
- Web research. Every new provider is opt-in or must be assigned; existing search defaults and the keyless
builtinreader stay as they are.webFetchslot. The reader behind the agent'sfetch_urltool is now a capability slot with its own provider registry. It defaults tobuiltin(the existing local reader);webFetch: nullinopenmaic.ymlremoves the tool. Kimi is the first hosted reader, reusing thekimiorkimi-coding-plancredentials. Choose the reader in Course Model Config → Web Fetch and enter keys in Settings → Model Services → Web Fetch. URL and private-address checks run before a URL reaches a hosted reader and again on the final URL it reports; each request uses one reader, with no fallback. #1912- Kimi web search. Shares the Kimi chat key and base URL; Open Platform keys use Search Pro and Coding Plan keys use the Coding Plan search endpoint. A Kimi chat key alone does not enable search: set
WEB_SEARCH_KIMI_ENABLED=true, addweb-search.kimitoserver-providers.yml, or, withopenmaic.yml, assignslots.webSearchto akimiprovider.WEB_SEARCH_KIMI_ENABLED=falseturns it off. #1911 - Token plans can declare web fetch. Connecting Kimi Coding Plan in Settings → Token Plan now assigns web fetch to the plan alongside chat and web search, taking over the implicit
builtindefault without a conflict prompt; disconnecting returns to the server default. Lock thewebFetchslot to keepbuiltin. #1927 - DeepSeek web search and fetch. The
deepseekpreset reusesDEEPSEEK_API_KEYand its API base for both tools. Opt in to search withWEB_SEARCH_DEEPSEEK_ENABLED=true, aweb-search.deepseekentry, or an explicitwebSearchslot; assignwebFetch: deepseekinopenmaic.ymlfor fetch. #1937 - Firecrawl web search and fetch. One
firecrawlprovider (preset: firecrawl) serves bothwebSearchandwebFetchwith one key.FIRECRAWL_API_KEY/FIRECRAWL_BASE_URLconfigure it in legacy setups, where it comes last in the search preference order; web fetch stays onbuiltinuntilwebFetchis assigned to it. A self-hosted Firecrawl base must be declared inopenmaic.yml. #1931 #1834 (by @JuampiHernandez)
Features
- Classroom chat:
cue_usercan offer 2 to 4 suggested replies, shown as one row of buttons in the roundtable. Choosing one sends it as an ordinary learner message; learners can still type their own reply. #1379 (by @yanpgwang)
Bug Fixes
- Chat: on plain HTTP at a non-localhost address (a LAN or Tailscale IP, for example), where the browser has no Web Locks, classroom chats failed to load and every save retried in a loop. Chats now save and load there; two tabs on the same chat resolve last-write-wins. The deployment guide recommends HTTPS for phones and tablets. #1929
- i18n: the server picks the initial language from the locale cookie, then
Accept-Language, and sets<html lang>to match, so server and client render the same language: a browser in another language no longer gets Chinese server HTML that switches after load./and/_not-foundnow render dynamically. #1874 (by @costajohnt) - Generation: a non-numeric or non-finite shape
rotateis reported as a model-output error with its element path instead of silently becoming0; a missing ornullangle still means0(@openmaic/generation0.3.21). #1891 (by @Hahaa909) - Roundtable: the suggested-reply bubble no longer appears stacked with the outgoing chat bubble and then jumps down; it appears once, in place, after the previous bubble has left. #1943
Packages
@openmaic/generation0.3.21 (was 0.3.20). Other packages are unchanged from 1.2.0.
Known issues
- Google shuts down the Veo 3.1 previews on October 22, 2026; after that the built-in Veo provider has no working model. #1940
- Qwen voice cloning still uses a retired model, so registering or synthesizing a cloned voice fails until it moves to CosyVoice;
TTS_QWEN_VOICE_CLONE_MODELcan point to another model. #1941 - Volcengine Ark Agent Plan models report no image input, so reference images are dropped for them. #1942
Other Changes
-
Models: remove retired entries from the built-in catalogs and presets (existing saved IDs remain user-managed): #1939
- deepseek:
deepseek-v4-flash,deepseek-v4-flash-vision-exp. Usedeepseek-flash. - qwen:
qwen3.6-max-preview,qwen3-max. Useqwen3.7-max. - kimi:
kimi-k2.5,kimi-k2-thinking. Usekimi-k3. - siliconflow:
deepseek-ai/DeepSeek-R1-Distill-Qwen-7B,Pro/moonshotai/Kimi-K2.5,THUDM/GLM-4.1V-9B-Thinking,THUDM/GLM-Z1-Rumination-32B-0414. Use an available model from the provider catalog. - grok:
grok-4-1-fast-reasoning,grok-4-1-fast-non-reasoning,grok-code-fast-1. Usegrok-4.3orgrok-build-0.1. - grok-image:
grok-imagine-image-pro. Usegrok-imagine-image. - tencent-hunyuan:
hy3-preview; also removehunyuan-2.0-thinking-20251109andhunyuan-2.0-instruct-20251111from environment examples. Usehy3. - xiaomi:
mimo-v2-pro,mimo-v2-omni,mimo-v2-flash. Usemimo-v2.6-proormimo-v2.6-flash. - doubao:
doubao-seed-1-8-251228. Usedoubao-seed-evolving. - seedream:
doubao-seedream-3-0-t2i-250415. Usedoubao-seedream-5-0-260128. - seedance:
doubao-seedance-1-5-pro-251215. Usedoubao-seedance-2-0-mini-260615. Keepdoubao-seedance-1-0-lite-t2v-250428while its status is Retiring, not Shutdown. - qwen-image:
qwen-image-max,qwen-image-max-2025-12-30,qwen-image-plus,qwen-image-plus-2026-01-09,qwen-image. Useqwen-image-3.0. - nano-banana:
gemini-3.1-flash-image-preview,gemini-3-pro-image-preview. Usegemini-nano-banana-2.1orgemini-3-pro-image. - veo:
veo-3.0-fast-generate-001,veo-3.0-generate-001,veo-2.0-generate-001. Useveo-3.1-generate-preview(scheduled to retire October 22, 2026). - qwen-tts:
qwen3-tts-instruct-flash,qwen-tts. Useqwen3-tts-flash. - Ark Agent Plan doubao:
doubao-seed-2.1-turbo,doubao-seed-2.0-pro,doubao-seed-2.0-code,doubao-seed-2.0-lite,deepseek-v3.2,minimax-m2.7,glm-5.2,glm-5.1,kimi-k2.6. Usedoubao-seed-2.1-pro,deepseek-v4-proorminimax-m3. - Ark Agent Plan seedream:
doubao-seedream-5.0-lite. Usedoubao-seedream-5.0-pro. - Ark Agent Plan seedance:
doubao-seedance-1.5-pro. Usedoubao-seedance-2.0-mini. - Removed IDs that vendors route to a catalog successor resolve to it for capability lookups, so saved configurations keep image input, thinking controls and reasoning replay:
deepseek-v4-flashanddeepseek-v4-flash-vision-exp→deepseek-flash,hy3-preview→hy3,grok-code-fast-1→grok-build-0.1, Ark Agent Planglm-5.2→glm-5.3. grok-4-1-fast*(served asgrok-4.3at a fixed reasoning effort) and SiliconFlowPro/moonshotai/Kimi-K2.5remain valid in saved configurations. They lose catalog capability metadata, including image input and thinking controls; reselect a replacement model to restore that metadata.- Retain
qwen3-tts-vc-2026-01-22as the non-selectable grouping ID for saved cloned voices. The model has retired: clone registration and synthesis fail until migration to CosyVoice.TTS_QWEN_VOICE_CLONE_MODELcan point to another model. - Keep upcoming retirements in the catalog: MiMo V2.5 / V2.5 Pro on October 21, 2026; Veo 3.1 Fast / Standard / Lite previews and Doubao Seed 2.0 Lite / Mini on October 22, 2026;
gpt-image-1on October 23, 2026. Google's recommended Veo replacement,gemini-omni-1.1-flash, is not yet supported by the Veo adapter. - Ark Agent Plan: add the officially listed migration targets
doubao-seed-2.1-lite,glm-5.3,kimi-k3andkimi-k2.8-preview(the Small-tier replacement forkimi-k2.7-code). - Keep models with future retirement dates and unverified entries; update image/video probe defaults and refresh the documented model tables.
- deepseek:
-
Dependencies:
@langchain/langgraphis no longer installed. #1913 -
Docs:
CONTRIBUTING.mddocuments how app release versions are chosen. #1938