MCPcopy
hub / github.com/codykociemba/NoLongerEvil-Thermostat

github.com/codykociemba/NoLongerEvil-Thermostat @v1.0.1 sqlite

repository ↗ · DeepWiki ↗ · release v1.0.1 ↗
87 symbols 188 edges 29 files 14 documented · 16%
README

Nest Thermostat Firmware Setup

Buy Me A Coffee Discord Release

FULU Bounties Winner

🏆 FULU Bounty Winner 🏆

Hack House and this project are the official winners of the FULU Bounty for Nest Learning Thermostat Gen 1/2

Hardware Alternative: If you're interested in the hardware side of things, check out https://sett.homes for a drop-in PCB replacement option.


Installation

Option 1: GUI Installer - Recommended

📖 Follow the installation guide at docs.nolongerevil.com or download the latest release directly.

The installer handles everything — flashing the firmware and walking you through setup. During setup, choose your hosting mode: - Cloud-hosted — connects to the No Longer Evil platform; no server setup required - Self-hosted (Home Assistant) — auto-discovers your Home Assistant instance and connects to the No Longer Evil add-on - Self-hosted (NLE Server) — connects to a standalone No Longer Evil server at a custom IP and port

Self-hosting? You'll need to set up your server infrastructure separately before running the installer. See the Self-Hosted Guide.

Option 2: Build from Source

If you'd rather build and run the installer yourself instead of downloading a release:


Prerequisites

  • Node.js 18+ and npm
  • Docker — only needed if rebuilding firmware from source (Install Docker)
  • macOS/Linux — Windows is not supported for building or flashing

1. Clone the Repository

git clone https://github.com/codykociemba/NoLongerEvil-Thermostat.git
cd NoLongerEvil-Thermostat

2. Build the Firmware (optional)

The repo already includes pre-built firmware files in firmware/installer/resources/firmware/. This step is only needed if you want to customize the firmware (e.g. a different server URL).

cd firmware/builder
./docker-build.sh --generation both --enable-root-access --yes

This builds for both Nest Gen 1 and Gen 2 inside Docker. Afterwards, copy the output to the installer:

cp firmware/builder/firmware/* firmware/installer/resources/firmware/

3. Build or Run the Installer

cd firmware/installer
npm install

Run directly (no build needed):

npm run electron:dev

Or build a distributable:

npm run package:mac    # macOS
npm run package:linux  # Linux

Output is in firmware/installer/dist/. Open the built app and follow the on-screen steps.

Security Considerations

This tool provides low-level access to the device's boot process. Use responsibly:

  • Only use on devices you own
  • Improper firmware can brick your device (Don't sue me bro)

Credits & Acknowledgments

This project builds upon the excellent work of several security researchers and developers:

Without their groundbreaking research, open-source contributions, and advocacy for device ownership rights, this work would not be possible. Thank you!

Open Source Commitment

We are committed to transparency and the right-to-repair movement. The firmware images and backend API server code will be open sourced soon, allowing the community to audit, improve, and self-host their own infrastructure.

References

Core symbols most depended-on inside this repo

logInfo
called by 24
firmware/installer/electron/omapLoaderUsb.ts
sendToWindow
called by 21
firmware/installer/electron/main.js
onProgress
called by 12
firmware/installer/electron/usb-handler.js
err
called by 9
firmware/installer/electron/ipc-result.js
done
called by 7
firmware/installer/electron/ssh-handler.js
nleapiFetch
called by 6
firmware/installer/electron/nest-configure.js
PACK4
called by 6
firmware/installer/electron/omapLoaderUsb.ts
bulkWrite
called by 6
firmware/installer/electron/omapLoaderUsb.ts

Shape

Function 87

Languages

TypeScript100%

Modules by API surface

firmware/installer/electron/omapLoaderUsb.ts12 symbols
firmware/installer/electron/usb-handler.js8 symbols
firmware/installer/electron/ssh-handler.js6 symbols
firmware/installer/src/components/SystemCheck.jsx5 symbols
firmware/installer/electron/windows-driver.js5 symbols
firmware/installer/electron/nest-discovery.js5 symbols
firmware/installer/src/components/SetupCompleteStep.jsx4 symbols
firmware/installer/src/components/InstallScreen.jsx4 symbols
firmware/installer/src/components/HADiscoveryStep.jsx4 symbols
firmware/installer/src/components/ConfiguringStep.jsx4 symbols
firmware/installer/src/App.jsx4 symbols
firmware/installer/src/components/SSHConfigStep.jsx3 symbols

Dependencies from manifests, versioned

@types/node24.10.1 · 1×
@types/usb2.0.4 · 1×
@vitejs/plugin-react4.2.1 · 1×
autoprefixer10.4.16 · 1×
concurrently8.2.2 · 1×
cross-env7.0.3 · 1×
dotenv16.4.5 · 1×
electron28.0.0 · 1×
electron-builder26.0.12 · 1×
electron-rebuild3.2.9 · 1×
postcss8.4.32 · 1×
react18.2.0 · 1×

For agents

$ claude mcp add NoLongerEvil-Thermostat \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact