1.25.1
October 22, 2026
Local embedding models
- Local models can now embed your memories. Settings → Providers & Keys → Embeddings offers your local AI server next to the cloud providers. Pull an embedding model there (EmbeddingGemma 2 on Ollama is the one to start with:
ollama pull embeddinggemma-2), press Fetch, pick it, and memory, lore search and the knowledge graph embed on your own machine with no key. Ollama, LM Studio and KoboldCpp all work. You can chat on one server and embed on another, or point a phone at the PC's server over Wi-Fi so both devices share one model. For models that want their own wording, the document and query prefixes are editable under Settings → Services. The EULA's embeddings clause changed to match, so it asks for your acceptance once. If you keep Gemini, nothing changes for you. - Switching models asks first. Gemini Embedding 2 stays the standard; every other model is a different vector space, and memories embedded by one model cannot be recalled by another. So every stored memory, lore passage and graph entry now remembers which model made it, only the ones made by your current model are recalled, and picking a model in a different space asks before anything happens: it tells you how many stored memories would need re-indexing and lets you switch and re-index now, switch and re-index later, or keep what you have. Nothing is ever re-embedded without your tap.
- A red warning where it matters, with the fix one tap away. When a chat, a lorebook or a knowledge graph holds memories from a different embedding model than the one your device uses, a pulsing red banner says so in plain words, names both models, and re-indexes them when you tap it. Re-indexing runs in the background while you keep playing, shows its progress, pauses itself if the provider keeps failing, and picks up where it left off if the app is closed. The Embeddings card always states which model this device embeds with and whether every stored memory matches it.
- Shared characters and worlds say which model embedded them. Characters, worlds and exported timelines name the embedding model their vectors came from. Importing one made with a different model than yours brings a note that names both models, counts what it would re-index, and offers to do it now; "Later" leaves the red banner on that character to remind you. Character Kitchen pages show "Matching vector space" in green when a character's memories were embedded with your model, and name the model with a re-index note when they were not. A chef publishing with a non-standard model is told the page will say so.
- Two devices on different embedding models still sync cleanly. They no longer trade memories they cannot use, and no longer re-send every message on every connection because their vectors differ. Each keeps its own memories, text and everything else still syncs, and the Wi-Fi Sync page names both models and suggests pointing the phone at the PC's local AI server so the household shares one. Devices on the same model sync exactly as before.
- Picture captions for memory (off by default). Turn it on under Settings → Services → Image Transcription and your Vision model writes a short caption of every picture a message carries, one you attach or one a character generates. The caption is embedded with the message, so a picture can be recalled by meaning on any embedding model, local text-only ones included, and it survives a re-index. The caption is never shown as the message; it costs one Vision call per picture-bearing message.
- Your embedding model choice survives a settings reset.