ZenOS-AI: A modular context-aware AI home automation framework for Home Assistant

Friday’s ZenOS-AI

A Modular, Context-Aware AI Home Automation Framework for Home Assistant

AI / LLM disclosure

ZenOS-AI and this post were developed with AI assistance. AI tools were used for drafting, refactoring, documentation, debugging support, and test workflow assistance.

The project is reviewed, tested, edited, and maintained by the ZenOS-AI maintainers. AI output is treated as draft work, not as an authority. Runtime AI behavior, privacy boundaries, Home Assistant permissions, and safety-related limitations are documented below.

ZenOS-AI may connect Home Assistant Assist, local or cloud LLMs, MCP-style tools, Home Assistant services, REST commands, and external household systems. Please review the privacy, permissions, and safety sections before exposing entities, scripts, REST-backed actions, locks, garage doors, alarms, cameras, or other sensitive controls.


This is the support, release, and announcement thread for ZenOS-AI!

(the underlying technology for ‘Friday’s Party’)

Current
Stable: 2026.7.1
Beta: 2026.8.0 (TBD)

ZenOS-AI is a third-party project for Home Assistant. It is maintained by the ZenOS-AI project maintainers. It is not part of Home Assistant Core and is not maintained by Nabu Casa or the Home Assistant project.

Please use this thread for:

  • Release announcements
  • Upgrade notes
  • Installation help
  • Configuration questions
  • Bug reports
  • Compatibility reports
  • Documentation corrections
  • Questions about supported ZenOS-AI capabilities

For broader discussion, demos, experiments, architecture ideas, screenshots, weird discoveries, and “what are people building with this?” conversation, please continue using the long-running Friday’s Party thread:

Front door to the party. < I’m not going to apologize, enter at your own risk.

If you have followed Friday’s Party, you may have seen me banging my head against this idea in public for the last 18 months. That thread is now over 600 posts old today. :tada: Yay.

It is fun, messy, useful, and very much still alive.

This thread is for the people who do not want to read the whole saga.

If your style is more “give me the release notes, tell me what it does, show me how to install it, and I’ll ask for help if I need it,” this thread is for you.

Think of this thread as the support desk.

Friday’s Party is still the campfire.


The short version

Everyone is suddenly talking about “AI agents” in the home.

ZenOS-AI is my attempt to build one that is useful, inspectable, and leashed. You want the ‘why’ go read the party… :backhand_index_pointing_up:

It lets Home Assistant behave more like a capable ‘household assistant’ while keeping control inside Home Assistant’s own automation model. The assistant can reason over the context you provide, use the tools you expose, call the scripts you allow, and interact with external systems through Home Assistant-native patterns.

That gets stupid powerful fast.

Sure, it can brief the house. …So can the default HA AI Task demo. A ZenOS Agent can know where your STUFF is. (That’s a different animal entirely) Knowing CONTEXT, where a thing is how it’s used what it connects to - unlocks things like:

  • It can connect inventory, documents, service requests, rooms, media, projects, people, and money into something the assistant can actually reason over.
  • It can help guide a guest through a configured emergency routine without exposing private household details.
  • It can work with an ITIL-style service desk system because Home Assistant can call REST endpoints, and ZenOS-AI can wrap those actions in safer assistant-facing workflows.
  • It can play Zork in your actual house. Totally not as a cranky AI who DIDN’T get selected for this season of Dungeon Crawler World. He MIGHT even be a little spiteful about being STUCK in an IBM AT… (please don’t sue me Matt. Everyone go read AND LISTEN TO DCC wherever you buy your audiobooks!)

That last one sounds silly until you realize what it proves: state, memory, room topology, inventory, navigation, multi-step interaction, and safe simulation.

The wow is real.

The leash is real too.


What makes ZenOS-AI different?

ZenOS-AI is not a Python integration, an add-on full of custom services, or an external MCP server bolted onto Home Assistant.

This repository contains zero executable Python code.

ZenOS-AI exists ENTIRELY inside the Home Assistant agent box. It can only act through Home Assistant constructs that you configure and expose.

