Skip to main content
← BACK TO WRITING
4 MIN READ INTERMEDIATE Published February 16, 2026, 4 min read

The Architectural Pivot: Why I Ditched Cloud Music for Local-First Audio

Spotify is a subscription tax and YouTube Music is an API nightmare. Discover how I built a zero-latency, multi-room audio system using Music Assistant, local SSD storage, and a clever hardware passthrough.

#HOME-AUTOMATION #HOME-ASSISTANT #SELF-HOSTING

The Why: Cloud Audio Is a Smart Home Failure Point

At first glance, Spotify or YouTube Music seem like obvious choices.

I tried both.

Spotify: The Subscription Tax

  • 12 EUR/month
  • No ownership of media
  • Locked into external licensing decisions
  • Requires internet connectivity
  • Yet another recurring cost

For a core house function, that is architectural debt.

If my lighting does not depend on a subscription, why should my music?


On paper, YouTube Music looks hackable.

In reality:

  • Constant cookie authentication issues
  • API instability
  • Sudden breakage after backend changes
  • Random re-logins required

It worked, until it did not.

In a smart home, "sometimes works" is the same as broken.


The Core Problem

Cloud music introduces:

  • External authentication layers
  • API fragility
  • Internet dependency
  • Recurring cost
  • Latency

That is five failure points for something that should be as reliable as flipping a light switch.

Time for an architectural pivot.


The Pivot: Local-First Audio

Instead of renting access to music, I own it.

High-quality audio files are stored directly on the laptop SSD where Home Assistant runs.

No cloud.
No auth.
No API.
No subscription.

Just files.

The moment I moved music storage local, the entire architecture simplified.


Core Component: Music Assistant

If Home Assistant is the operating system of the house, Music Assistant is the operating system of music inside Home Assistant.

It provides:

  • Media indexing
  • Library management
  • Multi-room playback
  • Player grouping
  • Fast local streaming

Installation Overview

Inside Home Assistant:

  1. Install Music Assistant from HACS or the official add-on repository.

  2. Define a local media directory:

    YAML
    media_dirs:
      music: /media/music
  3. Point it to the SSD folder where audio files are stored.

  4. Let it scan and index your library.

  5. Expose your media players.

Done.

No OAuth dance.
No refresh tokens.
No cloud handshake.


Hardware Stack: Solving the Speaker Problem

Google Home Minis are everywhere in my house. Cheap, stable, and well-supported.

But their built-in speakers are weak.

So I introduced a hardware passthrough layer.

Each Google Home Mini is paired via Bluetooth to a high-quality external speaker:

  • Google Mini = network endpoint
  • Bluetooth speaker = real audio output
  • Mini default output = paired speaker

This solves the tiny-smart-speaker limitation without replacing hardware.


Logical Grouping: Whole House Mode

In the Google Home app:

  • I created a "Whole House" group
  • Added all Google Minis
  • Exposed the group to Home Assistant

Now Home Assistant sees:

Text
media_player.whole_house

One entity, every room.


Architecture Overview

Here is the actual data flow:

graph LR subgraph STORAGE["LOCAL STORAGE LAYER"] A1[High-Quality<br/>Audio Files<br/>FLAC/MP3] A2[Laptop SSD<br/>Fast Access] A3[No Internet<br/>Required] end subgraph CORE["HOME ASSISTANT CORE"] B1[Music Assistant<br/>Library Management] B2[Media Indexing<br/>& Cataloging] B3[Streaming Engine<br/>Local Wi-Fi] end subgraph DISTRIBUTION["NETWORK DISTRIBUTION"] C1[Google Home Mini<br/>Kitchen] C2[Google Home Mini<br/>Living Room] C3[Google Home Mini<br/>Bedroom] C4["Whole House Group"<br/>media_player.whole_house] end subgraph PASSTHROUGH["AUDIO PASSTHROUGH"] D1[Bluetooth<br/>Connection] D2[Wireless<br/>Pairing] D3[Audio<br/>Routing] end subgraph OUTPUT["HIGH-QUALITY OUTPUT"] E1[Premium Speaker<br/>Kitchen] E2[Premium Speaker<br/>Living Room] E3[Premium Speaker<br/>Bedroom] end A1 -.->|Stored On| A2 A2 -->|Zero Cloud Dependency| B1 B1 -->|Indexed By| B2 B2 -->|Streams Via| B3 B3 -->|Local Network| C4 C4 -.->|Unified Control| C1 C4 -.->|Unified Control| C2 C4 -.->|Unified Control| C3 C1 -->|BT Signal| D1 C2 -->|BT Signal| D2 C3 -->|BT Signal| D3 D1 -->|High-Fidelity Audio| E1 D2 -->|High-Fidelity Audio| E2 D3 -->|High-Fidelity Audio| E3 A3 -.->|Guarantees| B3

