For Home Assistant homes — free, no account, pure YAML
A local-first smart home already knows the day's story — who was present, when the door opened, whether the stove went off, whether the morning check-in happened. That story should never leave the house. But a fingerprint of it can: one SHA-256 per home per day, computed by Home Assistant itself, anchored to a public registry that is countersigned into Bitcoin daily. If anyone ever disputes what your home recorded — an insurer, an agency, a family member — you can prove the record existed, unchanged, on the day it was made. Without ever having uploaded it.
Home Assistant computes the SHA-256 locally with its built-in template function. The content never leaves the house — the registry only ever sees 64 hex characters, which contain no data and cannot be reversed.
Not per event — the day's summary is rolled into a single daily fingerprint, the same pattern this registry itself uses for its Bitcoin countersign. Quiet, cheap, and enough: any later edit to any part of the day breaks the hash.
Sensor summaries are predictable text, and predictable text can be guessed from its hash. A long random salt that never leaves your config makes the fingerprint meaningless to anyone but you.
# configuration.yaml — Home Assistant 2022.4+ (built-in sha256; no custom components) notify: - platform: file name: home_receipt_log filename: /config/home_receipts.log # YOUR copy of each day's summary — keep it rest_command: hashcare_anchor: url: "https://uhizqukdctkvluluheux.supabase.co/rest/v1/anchored_artifacts" method: post content_type: "application/json" headers: apikey: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InVoaXpxdWtkY3Rrdmx1bHVoZXV4Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzM4NzQ1ODQsImV4cCI6MjA4OTQ1MDU4NH0._AxT5pBEi1GZ167JPJpHeg_k1E0Bbtzyj3UPKdTFEug" authorization: "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InVoaXpxdWtkY3Rrdmx1bHVoZXV4Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzM4NzQ1ODQsImV4cCI6MjA4OTQ1MDU4NH0._AxT5pBEi1GZ167JPJpHeg_k1E0Bbtzyj3UPKdTFEug" payload: '{"hash": "{{ hash }}"}' # hash only — no label = fully private anchor automation: - alias: "Daily home receipt" triggers: - trigger: time at: "23:55:00" actions: - variables: # CHANGE THIS: a long random string, yours only, never shared salt: "REPLACE-WITH-YOUR-OWN-LONG-RANDOM-SALT" # CHANGE THIS: the entities that tell your home's day summary: >- {{ now().date() }} | presence: {{ states('person.resident') }} | front_door_last: {{ states('sensor.front_door_last_opened') }} | stove: {{ states('binary_sensor.stove_on') }} | checkin: {{ states('input_boolean.morning_checkin') }} - action: notify.home_receipt_log # keep YOUR copy, locally data: message: "{{ summary }}" - action: rest_command.hashcare_anchor # send ONLY the fingerprint data: hash: "{{ sha256(salt ~ summary) }}"
To verify later: take the day's line from home_receipts.log, prepend your salt, SHA-256 it (Home Assistant's template editor, or any tool), and paste the result at /verify — it will show the anchor date and its Bitcoin countersign.
Local-first homes chose privacy over cloud logs. This adds the one thing cloud logs had that local didn't: third-party-provable timestamps — without giving up an inch of the privacy.
When home care is questioned later — by a long-term-care insurer, an agency, or family — a daily receipt chain proves the record of visits, check-ins, and quiet nights wasn't written after the fact.
This is the identical receipt design we propose for Medicare's per-use AI billing: hash locally, anchor the fingerprint, let anyone verify without trusting the operator. Homes and hospitals, one rail.