It is built from:

  • Home Assistant packages
  • Jinja templates
  • Scripts
  • Automations
  • Helpers
  • Scenes
  • Intents
  • Assist-exposed tools
  • Home Assistant services
  • REST commands
  • Native Home Assistant configuration patterns

Most AI smart-home projects start by standing up a separate agent runtime and wiring that runtime back into the house, usually through MCP. “Just give me an API Key - we got you boo…” (Yeah, the alarm bells are going off in my head too. They should. I AM NOT saying all of these are bad, I AM saying you need to do your research first. but I digress…)

INSTEAD, ZenOS-AI starts from inside Home Assistant. It asks how far Home Assistant itself can go when its native building blocks are organized for AI-assisted workflows.

The important caveat is REST Command.

REST Command is a native Home Assistant construct. ZenOS-AI leans on it heavily. REST commands let Home Assistant call external HTTP endpoints from scripts, automations, templates, and services configured by the user.

That means ZenOS-AI can reach outside Home Assistant responsibly when the user deliberately configures those calls, while keeping the action path inside Home Assistant’s own tooling model.

In plain English: :melting_face:

ZenOS-AI can talk to external systems, create tickets, query inventory, update records, retrieve documents, log expenses, or trigger workflows if you configure those capabilities through Home Assistant.

The assistant can only do what Home Assistant tools, intents, scripts, automations, templates, helpers, scenes, REST commands, and services allow it to do.


What ZenOS-AI is

ZenOS-AI is a Home Assistant-native AI framework for building private, context-aware, agentic smart-home assistants using Home Assistant’s own tools and automation primitives.

It adds structured memory, tool manifests, knowledge routing, room topology, summarization, identity-aware context, and higher-level household workflows on top of Home Assistant.

It is designed to help Home Assistant Assist and compatible LLM backends work with structured home context, rooms, inventory, media, reminders, documents, household routines, service requests, and external systems reached through user-configured Home Assistant services or REST commands.

The goal is simple:

Give Home Assistant better context, safer tools, and more useful AI behavior while keeping the user in control of what is exposed, what can be acted on, and where data goes.


Current release

Stable: 2026.7.1 “Neo+”

Neo is the release where ZenOS-AI turns from “a collection of useful tools” into a system where the tools know themselves, talk to each other, and reason from live structured memory.

Highlights include:

  • CabCeption and LiveDrawers: structured memory becomes a graph, not a flat key-value store.
  • Tool Manifest: tools self-describe, including what they consume, return, require, and risk.
  • Lens Bus: generic knowledge requests route to registered providers like documents, wiki, service desk, media, and finance.
  • Room Manager: spatial topology, room context, exits, safety equipment, inventory, tasks, tickets, and media context.
  • ZenZork: a live text-adventure engine running on actual Room Manager topology.
  • New plugin surfaces for service desk, documents, wiki, CRM, finance, and kitchen workflows.

PLUS

  • KF5 — Self-Registering Tools:

    • bootstrap_kfc — tools declare their own KFC dojo-drawer contract via mode=kfc_manifest; zen_dojotools_manifest discovers and mounts them automatically, no Scribe authoring step needed. Adopted by Room Manager, AlertManager, Camera, Security Manager, and SystemTools.
    • FileCabinet mode-scoped whitelisttool:mode callout entries let a live drawer reach exactly one mode on a tool (e.g. a read-only self-description), never a write path.
  • Finance & Inventory:

    • Firefly III codex tierzen_codex_finance_depreciation (asset depreciation: SL/DDB schedules, business-use splits, disposal) and zen_codex_finance_cogs (auto-posts COGS to Firefly from Grocy stock consumption).
    • Grocy v5.3.1 — fixed stock_entry_update silently sending empty payloads on entry-id-only calls. New: Perishable Storage Coaching, COGS Coaching, battery-stock tracking, tax/depreciable-asset userfields.
  • New Lens Bus Provider:

    • Battery Notes (zen_stack_battery) — first ZenOS stack provider backed by a HACS integration (ha-battery-notes) rather than a self-hosted service. Battery health by area, cross-referenced with Grocy stock.
  • Other:

    • Postman direct_dispatch — authority-stack bypass mode, the migration path for the retired notification_router script.
    • ZenZork v1.7.0llm_narration toggle for live LLM-generated room narration, template fallback.

