Apache-2.0 · Self-hosted · Community maintained

Your home energy, coordinated in the open.

FTW is a local-first home energy management system for solar, batteries, grid and EV charging. Run it on your own hardware, inspect every decision and teach it new devices in Lua.

Runtime
Go + Lua
Runs on
Pi + Linux
Control
Local-first
Support
Community

Get running

Start with the software, not a sales call.

$ curl -fsSL https://raw.githubusercontent.com/srcfl/ftw/master/scripts/install.sh | bash

Architecture

One local system across mixed hardware.

Vendor apps optimize one device at a time. FTW treats the whole site as one energy system and keeps the fast control path on your Raspberry Pi or Linux host.

Site convention Above the driver boundary, positive power means energy flowing into the site. Every device speaks the same language.

Read the architecture

Inside FTW

A serious energy runtime, in a repository you can inspect.

01 / CONTROL

Real-time site coordination

Keep the grid meter near target while solar, storage and charging respond as one system.

PI · slew · dispatch
02 / PLAN

Price-aware planning

Plan around spot prices, weather, household load, PV production and battery state.

MPC · 48 h horizon
03 / LEARN

Models that learn your site

Local PV, load, price and battery models adapt to the home instead of assuming every site is alike.

RLS · ARX · twins
04 / PROTECT

Failure-aware by design

Watchdogs, fuse limits and stale-meter protection return hardware to safe autonomous modes.

fallbacks · clamps
05 / STORE

Keep the history

SQLite telemetry and compressed Parquet rolloff keep detailed energy data under operator control.

SQLite · Parquet
06 / CONNECT

Open integrations

Use the HTTP API, Home Assistant MQTT discovery and Lua drivers to connect the rest of your home.

HTTP · MQTT · Lua

Build with it

New hardware should be a driver, not a fork.

FTW drivers are plain Lua files with capability-scoped access to Modbus, MQTT, HTTP, WebSocket and TCP. Edit a driver on the Pi and reload it without rebuilding the Go runtime.

  • Start from an existing inverter, meter or charger driver
  • Test with simulators and the same public host API
  • Contribute the integration back through a pull request
drivers/my_inverter.luaLua
function driver_init(config)
  host.set_make("My Inverter")
  host.mqtt_subscribe(config.topic)
end

function driver_poll()
  local watts = read_power()
  host.emit("battery", {
    power_w = watts,
    soc = read_soc()
  })
  return 1000
end

The community edition

Free software, shared stewardship.

Run FTW at home, study it, modify it and use it commercially under Apache-2.0. Development happens in public and Sourceful Energy maintains the core together with project contributors.

Apache-2.0Public roadmapCommunity PRs
Community support

You operate what you run.

FTW Community comes without official support, warranty, response times or service-level commitments. Help is best-effort from other users and maintainers.

Contribute

Make the shared system better.

Add a device, reproduce a hardware edge case, improve the planner or sharpen the docs. Open an issue before a large change, then build in public.

For organizations

Open code. Commercial accountability.

Apache-2.0 already gives you permission to use the Community code. A Sourceful engagement buys delivery ownership, additional capabilities and an accountable support relationship.

Talk to Sourceful
01

Supported deploymentsArchitecture, commissioning, upgrades and operational handover.

02

Integrations + OEMCustom hardware, certification, white-label and product delivery.

03

Fleet operationsProvisioning, observability and managed multi-site boundaries.

04

Long-term supportDefined maintenance, security handling, response times and SLA.

FTW Community

Energy infrastructure you can own.

Install it. Read it. Break it safely. Send the fix upstream.