Clean Assistant — a fully local (no-cloud) Home Assistant add-on for the Cecotec Conga 8090 Ultra

Hi everyone,

I wanted to share a project I’ve been building: Clean Assistant, a Home Assistant
add-on that controls the Cecotec Conga 8090 Ultra robot vacuum completely locally —
no cloud
.

The Conga 8000 series isn’t supported by Valetudo/Congatudo because it uses
TLS + WebSocket + JSON + Protobuf instead of the older protocol. So I reverse-engineered
it and built a self-hosted server the robot talks to as if it were Cecotec’s cloud.

The headline: it’s 100% local

Clean Assistant impersonates all the services the robot looks for online (you point
them at your Home Assistant IP with a DNS rewrite): control, the OTA/firmware-check
endpoint, and the cleaning-report upload. That means:

  • Your robot keeps working even if Cecotec shuts down their servers.
  • Automatic firmware updates are off by default — no surprise updates.
  • On a fresh install it even learns the robot’s identity from the robot itself, so you
    don’t need the cloud at all — not even the first time.

What it does

  • :world_map: Live map (rooms + robot position) with zoom/pan and touch support
  • :broom: Start / pause / dock / locate, per-room cleaning, suction/water/mop, cleaning modes,
    dustbin auto-empty frequency, consumables tracking
  • :door: Room names, room type & floor type, merge/split rooms, m² per room
  • :prohibited: No-go / no-mop / double-pass zones drawn on the map
  • :alarm_clock: Visual schedules (per room), synced with the robot, firing at the correct time
  • :house: Multiple house maps: create / switch / rename / delete (fixes the “duplicate maps” mess)
  • :bar_chart: Cleaning history — also fed by the robot’s own uploaded reports, still no cloud
  • :locked_with_key: Backup/restore of your config and the robot’s identity (“recovery key”)
  • :mobile_phone: Home Assistant MQTT entities via auto-discovery (vacuum, battery, per-room buttons,
    power/water/mop selectors, schedules, low-water sensor…)

How it works

The robot resolves a handful of hardcoded Cecotec hostnames. You redirect them to your
Home Assistant IP with a DNS rewrite (AdGuard Home, Pi-hole, or your router) and restart
the robot. The add-on’s first-run wizard shows you exactly which domains to point where,
with your HA IP already filled in and a live “is the robot connected yet?” indicator.

Install

It’s a Home Assistant App repository (Apps were called “Add-ons” before HA 2026.2).

One click: Add this repository to your Home Assistant »

Or manually: Settings → Apps → App Store → ⋮ (top right) → Repositories, paste
https://github.com/miguelsg29/clean-assistant, then install Clean Assistant.

Then redirect the DNS, restart the robot, and open it from the sidebar.
Full instructions & source: GitHub - miguelsg29/clean-assistant: App local (sin nube) para el Cecotec Conga 8090 Ultra: mapa en vivo, limpieza por habitaciones, zonas, horarios y Home Assistant. Estilo Valetudo. · GitHub

It’s tested end-to-end on my own Conga 8090 Ultra. If you have another Conga 8000-series
model, or run into anything, I’d love your feedback — happy to help get more models working.

Thanks!

Suggestion:
Add-ons have been renamed to Apps about a year ago now.

Add-ons no longer exist and building new Apps and using the words and links to the old way in the readme is very confusing for users wanting to try your stuff…

Please consider a wording revision.
A simpler approach may be to use the Create a link – My Home Assistant facility…

For instance, this install sequence doesn’t work:

Proofreading and testing the actual instructions that you copied from other sources to make sure things are right is a good best practice to follow. So is this: AI Policy | Home Assistant Developer Docs

Thanks a lot @Sir_Goodenough — you're right on both counts. I've updated the README
and the post to the new "Apps" wording (HA 2026.2) and switched the install to a
one-click **My Home Assistant** "Add repository" link, with the manual steps
(Settings → Apps → App Store → ⋮ → Repositories) as a fallback. Appreciate the
proofreading nudge!