What can my agent ACTUALLY do?

Home Assistant already provides the primitives: Assist, scripts, automations, templates, helpers, services, entities, labels, scenes, intents, and REST Command.

ZenOS-AI uses those primitives to build higher-level assistant experiences.

1. Brief the house

Ask for the state of the home in human spatially and contextually anchored terms.

Friday can assemble a situational view from rooms, alerts, utilities, media, inventory, tasks, calendars, service tickets, and system summaries.

  • “What needs attention right now?” (Yes, with the summary pipeline active, she can.)
  • “What changed since this morning?”
  • Wake “You left the trash out again, Nathan…” < yeah, she does that too.

:unicorn: A smart home should do more than report raw entity states. It should help you understand what matters. AI is more than Rainbows and unicorn stories… If you’re going to burn the power and compute, make it useful.


2. Know where things are

With inventory configured, the agent can help locate supplies, parts, tools, equipment, books, games, pantry items, and project materials.

  • “Where are the sublimation supplies?”
  • “What spare parts do we have for the hot tub?”
  • “Add this printer to inventory and mark it as converted for sublimation ink.”

^^^ and when you use said agents to help write the team’s intro, they use your project list, apparently…

Most smart homes know devices. ZenOS-AI helps the home know stuff.


3. Run household maintenance like operations

With the service desk plugin configured, the agent can create, search, update, triage, link, and close work requests. Maybe a leaking sink, a broken blind, a hot tub issue, or a project task can become a tracked operational record instead of a forgotten text message.

  • “Can you report that the sink is leaking?”

Creates a service ticket, not a whole home announcement. The difference is CONTEXT.)

  • “Find the notes from the last AC issue. Who did we call?”

Context linking allows indexed search to start in the room or concept anchor HVAC is a concept not an entity.

  • "Did we actually replace the filter in the lawn tractor last time?”

Grounded in an ERP-capable inventory that you don’t need to be a quartermaster to operate - LLM > greek to me translation turns the lawn tractor into a ‘managed machine’ that exists in inventory anchored to the garage.

The house starts to feel like a tiny facility with it’s own facilities manager who just ‘knows.’ ZenOS-AI lets Home Assistant participate in the operations layer.


4. Understand rooms as places

Room Manager gives your agents spatial context.

Rooms can have portals, adjacency, exits, windows, safety equipment, utility notes, inventory, tasks, tickets, wiki pages, media state, and emergency guidance.

  • “What room am I in?”
  • “What exits are available from here?”
  • “What tickets, tasks, inventory, and media are tied to the kitchen?”
  • “Where is my Super-Suit?”

Rooms are not just labels on entities. They are places with context, risks, contents, and relationships. And the whole thing exists inside existing HA frameworks just looked at from a ‘certain point of view.’


5. Coordinate real home systems

ZenOS-AI includes higher-level managers for real household systems.

  • AutoVac for vacuum scheduling, readiness, consumables, wear monitoring, and post-run analysis.
  • SpaMaster for hot tub status, scenes, chemistry, post-soak logs, and supplies.
  • Media Manager for whole-home AV discovery, now-playing context, source preferences, and playback routing.
  • Security Manager for alarm state, zones, cameras, policies, and spatial handoff.
  • Plant Manager for power, water, gas, HVAC, mechanical systems, circuits, and utility context.
  • More coming. All while trying to be judicious with your tool count.

  • “Check the spa and tell me what needs attention.”
  • “Is the vacuum ready to run?”
  • “What is playing in the living room?”
  • “Show me the house utility overview.”

6. Find knowledge across systems

ZenOS-AI’s Library and Lens Bus route knowledge requests to registered providers.

That can include wiki pages, Paperless documents, service desk tickets, media evidence, catalog records, and other configured knowledge stacks.

  • “Find the manual for the hot tub.”
  • “Search the house notes for sublimation ink.”
  • “Find everything we know about the printer conversion.”

