Method · published, checkable
How the verdict gets made, step by step.
The verdict comes from a short list of sourced facts and a table anyone can read. No judgement calls in between, so the arithmetic can be checked, and the table can be argued with.
01 – 07
Seven questions about the box, as sold.
The criteria describe the device as it comes out of the packaging. A device that needs rooting, soldering or reflashing to behave isn’t counted as behaving. What a flash gets you is recorded and shown separately.
- 01Works with the internet cutDoes the main function survive with the WAN cable pulled?
- 02No vendor account neededCan it be set up without creating an account with the manufacturer?
- 03Documented local APIIs there a publicly documented local protocol: HTTP, MQTT, ONVIF, RTSP, Zigbee, Z-Wave, Matter, Modbus?
- 04Can be firewalled off for goodCan it be cut off from the internet permanently without anything breaking?
- 05Firmware updates without the cloudCan it be updated by hand, with no forced auto-update?
- 06Runs alternative firmwareCan it run ESPHome, Tasmota, OpenBeken, Valetudo or OpenIPC?
- 07Home Assistant talks to it locallyIs the Home Assistant integration local_push or local_polling?
Each one gets a yes, a no, or a “not checked”. A yes or a no needs a source, a date and a confidence level, and the schema enforces that in continuous integration. That goes for a no as much as for a yes.
08
One question about the company.
Has this vendor ever taken local control away from devices people already owned? The question is about the company, so the answer lives on the brand and shows up as a warning next to every verdict for that brand. The verdict itself comes only from the seven questions about the box.
No spec sheet answers this one, so reports from owners matter more here than anywhere else on the site. Know of a vendor that pulled it? Say so.
The decision table.
Two shorthand groups, then five rows. If any criterion the table needs is “not checked”, the verdict is “not checked” too, with no rounding up.
Works with the internet cut and documented local API and can be firewalled off for good.
No vendor account needed and firmware updates without the cloud.
| Verdict | Condition | What it means |
|---|---|---|
| Unverified | Any criterion the table needs is unknown | Not checked enough to say yet. What is known is shown, with sources. |
| Fully local | CORE and STRICT | Nothing phones home. No account, no server, nobody who can switch it off. |
| Local, cloud optional | CORE, but not STRICT | Does its job on your network, but still phones home for something. Usually an account. |
| Local after flashing | Not CORE, but a flashing route exists | Phones home as sold. New firmware stops that, warranty not included. |
| Cloud required | Not CORE, and not flashable | Phones home for everything, and there’s no known firmware that stops it. |
The same table, as code, lives in the dataset at scripts/tier.mjs, with tests. The site never reimplements it.
On purpose
Two things that don’t move the verdict.
Whether Home Assistant talks to it locally. That comes from Home Assistant’s own classification, which describes how Home Assistant reaches the device. A device can pass that test and still need its vendor for setup, so it’s shown on the page and left out of the table.
The vendor’s track record. It’s shown as a warning, and that’s all. A robot that runs offline today runs offline whoever made it, so the record doesn’t touch its verdict.
Rules
The house rules.
- Every yes or no carries a source, a date and a confidence level, negatives included.
- “Not checked” is a real answer. Gaps are counted and shown on the page.
- Same box, different chip is a different entry. Entries are keyed by brand, model and hardware revision, and each criterion records the firmware it was checked on.
- Anything not re-checked in 18 months gets flagged on its page.
- Guides are linked. Valetudo, OpenIPC, ESPHome and Tasmota keep better guides than anyone could copy, so writing happens only where no good guide exists.
- Money never touches a verdict. Affiliate links, when there are any, aren’t an input to the table. There’s no field for them.
Behind it
Open data, one byline.
Written by benln. The whole dataset is public and openly licensed. If a verdict is wrong, prove it, change it, and it ships with the next build.