ESPHome Completely Offline Builds

Perhaps I missed it in the documentation or somewhere else, but I haven’t been able to find an answer to this particular use-case…

Does anyone have a recommended method of running ESPHome and HomeAssistant in a totally non-internet location?

I would like to setup a HomeAssistant VM, running ESPHome and all my other add ons. This can be accomplished with internet access. However, I need to run the instance, and all the sensors, in a house that doesn’t have internet available. I’d like to be able to build and add new sensors over time, but I won’t have internet there to download any of the dependencies.

I believe I would need to setup an offline mirror of some sort for the dependencies, and point my instance to that mirror.

Does anyone have experience with doing this specifically for ESPHome/HASS? Any pointers, or preferably excellent insight to simplify my life?


Welcome to the forum. I wish I had the exact answers you were looking for, but I dont. I’m not even sure you can build an offline repo and point your setup there. But, something that you can do is this. You will have to build your HomeAssistatant somewhere with Internet then move it to the no internet location. It is possible to build and run a docker of ESPHome on a Raspberry Pi. You could have this offsite where there is Internet and build and download your ESPHome bin file and transport them via USB Drive to the site with no internet. You could even build the entire ESPHome device offsite and then transport it. I know this isn’t exactly what you wanted, but I thought that I would give you an alternative that could start you on your journey.

1 Like

What about cloning a local copy of the repo per the Contributing docs?

1 Like

When esphome compiles it downloads libraries from platformio. I guess you could pre-download platformio’s entire library code, but I doubt that is practcable.

1 Like

If you have internet available elsewhere, you could prepare the esphome modules there, and then add them on location?

1 Like

Thanks to each of you for the ideas. It sounds like there isn’t a “boilerplate” route to take on this… that being said, I will probably try a hybrid of each of your solutions. Once I get it working and figured out, I will try to post a final overview of what I did and what issues I encounter.

Thank you all!