A useful assistant should know where to look without making the user remember the exact system, file name, tag, or API.


7. Connect people, vendors, projects, money, and work

Optional plugins can connect Home Assistant workflows to CRM, finance, and project tracking.

That means the agent can help relate household work to contacts, companies, receipts, assets, budgets, bills, transactions, projects, service requests, and follow-ups.

  • “Who is the vendor tied to this repair?”
  • “Attach this receipt to the deck project.”
  • “What did we spend on the printer conversion?”
  • “Mark this tool as a business asset.”
  • “Create a follow-up task for that contact.”

Because, some homes are also workshops, studios, rentals, labs, small businesses, or mini family operations centers.


8. Guide guests and emergencies safely

ZenOS-AI can support configured guest-safe and emergency guidance workflows through Home Assistant Assist, notifications, speakers, displays, scripts, room context, and automations.

This is not a replacement for alarms, emergency services, fire safety systems, locks, cameras, or professional life-safety equipment.

It can help communicate instructions when the right Home Assistant routines are already configured.

(All below would require manual configuration, we do not configure triggers by default, these are absolutely possible using known patterns and standard HA automations - even the new triggers!)

  • “A guest is here and the smoke alarm routine is active. Tell them what to do.”
  • “Announce the safest exit route.”
  • “Notify the household that a guest needs assistance.”
  • “Explain what is happening without exposing private household details.”

Because a smart home should be useful to people who do not know how the house works, especially when something is wrong.


9. Play Zork in your actual house

Yes, really. :puzzle_piece:

ZenZork is a text adventure engine that uses live Room Manager topology. It can navigate rooms, track facing, resolve exits, carry inventory, examine spaces, run quests, and produce a post-game Room Manager quality report. You need a way to check your work. Might as well be interesting.

Examples:

  • “Start Zork mode.”
  • “Look.”
  • “Go north.”
  • “Take the flashlight.”
  • “Start a quest to explore every room.”

If the agent can navigate a live model of the house as a text adventure, she can also support guided setup, troubleshooting, walkthroughs, inventory capture, and mock emergency flows without touching sensitive devices.

The relentless mocking of the dungeon when you failed to find the sock the 3rd time? You’re on your own buddy. I cannot guarantee you will not be eaten by grue nor certain goblin explosives do not show up on your path - stuff 'em in inventory quick! I dunno, you figure out what to do with unexploded inventory that’s your problem. Ask Carl. (You did see me say go read the book right?)


What ZenOS-AI does not promise

ZenOS-AI is powerful, but it is not magic and should not be treated as a safety-certified control system.

ZenOS-AI does not promise:

  • Perfect AI answers
  • Perfect device control
  • Correct behavior from every LLM backend
  • Compatibility with every custom integration
  • Safe automatic control of sensitive devices without careful configuration
  • That every optional plugin is available in every install
  • That cloud models keep data local
  • That local models are automatically private if the surrounding system is misconfigured

ZenOS-AI also does not bypass Home Assistant.

It cannot execute arbitrary Python from this repository, install packages, access the host system, or perform actions outside the Home Assistant tools, intents, scripts, automations, templates, helpers, scenes, REST commands, and services you configure.


Installation and documentation

REQUIRES A VALID CONVERSATION AGENT ALREADY SETUP - SEE HA documentation about installing a conversation agent of your choice.

ZenOS-AI installs as a Home Assistant package collection. Full installation steps are in the repo.

Basic install shape:

  1. Copy the ZenOS-AI package directory into your Home Assistant packages/ folder.
  2. Copy the ZenOS-AI custom templates into your custom_templates/ folder.
  3. Enable Home Assistant packages in configuration.yamlif not already setup for packages.
  4. Setup API keys for external services or dummy keys as desired.
  5. Paste the one-line conversation agent prompt template into your preferred - configured conversation agent.
  6. Set the ZenOS conversation agent helper to your conversation agent entity.
  7. Restart Home Assistant.
  8. Check ZenOS health sensors and run first-run setup.

