Library / SDK
chrisjshull/homebridge-nest avatar
chrisjshull/homebridge-nest

homebridge-nest puts Nest thermostats, protects and locks into HomeKit

Nest plugin for HomeBridge

771 stars129 forksJavaScriptLicense varies

At a glance

What is it?
homebridge-nest is a Homebridge plugin that talks to the native Nest API and exposes Nest Thermostats, temperature sensors, Nest Protect alarms and Nest x Yale Lock devices to HomeKit. It supports both pre-August 2019 Nest accounts and Google accounts, and it carries a verified plugin badge, a published release after a three year gap and a plugin configuration schema.
Who is it for?
HomeKit users who still have Nest hardware and are prepared to manage their own Homebridge should use homebridge-nest, because it is a verified plugin, it covers the thermostat, Protect and lock range, and the configuration surface is documented field by field.
Can I use it commercially?
Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
Is it still maintained?
Yes. The repository last received commits 169 days ago.
What is it written in?
Mainly JavaScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A verified Homebridge plugin for the Nest device range

homebridge-nest is a Nest plug-in for Homebridge using the native Nest API. It integrates your Nest Thermostat, temperature sensors, Nest Protect and Nest x Yale Lock devices into your HomeKit system, and it carries the verified by Homebridge badge from the project's own plugin wiki.

That badge is a meaningful signal in this ecosystem. Homebridge is a large collection of third-party plugins, most of them written by individuals, and the verified list is how a user tells the maintained ones from the abandoned ones. Nest devices are popular, so the plugin attracts attention, and the badge says the maintainer is engaged with the project rather than having walked away.

The device coverage is broad within its scope. The plugin supports all Nest Thermostat, Protect and Nest x Yale Lock models, including the EU and UK model of the Thermostat E with Heat Link, and the October 2020 model Nest Thermostat with a mirror display.

Two things it explicitly does not do are stated in the README. The discontinued Nest Secure system is not supported. And cameras are not supported, with the README pointing at a separate project for that, homebridge-nest-cam.

Account types are the other axis. Both Nest Accounts, the ones created before August 2019, and Google Accounts are supported, and the README notes that Google Accounts became mandatory for new Nest devices after August 2019, with an optional migration for earlier accounts.

The package is published to npm as homebridge-nest at version 4.6.10, with a repository by Chris Shull. The last push was on 2026-05-07, the repository is not archived, and the package declares the ISC licence in its own metadata.

Google account cookies are the only working authentication path

The authentication story is the most interesting part of the plugin, and it is a story about a platform changing underneath a user community.

The README says the plug-in used to support two ways to authenticate with Google, the refresh token method and the cookies method. The refresh token method no longer works due to Google-side changes in October 2022, so now only the cookies method is documented.

The cookies method means putting a Google session into your configuration file:

code
      "platform": "Nest",
      "googleAuth": {
        "issueToken": "https://accounts.google.com/o/oauth2/iframerpc?action=issueToken...",
        "cookies": "OCAK=TOMPYI3cCPAt...; SID=ogftnk...; HSID=ApXSR...; ...; SIDCC=AN0-TYt..."
      },

The values are obtained by hand, once, as long as you stay logged into your Google account. The README walks through the Chrome route in twelve steps: open a tab in Incognito mode, open Developer Tools, go to the Network tab with Preserve Log checked, filter for issueToken, load home.nest.com, click the eye icon in the address bar and toggle third-party cookies, sign in with Google, then find the network call beginning with iframerpc and copy the whole Request URL from the Headers tab, which is your issueToken. Then filter for oauth2/iframe, open the last iframe call, and copy the entire cookie string from the request headers, which is your cookies value. A Safari route follows, with the same idea.

Two warnings recur. Do not log out of home.nest.com, as that invalidates the credentials, and just close the browser tab.

The honest reading is that this is a session-scoped credential pasted into a configuration file. It works, and it is the only route the plugin documents, but it ties your Homebridge instance to a browser session you must maintain. The Nest account route is more conventional: you visit home.nest.com, then the session page, and copy the access_token value from the JSON, noting that there may be other keys with the same name further along the string and that you should ignore those.

The repository also notes the Homebridge clone option, pulling the repository into the same path Homebridge lives in, usually /usr/local/lib/node_modules, with an important caveat: the code currently on GitHub is in beta and is newer than the latest published version of the package on npm.

The configuration file, field by field

The plugin is configured in the platforms array of your Homebridge config.json, and the README gives the shape directly:

code
"platforms": [
        {
            "platform": "Nest",
            "options": [ "HomeAway.Disable" ],
            "access_token": "your Nest Account access token"
        }
    ],

The platform key must always be "Nest". Which credential field is required depends on the account type: access_token for a Nest Account with an access token, refreshToken for a Google Account with a refresh token, and googleAuth for a Google Account with cookies.

The optional fields are where the plugin's behaviour is configured. structureId filters to one structure, and the README notes you can find each device's structureId in the logs on first run, and that Nest structures are equivalent to HomeKit homes. options is a list of features to enable or disable, such as the HomeAway.Disable entry in the example, and the README has a Feature Options section for the full list.

Two timing options matter for anyone with a system that controls more than heating. fanDurationMinutes sets how long the fan runs when turned on manually, with a default of 15, and hotWaterDurationMinutes sets the same for hot water, defaulting to 30 and only applying to systems with hot water control.

Installing is the standard Homebridge plugin installation, and the README notes the repository clone alternative for people who want the newer beta code:

bash
npm install -g homebridge
npm install -g homebridge-nest

The repository carries a config.schema.json, which means the plugin declares its own configuration schema so that Homebridge can validate and complete the configuration for you.

