Skip to main content

Overview

NoLongerEvil implements the same Nest Cloud Protocol that Google’s servers use — the device firmware doesn’t know the difference. However, the server internals are substantially simplified for home use.

Authentication and Pairing

Google Nest CloudNoLongerEvil
User authOAuth 2.0 + JWT tokensNone (no user accounts on the device protocol layer)
Device authFull credential provisioning via X-nl-set-client-credentialsAccepts all credentials — serial extracted from Basic Auth
Pairing flowMobile app ↔ cloud ↔ device OAuth exchange7-character alphanumeric entry code
Credential managementProvisioned device-specific credentialsNo provisioning — default credentials accepted forever
Why: NLE skips credential provisioning entirely to avoid the credential loop bug and because home deployments don’t need per-device auth secrets.

Pairing States

NLE uses a 3-tier pairing model:
StateMeaning
PairedDevice has been claimed with a valid entry code
PendingEntry key exists but hasn’t been claimed yet
UnknownDevice has connected but no entry key exists
Google’s cloud uses a full OAuth + mobile app pairing flow that NLE replaces with the simpler entry code UI.

Timestamp Sync

Google Nest CloudNoLongerEvil
Sync resolutionTimestamp + revision with complex conflict handlingTimestamp-only (simplified)
Clock authorityCloud-authoritative via X-nl-service-timestampServer-authoritative via X-nl-service-timestamp
NLE’s simplified timestamp-only sync is sufficient for single-server deployments. Google’s cloud handles eventual consistency across distributed infrastructure.

Features Not Implemented

These Google Nest cloud features are not available on the self-hosted server:
FeatureStatus
Away Assist (AI occupancy prediction)Not implemented
EnergyIQ / Seasonal SavingsNot implemented
Rush Hour Rewards / demand responseNot implemented
Nest Aware video integrationNot implemented
Person detectionNot implemented
Farsight / Rush Hour integrationNot implemented
Multi-user account managementNot implemented
Shared device permissionsNot implemented
Nest Home / Works with Nest integrationsNot implemented

Persistence

Google Nest CloudNoLongerEvil
StorageDistributed cloud databases (Bigtable, etc.)SQLite (single file)
ConsistencyEventual consistency across regionsImmediate (single process)
StructuresMultiple structures per accountSingle default structure per device
User accountsFull Google account integrationhomeassistant user ID by default

MQTT Integration

NLE adds MQTT support that the original Nest cloud does not expose:
  • Device state changes are published to an MQTT broker
  • Home Assistant and other MQTT-based systems can receive real-time updates
  • MQTT is optional and configured separately from the core server

What Stays the Same

The device protocol itself is identical. The thermostat firmware:
  • Connects to the same endpoints with the same request format
  • Receives the same chunked subscribe responses
  • Uses the same bucket system and sync protocol
  • Applies the same field ordering requirement
  • Follows the same timing constraints
From the device’s perspective, NLE is indistinguishable from Google’s cloud.