I admit — I love the convenience of saying “Hey Google, good night” and having lights dim, plugs turn off, and the thermostat set. But I also care about keeping as much of that automation as possible off the cloud. Over the last few years I've rebuilt my routines around the idea that the “smarts” should live locally when possible: faster response, continued operation during internet outages, and fewer things being sent to third‑party servers.

Why Google Home routines are often not private by default

Google Home routines are attractive because they centralise many devices into one voice trigger or schedule. The downside is that, by default, most of Google’s routines and third‑party integrations run through Google Cloud. That means routine triggers, devices states and sometimes logs are routed through Google's servers (and potentially the partner cloud). If you want to minimise that, you need to change where the automation runs — from the cloud to your local network or to the device/hub itself.

Local-first options (my recommended approaches)

There are three practical ways I use to keep automations local while still using Google Assistant as a front end when needed:

  • Use a local home automation hub (Home Assistant) to run automations locally and expose minimal controls to Google.
  • Prefer Matter/Thread and devices that support local execution so Google Home and the device talk on your LAN.
  • Use device-native schedules and hub rules (Philips Hue Bridge, Lutron Caséta, Aqara hub, etc.) so routines run on the bridge itself.
  • How I set this up — step by step with Home Assistant (my go-to)

    Home Assistant (HA) is my preferred local hub because it runs entirely on your LAN and supports a huge range of devices (Zigbee, Z‑Wave, Wi‑Fi, MQTT). The idea is this: let HA manage the automations locally, and only expose a tiny, controlled interface to Google so you can still use voice if you want.

    Steps I follow:

  • Install Home Assistant — I run it on a Raspberry Pi 4 or an Intel NUC for reliability. Use the official Home Assistant OS image and a decent SD or SSD.
  • Add your devices locally — pair Zigbee devices with a Conbee II or a ZHA stick, add Z‑Wave, configure Wi‑Fi devices directly or via MQTT. Don’t link everything to cloud accounts — prefer integrations that stay local.
  • Create automations inside Home Assistant — these are YAML or visual automations that run on your LAN. Examples: turn off all lights at 23:00, switch bedroom outlets to night mode, lower thermostat when everyone leaves.
  • Expose only a trigger or virtual switch to Google — via the Home Assistant Cloud (Nabu Casa) or the official Google integration. I usually expose a single “Good Night” virtual switch that triggers HA automations. When Google turns that switch, HA runs the local automations.
  • Limit what you expose — only expose the minimal set of entities Google needs. Keep sensors, cameras and presence detection private unless strictly necessary.
  • Example automation (YAML snippet I use for a “Good Night” virtual switch):

    /* Home Assistant example */- alias: 'Good Night routine'  trigger:    platform: state    entity_id: input_boolean.good_night_switch    to: 'on'  action:    - service: light.turn_off      entity_id: group.downstairs_lights    - service: switch.turn_off      entity_id: switch.living_room_plug    - service: climate.set_temperature      data:        entity_id: climate.main_thermostat        temperature: 18    - delay: '00:00:02'    - service: input_boolean.turn_off      entity_id: input_boolean.good_night_switch

    With this setup the heavy lifting (turning devices off, setting scenes) happens locally inside HA. Google only toggles the virtual switch, so you keep cloud exposure minimal. If you want to avoid cloud altogether when using voice, pair Matter devices (see next section).

    Matter and Thread: the local execution future

    Matter is the industry push toward a standard that works locally. When a device is Matter‑certified, it can often execute commands locally through a Matter controller — and many Google Nest devices act as Thread border routers (Nest Hub 2nd gen, Nest Hub Max, some Nest Wi‑Fi routers).

    How I approach Matter:

  • Buy Matter‑certified devices where possible (smart plugs, lights, locks).
  • Set up a Thread network with a supported controller (your Nest Hub or a dedicated Thread border router).
  • Pair Matter devices directly to the Google Home app where supported — once paired as Matter, commands can be routed locally between controller and device for faster, private execution.
  • Note: Matter still needs some cloud functions for cross‑account or third‑party integrations, but day‑to‑day device control and many automations can be local.

    Device-native schedules and hubs — the simplest privacy wins

    Sometimes the simplest privacy trick is to let the device handle automation itself:

  • Philips Hue Bridge: create scenes and schedules that run on the Hue Bridge. Those run locally and survive internet/Google outages.
  • Lutron Caséta: its bridge runs schedules internally and integrates reliably with Home Assistant for advanced logic.
  • Many Zigbee/Z‑Wave devices can be controlled by their hubs (Aqara, Zooz) without cloud dependency.
  • When possible I configure the device hub first, then use Home Assistant only for the extra logic that the hub doesn't support.

    Privacy and hardening tips I use

    Beyond architecture choices, I keep privacy tight with these practical measures:

  • Expose minimal entities to Google — fewer exposed entities = less metadata shared.
  • Disable voice & audio storage in your Google account settings if you’re concerned about recordings.
  • Use network controls like Pi‑hole or DNS filtering to block needless telemetry domains from devices that phone home.
  • Segment your network — put IoT devices on a guest VLAN so they can’t reach local NAS or private PCs by default.
  • Use local presence detection (router‑based, Bluetooth, or Home Assistant’s own methods) instead of cloud location services.
  • Quick comparison: which approach to choose?

    Approach Local execution? Ease Privacy Best for
    Home Assistant + virtual switch Yes (automations run locally) Medium (setup needed) High (expose minimal) Power users who want full control
    Matter + Thread devices Often yes (native local execution) Easy to Medium High (when paired locally) Future‑proof, low‑latency voice control
    Device hub schedules (Hue, Lutron) Yes (on the hub) Easy High Simplest private automations
    Google Home native routines No (cloud dependent) Very Easy Low Users prioritising convenience over privacy

    Practical example: "Good Night" with minimal cloud

    My current configuration for “Good Night”:

  • Lights: Philips Hue on a Hue Bridge. Bridge runs the “dim & off” scene locally triggered by Home Assistant.
  • Plugs: Zigbee smart plugs exposed to HA. HA automation turns them off locally.
  • Thermostat: Local thermostat integrated into HA (no cloud linking).
  • Voice trigger: A single input_boolean in HA exposed to Google Assistant. I can say “Hey Google, turn on Good Night” and Google toggles that switch; HA does the rest locally.
  • This gets me the best of both worlds: the convenience of a voice trigger when I want it, and the privacy and reliability of local execution for the actual automation logic.

    If you want, I can walk you through a tailored plan for your current devices — tell me the brands you use and whether you're comfortable with Raspberry Pi, and I’ll sketch a step‑by‑step setup for local, private routines.