For Home Assistant homes — free, no account, pure YAML

Your home's data stays home.
Its proof doesn't have to.

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.

The design — three rules that keep it honest

1 · Hash at home

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.

2 · One receipt per day

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.

3 · Salt with a home secret

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.

The config — copy, adapt, done

  1. Add the anchor command and a local log so you always keep the original text (a receipt is only useful if you keep what it fingerprints).
  2. Add the daily automation — edit the summary template to the entities that tell your home's story.
  3. Verify any day forever at hashcare.com/verify — recompute the hash from your kept log line and paste it.
# 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.

What people use it for

The sovereign home's paper trail

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.

Care at home, dispute-proofed

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.

The same pattern, everywhere

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.

What a receipt proves — and doesn't. A hash proves the record existed, unchanged, on the anchored day. It does not prove the events physically happened — a sensor can be wrong and a summary can be written creatively; for care, two-party confirmation stays the truth layer, and the receipt is the tamper-evidence layer. Keep your local log and your salt: only they can reproduce the fingerprint, and losing them makes the receipt unverifiable. Anchoring is free and needs no account; anchors are public, unlabeled by default, and the registry root is countersigned into Bitcoin daily so your proof outlives us. Home Assistant is an Open Home Foundation project; we're unaffiliated admirers of the local-first principle this page depends on.