HomeKit - A room sync solution

I have a (pretty clunky) solution to keeping HomeKit accessories organised:

It’s a macOS app, and a script:

The main functionality works like so…

  1. Fetch at all of your accessories in HomeKit
  2. For the accessories that are from Home Assistant:
    a. Look up the Room/Area
    b. Note when Home Assistant and HomeKit rooms conflict
  3. Saves a plan that resolves the accessory room conflicts by selecting the room from Home Assistant

Example:

$ scripts/manage_homekit_rooms.py

Wrote plan CSV: artifacts/homekit-plan-20260312-223133.csv
Accessories scanned: 201
Planned moves: 8
Dry run only. Re-run with --apply to move accessories.

...

$ ./manage_homekit_rooms.py --apply-plan artifacts/homekit-plan-20260312-223133.csv
Loaded plan CSV: artifacts/homekit-plan-20260312-223133.csv
Rows in plan: 99
Planned moves: 8
Moves applied: 8
Wrote snapshot CSV: artifacts/homekit-snapshot-20260312-223725.csv

Some other features:

  • Edit the CSV before applying (might be handy for bulk changes)
  • Save and restore snapshots (e.g. don’t check Home Assistant)

I notice another project for managing HomeKit:

This is much simpler than having to build and run your own macOS app - it uses Shortcuts and AppleScript. I’ll investigate swapping that out.

Oh, and yes, it’s all vibe coded. I don’t know Swift.