Blog ยท release
Latch 0.21.1
A warm Handler, and a grammar that cannot write an empty action. No migration.
- Keep the model loaded (
ai.keep_alive_minutes). Every model call now carries akeep_aliveof your own: blank means your cycle plus 10 minutes, so the next cycle finds the model resident and its prefix cached โ on the maintainer's 27B that is 1โ2 s a cycle instead of 8โ10 s, and a chat turn you can feel the difference in; a number is yours (up to 8 days);0frees the GPU right after each call. Before this a fixed 30 minutes under a 180-minute cycle made every cycle a cold start (58 of 62 production calls, measured 2026-10-18). Shown on Settings โ AI Handler. Cycles, chat, the kennel and the profile's posts all send it. - The reply schema says what the game checks. Ollama's structured output used to be told
only that an action has a
type; a model could close an action after{"type": "prompt"}โ an empty shell the game then logged asinvalid(9 of 11 replay actions, 7 of 23 production actions on the 27B) โ or write anassignwithadd_time's keys. The schema now carries one branch per action type with its required keys and no other, the integer ranges (minutes1โ1440,due_hours1โ168, an order'sminutes1โ600, maintenance 10โ60), the text lengths and the 280-character line, and at most 4 actions. The Python check is unchanged and still runs on everything.