This release introduces Selora AI Local, our own LLM that runs entirely on your hardware. No cloud calls, no API keys, no data leaving your network — just point the integration at your inference box and chat with your home. It is shipping alongside an in-place scene editor, a label-driven ignore list for suggestions, scoped MCP write access, and a long list of robustness fixes to chat, parsers, and the collector.
Highlights
Selora AI Local
A purpose-built local LLM for Home Assistant, tuned for automation authoring, device control, and the kind of multi-step "what's going on in my house" questions that cloud models charge per-token to answer. The model is open and available on Hugging Face: selorahomes/Selora-AI. v0.10.0 ships the integration side of model v0.4.7:
- One-click provider in the config flow. Pick "Selora AI Local" during setup, point it at your inference server, done. No prompt tuning, no model selection, no token accounting.
- Editable host in Settings. Move the inference box to a new IP without removing and re-adding the integration.
- New wire format, system prompt, and validator matched to model v0.4.7. Dedicated detector tests guard the local-only paths in CI.
- Smarter entity ranking with fallback. When the prompt window can't fit every matching entity, the model sees the most relevant ones first; a fallback pass kicks in when filtering returns nothing.
- Identity short-circuit. "What are you?" / "Who built you?" style questions answer locally without burning a model turn.
- Higher answer and clarification caps so multi-step replies don't get truncated mid-thought.
If you've been holding off on Selora because of the cloud dependency, this is the release to install.
Scenes — in-place desired-state editor
You can now edit a scene's target state directly from the scene card, with live previews and inline validation. The flow no longer punts you out to YAML for the common cases.
Suggestion ignore list
Mark entities, devices, or whole areas as off-limits for Selora's pattern engine using a standard Home Assistant label (selora_ignore). A new panel section shows what's currently ignored and lets you bulk-edit it. The collector, pattern engine, and suggestion generator all honor it.
MCP write scope
The Selora MCP server now gates every state-mutating tool behind an mcp:write JWT scope. Read-only tools stay open under the default token; writes require a token explicitly issued with write rights. Existing tokens keep working for reads.
Other improvements
- Sparkles animation speeds up while the LLM is thinking, so the panel actually feels live during long generations.
- Parsers now humanise "unknown entity" errors and auto-correct obvious domain typos (
lights.kitchen→light.kitchen) before rejecting the automation. - Scene blocks with trailing prose from the model no longer fail to parse.
Fixes
- Presence + duration automations: closed gaps where presence triggers paired with duration conditions would fail validation or fire incorrectly.
- OAuth callback now picks the panel origin instead of guessing, fixing edge cases behind proxies.
eval_templateis now properly scoped to the calling tool — no more cross-tool template bleed.- Collector boot: the first collection cycle is deferred so HA startup isn't blocked.
recorder_historycapped by record count to keep memory bounded on busy installs.- Python 3
exceptsyntax cleaned up across the integration (caught by ruff after the 3.14 bump). - Flow-entity-link styling restored after the CSS split regression.
Upgrade notes
- Selora AI Local users: you need model v0.4.7 on the inference box. Older builds will fail the new validator. Update the host URL in Settings if your inference box moved.
- MCP write users: re-issue any token that needs to call write tools, with the
mcp:writescope included. Read-only tokens are unaffected. - No config-flow migration needed; existing entries keep working.
Full changelog: v0.9.1...v0.10.0