Engines, dependencies and the shape of the codebase

The package.json gives the compatibility contract, and it is specific.

The engines field requires homebridge >=0.2.5 or a 2.0.0 beta, and node >=7.0.0. The Homebridge range is the interesting one, because it covers both the long-lived 1.x line and the beta line, which tells you the plugin is expected to work across a Homebridge version transition.

The runtime dependencies are short and each one tells you what the plugin does. axios is the HTTP client for the Nest API. lodash.debounce is used to throttle polling. promise-prompt is for interactive prompting, which is what a plug-in that asks for credentials at first run needs. promise.prototype.finally and protobufjs with varint point at the Nest streaming API, which is protobuf based, and at older promise polyfilling for the Node versions the engines field allows.

The development setup is minimal by modern standards: eslint with the flat config packages, and two scripts that run it, prepublishOnly and preversion, so a lint failure blocks a publish and a version bump. The repository layout matches a small Node plugin: index.js at the root, a lib directory for the implementation, a config.schema.json, an eslint.config.js and a .npmignore so only the published files ship.

The result is a plugin you can read in an afternoon, which is exactly what a Homebridge user wants from a bridge they have to trust with a session cookie and a credential.

The plug-and-play alternative, and the gaps in coverage

The README offers a commercial alternative before it offers installation instructions, and the framing is useful.

Starling Home Hub is described as a plug-and-play Nest integration solution, a small box that connects to your home router so you are up and running in minutes without setting up a Homebridge server, editing configuration files or worrying about authentication tokens. It also supports Nest Cameras, including the August 2021 battery powered models, and Nest Secure, the Guard and Detects devices that this plugin does not support.

The README is explicit about which audience each suits. If you want a plug-and-play solution, look at Starling. If you want a DIY solution, homebridge-nest is for you.

That framing is the fairest way to read the project, and it also makes the trade concrete. The commercial box removes the Homebridge server, the configuration file and the token handling, and it covers the two device families the open plugin leaves out, at the cost of a subscription and a vendor dependency. The plugin gives you a Homebridge instance you control, full access to the configuration surface including the structureId filter and the feature options, and the ability to extend it, at the cost of maintaining a server and a session cookie.

The remaining gap is the cameras and the retired Secure system, and for the cameras the README already points at a separate community plug-in, homebridge-nest-cam, which is the natural way to close that hole if you need it.

Release history and what the version numbers tell you

The release record is where the plugin's history is visible, and it shows a long gap followed by a burst.

The recent releases are v4.6.8 on 2022-04-30, v4.6.9 on 2022-05-02, and v4.6.10 on 2025-03-22. The last push was on 2026-05-07.

So two releases landed two days apart in April and May 2022, and the next one came almost three years later. That is what you would expect from a plugin whose upstream, the Google sign-in flow, changed underneath it: the October 2022 change to the refresh token method landed between those two bursts, and the work of moving to the cookies method and getting a release out took until 2025.

The README points at the release page for what is new in 4.6.10, which is where the maintainer describes the current state of the rewrite.

Two further details matter when you decide what to install. The comment in the installation section says the code currently on GitHub is in beta and is newer than the latest published version of the package on npm, which means the repository and the registry are not the same thing. And the repository's own licence field is not classified, while the package metadata declares the ISC licence, so the terms for the code and for the published artifact are stated in different places and worth reading separately.

For a Homebridge user the practical summary is short. Install the published package if you want the stable line, follow the repository if you want the beta, and expect to redo the Google cookie step whenever Google invalidates your session, because the plugin has no way to refresh it.

Editorial conclusion

HomeKit users who still have Nest hardware and are prepared to manage their own Homebridge should use homebridge-nest, because it is a verified plugin, it covers the thermostat, Protect and lock range, and the configuration surface is documented field by field. It is the wrong tool if your Nest devices were set up with a Google account, because the only working authentication path is a pasted session cookie, and it is the wrong tool if you want cameras or the retired Nest Secure system, which the plugin explicitly does not support. Before installing, check the access token or cookie lifetime you are signing up for, and note that the version on npm is 4.6.10 while the repository README warns that the code on GitHub is newer and in beta.

Frequently asked questions

How do I install homebridge-nest?

Run npm install -g homebridge and then npm install -g homebridge-nest, then edit the platforms array of your Homebridge config.json. The README also notes that you can clone the repository into the same path Homebridge lives in, usually /usr/local/lib/node_modules, but that the code on GitHub is in beta and newer than the published npm package.

Does homebridge-nest support a refresh token for Google accounts?

Not any more. The README says the plug-in used to support a refresh token method and a cookies method, and that the refresh token method no longer works due to Google-side changes in October 2022, so only the cookies method is documented.

Which Nest devices does the plugin not support?

The discontinued Nest Secure system is not supported, and neither are cameras. For cameras the README points at the separate homebridge-nest-cam plug-in, and the Starling Home Hub is offered as a plug-and-play alternative that supports both cameras and Nest Secure.

What are the configuration options for homebridge-nest?

The platform key must be "Nest", and the credential depends on the account type: access_token for a Nest Account, refreshToken for a Google Account with a refresh token, or googleAuth for a Google Account with cookies. Optional fields include structureId to filter to one structure, options for feature toggles, fanDurationMinutes and hotWaterDurationMinutes for manual run durations.

Official sources

  1. chrisjshull/homebridge-nest on GitHub
  2. Issues
  3. README
  4. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/chrisjshull-homebridge-nest.svg)](https://hysenlabs.com/projects/chrisjshull-homebridge-nest)

Was this useful?