See the install guide for the full walkthrough.

Optional plugins are disabled by default and enabled only if you need them.


Getting help

When asking for help, please include:

Home Assistant version:
ZenOS-AI version:
Install method:
Conversation agent:
LLM backend:
Local or cloud model:
Relevant ZenOS-AI component or plugin:
Relevant REST commands, if any:
What you expected:
What happened:
Relevant logs:
Steps to reproduce:

Please redact:

  • API keys
  • Tokens
  • Webhook URLs
  • REST endpoint secrets
  • Personal names
  • Street addresses
  • GPS locations
  • Private entity names
  • Calendar details
  • Message contents
  • Anything else you would not want public

Please do not paste unverified AI-generated troubleshooting answers as if they are known fixes. If AI helped you investigate something, say so and include the actual logs, configuration, or test results.


Bug reports

For bugs, please include:

  • ZenOS-AI version
  • Home Assistant version
  • Install method
  • Relevant component or plugin
  • Relevant configuration
  • Relevant REST command configuration, if involved
  • Error logs
  • Steps to reproduce
  • Expected behavior
  • Actual behavior
  • Whether the issue started after an upgrade

Bugs should be filed here:

Issues · nathan-curtis/zenos-ai

:backhand_index_pointing_down:This thread can still be used to ask whether something is likely a bug before opening an issue.


Release announcements

Release posts in this thread will generally include:

  • Version number
  • Release date
  • Compatibility notes
  • Breaking changes
  • New features
  • Bug fixes
  • Migration steps
  • Known issues
  • Documentation links

Current capability areas

ZenOS-AI 2026.7 includes or documents these major areas:

Area What it adds
Room Manager Spatial topology, room context, emergency snapshots, exits, inventory, tasks, tickets, media, wiki, utility index
FileCabinet Structured memory, drawers, nested graph storage, VirtualDrawers, LiveDrawers
Tool Manifest Self-describing tools, health, risk class, modes, inputs, outputs, routing metadata
Library and Lens Bus Knowledge routing across documents, wiki, tickets, media, catalog, and other providers
Grocy Inventory Governed inventory, stock, locations, shopping, chores, catalog, assets, consumables
AutoVac Autonomous vacuum scheduling, room election, readiness, consumables, wear monitoring
SpaMaster Hot tub control, scenes, chemistry, logs, consumables
Media Manager Whole-home AV, now-playing context, source prefs, playback hints, media evidence
Security Manager Alarm panel, zones, cameras, security lens handoff, alert policy
Plant Manager Power, water, gas, HVAC, mechanical systems, circuits, utility registry
Zammad Radar Service desk tickets, work requests, triage, anchors, queues, service history
Twenty Rolodex Contacts, companies, vendors, stays, appointments, reminders, tasks, HA person links
Firefly III Accounts, transactions, budgets, bills, savings goals, liabilities, finance snapshots
Project Tracker Project manifests, receipt logging, Grocy and Firefly linkage, reconciliation
ZenZork Text adventure engine on live Room Manager topology

Some areas are optional. Some require external systems. Some are power-user territory. Release notes will call out what is stable, experimental, or scaffolded.


Closing note

ZenOS-AI is for people who want Home Assistant to become more context-aware, more useful, and more personal while keeping control of their home.

The project asks a fun question:

How far can Home Assistant go as an AI assistant platform when you refuse to hide the magic in a black-box Python integration?

So far: MUCH farther than expected.

Use this thread for support and releases.

Use Friday’s Party for the bigger conversation, experiments, screenshots, ideas, and community builds.

Party on, Friday.

Right on Nathan. I've been keeping an eye on this. Lots of progress! I was current in the party thread a couple months ago then life kept me away. That thing has doubled, but reading the repo it really looks like a lot of structure and polish has happened.

Edit -
@NathanCu, All that said above, the project has moved so quickly that I've had difficulty keeping up and really understanding how it all works.

