I run one system, and everything here orbits it.
Arsenal is an in-production Home Assistant configuration for a family home — heating, domestic hot water, air conditioning, ventilation, irrigation, energy, security, presence, measurement, dashboards and infrastructure observability. It is built contract-first: every domain has a written contract before it has code, a single decision authority per domain, and CI that refuses what contradicts the contract. The documentation is written in French; the repository README is an English entry point.
The rest of this account is what that system needs in order to run.
A system that changes every day needs a record of what it was yesterday. Two pieces run on my NAS and are part of the daily routine, not accessories:
- ha-state-archive — structured archival of the configuration: state versioning, automated auditing, integrity checks.
- ha-archive-search — the search engine over those archives, on the infrastructure side. When a domain behaves oddly, this is where the answer usually is.
| Repository | What it does |
|---|---|
| rainbird-esp32-elegoo | The firmware in service on my irrigation bridge: an ELEGOO ESP32 WROOM-32 board linking Rain Bird battery-powered BLE controllers to MQTT, with OTA updates. Derived from rainbird-esp32, which is the upstream fork it grew out of. |
| ha-termux-tools | Inspecting and grepping the configuration from Android, via Termux. |
These four forks are not scratch copies: Arsenal runs on them. They are pinned, patched and kept in working order, and fixes go upstream where upstream can take them.
| Fork | Upstream | Why it is forked |
|---|---|---|
| ha_airstage | danielkaldheim | Fujitsu air conditioning. Served from a stable branch, pinned to pyairstage 2.4.x. |
| hassio-bluetti-bt · bluetti-bt-lib | Patrick762 | Bluetti power stations. Served from a stable branch. |
| ha-linky | bokub | Linky smart meter. Carries a fix branch anticipating a recorder statistics change. |
| atmofrance | sebcaps | Air quality for French cities. |
audi_connect_ha — I contribute to the integration itself rather than run my own version of it: my fork exists to carry fix/* branches (transient 403/502 handling, auth guards, FR translation) toward upstream, and my installation stays on the official release.
A handful of small repositories date from before Arsenal was public: single patterns pulled out of the running system — a heating decision engine, a notification architecture, self-parametrized template sensors, an automation ID generator. They are left online because they still answer questions people ask, but they are early work and stand on their own only modestly.
rallye-trip-meter-android — a native Android/Kotlin rally trip meter: GPS distance, stage and total distance, manual calibration. Unrelated to the rest, and the only thing here that is.
Bordeaux, France.



