Appliances
Most appliances you actually maintain — a "dumb" fridge, furnace, or water heater — aren't Home Assistant devices, so there's nowhere to hang their maintenance tasks or record their warranty. Home Keeper fills that gap with appliances, managed from the Appliances tab in the panel. Two ways to use it:
- New appliance — Home Keeper registers a real virtual device for it, so multiple tasks share one device page and other integrations can attach to it too.
- Existing device — point Home Keeper at a device another integration already provides and enrich it with the same metadata, without owning it. Picking a device prefills manufacturer/model/serial number from its own registry entry when it has them (handy since not every integration reports those), and you can fill in or correct whatever it's missing.
Either way you record asset metadata. A few structured fields wire into Home
Assistant — manufacturer/model, an mdi icon, a manual link, replacement cost — and
beyond that you add free-form custom fields, each a label with a value typed as
text, link, or date (seeded with common ones like serial number, warranty
expiry, purchase/install dates). Tick track on a date and it becomes a real date
sensor on the device page, so it's automatable natively (e.g. "warranty expiring
in 30 days → notify me"). Untracked dates stay display-only.
Tapping an appliance opens a detail page gathering its metadata, parts, related tasks, subdevices, and full maintenance history (including retained history of tasks deleted while still assigned to it). The tab also has an Export inventory button that downloads a CSV home inventory — make/model, replacement cost, value of spares on hand (with a grand total), and a Details column flattening each appliance's custom fields. It's the grab-and-go record you want for an insurance claim.

Parts & wear items
Each appliance has a structured parts list — name, part number, vendor, cost, and a type of consumable (a stocked spare) or wear item. Give a wear item a replacement interval and Home Keeper automatically creates a maintenance task for it, attached to the appliance's device — so it shows up in your to-do list and calendar, gets a mark-done button and next-due sensor, and stamps the part's last replaced date when completed. You can also backdate when a wear item was last replaced so the schedule starts from the real date.
A part can also carry a product URL — a link to where you buy it (e.g. an Amazon listing). When set, the part's name in the appliance detail page becomes a clickable link that opens the product page in a new tab, so reordering is one click away. A maintenance task linked to that part (whether an auto-generated wear-item task or a manually-linked consumable) shows the same clickable link — in the task's detail page and on the dashboard card — so you can jump straight from "time to replace this" to buying the replacement.
Each part can also carry a single attached file — a receipt, spec sheet, or photo — uploaded from the part's editor the same secure way appliance documents are (see below), and opened or removed from the same card.
Any part can also track spare inventory — a stock count and a reorder-at
threshold. Completing a wear-item replacement consumes one spare, and when stock drops
to (or below) the threshold Home Keeper fires a home_keeper_part_low_stock event you
can automate on (add to a shopping list, notify, reorder). A consumable part isn't
limited to its own wear cadence: you can link any task to it
— including a sensor-driven one — so completing that task draws down the same stock.
Auto-create a buy task when a part runs low
If you'd rather have a built-in shopping reminder than wire up your own automation, turn on Auto-create buy task on a stock-tracked part (the option appears once the part has a reorder-at threshold). Whenever the part's stock drops to (or below) the threshold, Home Keeper adds a one-off "Buy {part}" task — on the appliance's device page, in your to-do list, and in the panel — so "go buy more" lands in the same place as the rest of your maintenance. The reminder is system-managed: it disappears on its own once the part is restocked above the threshold (or you switch the option off), and there's only ever one per low spell (completing it won't spawn another while you're still low).
Completing the buy task restocks the part by its Restock quantity (how many spares you buy each time, default 1) — which normally lifts stock back above the threshold and clears the reminder in the same step. So the whole loop — low → buy → restocked — closes with a single tap and no automation to write. (Set the restock quantity high enough to clear the threshold; if it isn't, the completed reminder stays put until you actually restock.)

Offline manuals & documents
Every appliance keeps a list of documents — manuals, warranties, receipts. Each is either an external link (a URL) or an uploaded file (a PDF or image) stored locally on your Home Assistant instance, so the manual is still there when the manufacturer's website isn't (or has moved on to the next model). Open the appliance's Manuals & documents editor to paste a link or Upload file; uploaded files are written under your config directory and served back through an authenticated endpoint, opened via a short-lived signed URL. Removing a document (or deleting the appliance) deletes the stored file too.
Each existing document shows as a card with its name and details — a link's URL, or an uploaded file's filename, size and type — and Open, Edit and Remove actions right there in the editor. Open previews the document in a new tab; Edit renames a document (and, for a link, changes its URL — uploaded files are rename-only, since the stored file itself is immutable). You can add link documents while first creating an appliance; uploading a file waits until the appliance is saved (the file is keyed to it).
Every data action is also a service — home_keeper.add_asset_document,
home_keeper.update_asset_document and home_keeper.remove_asset_document (links; files
upload from the panel) — so automations can attach, rename or detach a receipt or manual
link too.

Large uploads (413)
Home Keeper accepts uploads up to 25 MB. If an upload fails with HTTP 413 —
especially the panel showing "Upload too large…" — the file was almost certainly
rejected by a reverse proxy in front of Home Assistant, before it ever reached the
integration. The usual cause is the proxy's request-body limit (nginx defaults
client_max_body_size to just 1 MB). Raise it above your largest manual:
- nginx (manual config): add
client_max_body_size 30M;to theserver(orlocation /) block, thennginx -t && nginx -s reload. - Nginx Proxy Manager: Proxy Host → Advanced → Custom Nginx Configuration →
add
client_max_body_size 30M;→ Save. - "NGINX Home Assistant SSL proxy" add-on: create
/share/nginx_proxy_default.confcontainingclient_max_body_size 30M;, setcustomize.active: truein the add-on options, and restart the add-on. - Caddy:
request_body { max_size 30MB }. Traefik: abufferingmiddleware withmaxRequestBodyBytes. - Nabu Casa / HA Cloud Remote UI has its own limit — if you hit it, upload from your local network instead.
A quick way to confirm it's the proxy: upload once via the direct LAN URL
(http://<ha-ip>:8123), bypassing the proxy — it'll succeed there.
Relationships: subdevices & related devices
Real things nest. An appliance can be a subdevice of another appliance (wired
through HA's native via_device hierarchy, so it nests under its parent on the device
page). You can also tag arbitrary related devices — including ones from other
integrations HA won't let us reparent — which show up alongside the appliance.
Example. Add the Garage water heater as a new appliance with its warranty expiry and an Anode rod wear item set to "replace every 12 months." The water heater now has its own device page with a warranty-expiry sensor, plus an automatic "Replace Anode rod" to-do that's due 12 months after each completion.