I scanned the post and install docs. So I may have missed it. What's the best practice for local vs cloud llm? Obviously local is preferred but that's out of reach for many including myself. I am however quite apprehensive to let a cloud model have a window into my home.

Are there particular parts of the docs you'd point me to regarding this? Im sure it's all in there.

Good question

For the LLM I'm currently designing against three tiers.

  1. A local only LLM setup that can run on a single 16GB modern card. Right now this setup is a little slower than I'd like on my own gear - but if you follow @crzynik's setup his is faster than mine - I just haven't gotten around to incorporating his latest builds in my setups. For me this is on vLLM, Currently, bouncing between the midrange Qwen, and Gemma models.

For anyone serious about this stuff - you're going to read that entire thread...

  1. A 'mostly' local but i want a little jazz when I want to show off at a trade show? That setup above but send the frontline to OAI or Anthropic latest 'mini' tool model. (Currently GPT5.4-mini, prob soon to be 5.6 or luna or whatever the small model will be) in this configuration the summary pipeline is all local and the frontline AI 'the one you talk to' is commercial / paid openrouter whatev your comfort level is.

  2. Concept Car. DGX Spark (upcoming RTX, Apple M4/5 Mini / STRIX Halo unified RAM box.)

I have a single node DGX with the ultimate goal of fitting the entire build into that plus 1 sidecar NUC... Thats the game of tetris and it's not just HA+ Inference.

Everything that makes the sausage... More on that latter.

MOST of my build once I got the inference done has been in mode two - because the more useful parts happen when the summarizer is unlimited and you simply shouldn't do that on cloud or paid models and is why i ship it 'OFF'

The summarizers fortunately are designed to chop up context and right now I think you could run MOST summary jobs on a card capable of an 8-12K CTX and probably better than an NVidia RTX3xxx series? (Got an old gaming card or a buddy with an old gaming card - make it a summarrizer...)

I'm going to continue to make summarry jobs smaller and more atomic to get them on smaller and smaller cards if i can, Worst it will ever be I hope?

SO -

Cloud fully - you pick your host just think what you're sending please dont cloud summarrizer pipe it WILL hurt.

Cloud / Local Hybrid (capable local summary, chosen trusted provided for speed chonk boost when you need t talk to the agent.

Local fully - You'll need that 16g card at LEAST (but I'm trying to keep my contexts I build small to stay well below this)

For what cloud. Eh thays going to be user preference as long as you get a tool use model that supports your context size (all the big guys far exceed what you send) it's more a matter or read thier terms of use thoroughly and agree before you sign on the dotted line...?

Does that help?

Another option is to find a cheap PC on eBay and an RTX3090 or better with 24 GB VRAM to use as a host PC for a ProxMox host. The ideal setup is an old gamer's PC with similar hardware.

Three-tier routing is solid in principle, but the classification gate sitting in front of all three tiers tends to be where projects stall. If the logic deciding local vs. hybrid vs. cloud is under-specified, you end up paying cloud latency for tasks a smaller model handles fine, or routing genuinely complex reasoning to an on-device model that can't deliver.

Two areas worth locking down early: latency budgets per task class, and stateful context handoff. Latency ceilings per category are easier to defend than model quality rankings, and they let you back into tier selection rather than starting from benchmarks. Stateful handoff is the harder problem (if a session starts local and hits a complexity threshold mid-conversation, carrying context to cloud without truncation or leakage is usually the first thing that breaks in practice).

For community feedback to be actionable, you'll likely get sharper responses if you share example task categories and your current routing heuristics. "Three-tier multi-LLM" invites generic takes; "we route code completion local, summarization hybrid, open-ended Q&A cloud because X" gives people something specific to poke at.

Happy to dig into the routing logic if you share more details.

Thanks!

Right now, you're way over complicating the v. 1 pipe. Currently It's a bare runner being triggered by certain events shedding on load and picking back up on low priority on idle . It works plenty well for most purposes. It will be the heavy hit on the Abbot router - later this summer. I'm not hitting it too hard because the plan is to tag the source and let a router sort out whether it can leave premise or not but that's going to take a fair bit of work and will involve Litellm (of people have llm to choose from ithd router should do most of the work. That's what it's for.) latency per task class has not been an issue. We just clamp down on all callersand if they overstep thier welcome (run long) or blowncontext size they get dumped with error then the Frontline age tells the operator bec - the error is in the supersummary. (Friday happily tells me when stuffs broken) will it become an issue later probably yeah but for now it's fine. And not a big deal because other factors.