What This Means

  • Audio never leaves the house
  • Streaming happens over local Wi-Fi
  • Google devices act as distribution nodes
  • Bluetooth handles the final audio output stage

It is simple. That is the point.


The Result: Zero Bottlenecks

After the pivot:

Instant Response

Press play and music starts immediately.

No API call.
No authentication delay.
No buffering.


Zero Subscription Fees

  • No 12 EUR/month Spotify tax
  • No platform lock-in
  • No licensing anxiety

Music becomes infrastructure, not a service.


100 Percent Uptime (Even Offline)

If the internet goes down:

  • Lights still work
  • Automations still work
  • Music still works

Because it is local.

That is the Bare Metal philosophy.


Key Architectural Lessons

  • Eliminate recurring cost where possible
  • Remove cloud dependencies for core house functions
  • Use hardware passthrough instead of replacing entire stacks
  • Own your media
  • Treat music as infrastructure, not entertainment

Final Thought

Cloud services are convenient until they are not.

If your house depends on someone else's server to play a song in your kitchen, you do not own your system. You are renting it.

This multi-room setup is not flashy.
It is not trendy.

But it is fast.
It is reliable.
And it works every single time.

In Bare Metal Home, that is the only metric that matters.

Key takeaways

  • Ownership is the Ultimate Reliability. In a "Bare Metal" home, the goal is to eliminate every external handshake between your intent and the result. Cloud music introduces five distinct failure points; local storage reduces them to zero. By using your Google Home Minis as network endpoints rather than primary speakers, and Music Assistant as your local DJ, you reclaim your media and your wallet. If the internet goes dark, the party in your kitchen shouldn't have to stop.

// FURTHER EXPLORATION

PREREQUISITE

The Death of the Smart App: Why My Home is Now a State Machine

We were promised the future, but we got a folder full of apps. For years, my "smart" home was actually a burden of distributed cognitive load—one app for the lights, another for the coffee, and a constant mental checklist of manual inputs. I decided to kill the apps and rebuild my home as a State Machine. By migrating Home Assistant to an old laptop and repurposing Surface tablets as dedicated interfaces, I've moved from "remote controlling" my life to living in a home that anticipates my needs.

NEXT READ

The Three-Layer Fortress: Building a Private Cloud with Coolify, Directus, and Cloudflare

Stop punching holes in your firewall and exposing your home IP to the world. In 2026, building a private cloud is no longer about managing complex VPNs or risky port forwarding; it’s about creating an invisible, outbound-only bridge to the internet. By combining Coolify for orchestration, Directus for data management, and Cloudflare Tunnels for Zero Trust connectivity, you can build a three-layer fortress that is accessible from any browser but completely hidden from scanners. This is the definitive guide to professional-grade self-hosting on your own hardware—no open ports required.

RELATED

The Death of the Smart App: Why My Home is Now a State Machine

We were promised the future, but we got a folder full of apps. For years, my "smart" home was actually a burden of distributed cognitive load—one app for the lights, another for the coffee, and a constant mental checklist of manual inputs. I decided to kill the apps and rebuild my home as a State Machine. By migrating Home Assistant to an old laptop and repurposing Surface tablets as dedicated interfaces, I've moved from "remote controlling" my life to living in a home that anticipates my needs.