A Refreshed Local Model Catalog
The on-device model lineup has been rebuilt from the ground up using Unsloth-hosted builds — higher-quality versions of every size class.
- Granite is the new default for on-device chat, with its own provider icon in the model picker.
- GPT-OSS 120B is now available as a heavyweight option for users with the hardware to run it.
- Shard-aware downloads — large multi-file models download in parallel and resume cleanly if you cancel.
- Your old picks survive — if you previously selected a model that's no longer in the catalog, Canto silently maps it to the closest current build.
- Goodbye, drafter — the experimental "draft decoding" setup has been retired. The new catalog is faster end-to-end without it, and that's one less knob in Settings.
Read all the notes
Cold-Start Local Models
Canto no longer eagerly loads your local model the moment the app opens.
- Faster launches — startup no longer pays the cost of mapping gigabytes of weights.
- Lower idle memory — a session where you only read or write notes never pays the AI footprint at all.
- Warming, surfaced clearly — when you do send the first prompt, Agent Chat shows a brief warming status before the response begins.
- Adopts already-loaded models — if the runtime is warm from another flow, the agent reuses it instantly instead of reloading.
Send Diagnostics
A new Send Diagnostics option in the Help menu and on Settings → About makes it easy to report a bug without exposing your notes.
- Full preview before sending — the entire support bundle is shown to you as JSON, with secrets and personal content scrubbed out.
- Pick what to include — toggle whether to attach a screenshot, recent crash metadata, memory state, update state, and database health info.
- Save locally or upload — save a copy to disk for your own records, or post it directly to LonelyDuck.
- Crash-aware — if a window or helper process crashes, that event is captured locally so the next diagnostics report has the right context.
Long Conversations Stay Snappy
Big tool results — web research, large file reads, multi-page extracts — used to live in memory for the whole session. They now offload to disk, so chats stay light no matter how long they get.
- Big tool results stored on disk as artifacts in your vault, with a compact summary kept in the chat itself.
- Cached token estimates — the context-usage indicator no longer re-tokenizes everything on every render.
- Reclaim now — a new manual button in Settings → Memory drops idle weights and frees RAM on demand, no restart needed.
- Smarter idle eviction — when Canto unloads an unused model, it now runs a deeper cleanup pass so RAM actually goes back where it belongs.
A Self-Healing Vault
The Memory Links sidecar database (the engine behind Related Notes and semantic search) is now resilient to corruption, and your main vault file actively reclaims unused space.
- Auto-rebuilds a broken index — if the embedding sidecar can't be opened, Canto quietly quarantines the bad files and starts a fresh index instead of refusing to launch.
- One-shot compaction at launch — when your vault has accumulated significant unused space, Canto compacts it on startup so the file shrinks back down on disk.
- No more index bloat — semantic-search tables are rebuilt cleanly each launch instead of growing indefinitely from background indexing.
- Separate dev and production indexes — development builds use their own sidecar file, so testing never collides with your real vault.
Friendlier Embedding Status
The status-bar pill and Memory Links inspector are much better at explaining which part of indexing needs attention.
- Notes vs. links called out separately — error states say things like "links are stuck on a fetch" or "notes need a rebuild" instead of a generic "needs attention."
- Active phases win — if links are actively being fetched or embedded, the pill stays in its working state instead of being overridden by stale errors.
- Real error messages bubble up — the inspector shows a short, truncated reason for the failure right in the lane header.
Web Search, Off Means Off
If you haven't set up a Tavily API key, web research tools used to still appear and fail confusingly. Now it's clean either way.
- Tools hidden when not configured — without a key, all web research tools (search, extract, map, crawl, research, fetch URL) are completely removed from the agent's toolbox.
- Friendly nudge in chat — if your message is clearly asking for research, the agent replies with a short note and a shortcut to Settings → Web Search.
- Polished warning panel — the missing-key banner in Agent Chat has been redesigned to match the rest of the modern chat surface.
The Local Agent Bails Out Instead of Spinning
Occasionally a local model produces a malformed tool reply. Older builds would let the agent keep retrying until the watchdog tripped — 0.7.9 catches the pattern and ends the run cleanly with an explanation.
- Repeat-failure guard — when the same kind of tool failure happens twice in a row, the agent stops and explains rather than looping.
- Clearer tool-error summaries — common validation problems now produce short, agent-readable messages so the model can self-correct on its next turn.
- Cleaner streaming output — internal scaffolding leaked into the streaming preview is stripped more aggressively, so what you see really is what lands in your note.
- Citations done right — the agent now writes
[1]-style numeric citations instead of accidentally writing them as [[1]] wikilinks that point nowhere.
Under the Hood
- Unsloth-aware load planner — the local model loader understands sharded files, normalizes legacy IDs, and persists your effective selection so it survives migrations.
- Lifecycle-synced runtime — Agent Chat, Settings, and the memory inspector all stay in sync when the main process loads, sleeps, or evicts a model behind the scenes.
- Pressure-aware idle timers — outside Low Memory Mode, the idle-unload window now adapts to current memory pressure rather than using a single hard-coded value.
- Effective-settings caveats — if your saved weight-pinning options diverge from what's actually live in the runtime, the Memory panel flags it and prompts a quick reload.
- Lower baseline RAM — the embeddings model now idle-unloads after a quiet window even outside Low Memory Mode, and re-warms automatically on the next embed.