If you own a Curb Energy Monitor, you already know: the Curb cloud service has been shut down. No more web interface. No more app. No more data. A device with 18 current transformers, a precision ADE7816 power metering chip, and a capable NXP i.MX28 processor running Linux — reduced to a silent box on your breaker panel.
It doesn't have to end this way.
Save your hardwareThe Curb is genuinely good hardware. The processor is fast, the Linux environment is fully accessible over SSH, and the LuaJIT runtime that the original firmware uses is still right there on the device. The cloud going away doesn't change any of that.
Curb Local picks up where the original firmware left off. It runs entirely on the device — no cloud, no external server, no Raspberry Pi bridge. Just your Curb, your local network, and your MQTT broker.
What you get
Live dashboard — watts, amps, voltage and power factor per circuit, updated every second.
Energy statistics accumulated directly on the device — daily kWh, hourly bar charts, up to a year of history, all without a browser open.
Calibration — fine-tune each of the 18 CTs against a reference meter from the browser.
Settings — configure MQTT broker, credentials and device name from the browser, no SSH needed.
System info — uptime, storage, memory, CPU load, network interfaces, powerline link quality.
Home Assistant auto-discovery — 72 retained MQTT discovery messages on startup, all 18 circuits appear automatically under Settings → Devices & Services.
How it worksThe original firmware runs a health monitor (hm) that manages a set of Lua processes. sampler.lua reads the ADE7816 chip and pushes measurements to an IPC message queue every second. That queue is the key.
Curb Local adds two LuaJIT scripts that tap into it:
mqtt-streamer.lua — reads the queue, accumulates kWh statistics, publishes to MQTT, and writes JSON for the web interface.
api-server.lua — a lightweight REST API (port 8080) for calibration and settings.
lighttpd is already running on the device and serves the HTML pages. Installation is a single shell script: it SSHs in, deploys the files, and patches two config entries.
Credits — this would not exist without codearrangerThe biggest obstacle to any Curb hack is that the internal IPC protocol between sampler.lua and the rest of the firmware is completely undocumented. codearranger/curbed cracked it: reverse-engineered the message queue format, the sampler data layout, the binary framing, and the LuaJIT runtime environment on the device. That repository is the foundation everything here is built on. If you find Curb Local useful, go star that repo too — it deserves the recognition.
https://github.com/codearranger/curbed
Bonus: J6 serial portThe Curb has a 6-pin debug header (J6) on the main PCB — 2.54 mm pitch, 3.3 V logic. Connect a CP2102, CH340 or FTDI adapter (TX→RX, RX→TX) and you get a full Linux serial console at 115200 baud. Useful for reading boot logs, debugging Lua scripts, or accessing the device if you lose network access.
Pin 1 — GNDPin 2 — TX (Curb → adapter)Pin 3 — RX (adapter → Curb)Pin 4–6 — NC
The Curb contains a Qualcomm QCA7000 HomePlug AV chipset — a full powerline ethernet bridge built into the device. Plug any compatible HomePlug AV adapter into the same electrical circuit and you get wired LAN access to the Curb without running new cables. The System page shows the connected node MAC address and TX/RX signal quality in dB.
Source code and installation



Comments