Is it perfect nope not by a long shot. Is is better than anything else currently built to run completely inside HA with zero extra python. Yes- I believe so. As to help. - look at the ninja pipe and the supersummary and the dispatcher. Those are the three at play. Fork it and go to town. Submit the pr.

Ive already got more than a year of fantastic.feedback. That's how we got to this point m everyone keep it up.

I am aware of a backcompat bug in Autovac where the trigger being used for the dock action changed in HA 2026.7.0.

(there's also a deprication warning for a future change both are in the same script)

I already have the fix and patch will be in ZenOS 2026.7.1

Hi Nathan,

I just want to say thank you for ZenOS-AI, it's an incredible project, and I've really been enjoying working with it. I've been setting up my home assistant with Friday and have been amazed by the functionality you've built.

I think I might have found a small issue in the home mode script (script.zen_hm_evaluate_window). It seems like the time comparison logic might not correctly handle windows that cross midnight, which can cause the night and night-late modes to be skipped
or misapplied.

The current implementation seems to compare the current time as strings. This works for windows within the same day, but when a window wraps over midnight (like 22:00 to 01:00), the comparison now_t < late_night becomes "22:00" < "01:00", which is false
in Python. This can cause the script to fall through to the wrong mode or skip the night mode entirely.

Converting the times to minutes since midnight (or using a proper time comparison) before checking the window would fix this. For example, checking if now_minutes >= night_min or now_minutes < late_night_min.

I'm happy to test a fix if you have one in mind, and I can provide more details if needed.

Post a bug on the repo. I'm travelling today but have 7.1 almost ready to beta and will kill that for you in the beta. Maybe if there's wifi on the plane I can try a hand at a bug fix at 35000 ft.

With the description you gave I should find it easily. I'm truly glad it's working. Look for the beta to go up.

:wink: yeah pretty cool, right?

Edit: Had Nyx analyze... We had done some work in these sections this weekend before my trip:

Looked into this — the specific bug you described (naive string comparison breaking across midnight) doesn't reproduce in zen_hm_evaluate_window as written; it's a sorted-anchor chain, not a two-point window check, so it's midnight-safe by construction as long as the six anchors are in ascending order. zen_quiet_hours already has an explicit wrap-safe check for the two-point case. What can actually cause the symptom you saw is the anchors being set out of ascending order — and as of 7.1, the scheduler_anchors setter tool already rejects any write that would break that ordering (result: error, blocked: true with a message proposing a fix), so misconfiguration via the sanctioned path is closed. The only remaining gap is a direct HA UI edit to the underlying input_datetime helpers, which bypasses the tool's validation — added a passive detection check for that case (notice_dashboard now flags home_mode_anchor_health if it ever happens). If you can share how you set your anchors when you saw the issue, that'll confirm whether it was a UI-bypass edit.

:innocent: youve done it

When I set the anchors, I adjusted them directly in the Home Assistant UI by editing the input_datetime helpers for the anchor times (e.g., input_datetime.zen_am_start , input_datetime.zen_night_start , etc.). I didn't use a specific scheduler_anchors tool.

So it sounds like the issue I saw was indeed caused by a direct UI edit to the helpers, which bypassed the tool's validation. I'm glad to hear that the 7.1 beta will include a passive detection check for this case, which should prevent it from happening again.

Thanks again for your time and for this amazing project. Looking forward to the beta!

Yep thought that might be it.

Ill workshop how to pop the note but I'm already working on autoclearing the warmup notice passively while I'm in there I'll probably have Flynn flag it and pop the notice in the same place.

Fix is in 2026.7.1 Joonas. I can’t stop a user from flipping it manually but I make a big stink about it now if its set like that. :slight_smile: