Ratelimit / IP Ban

Hey Guys

I manage roll-out of several hundred ESPhome units with unique esphome firmware files, we just compile using esphome, and we don’t clear platformio cache or anything similar.

But now it seems our server address is IP banned, and get 429 errors when compiling as shown below.

I tried waiting a couple of days, but still banned. the Curl works fine from other IP adresses. Anyone know the duration of the bin / rate-limit ? Is the IP permabanned ?

the curl /response:

MBA \~ % curl -I "https://dl.registry.platformio.org/download/platformio/tool/tool-scons/4.40801.0/tool-scons-4.40801.0.tar.gz"

curl -L -o /tmp/tool-scons-4.40801.0.tar.gz "https://dl.registry.platformio.org/download/platformio/tool/tool-scons/4.40801.0/tool-scons-4.40801.0.tar.gz"

ls -lh /tmp/tool-scons-4.40801.0.tar.gz

sha256sum /tmp/tool-scons-4.40801.0.tar.gz

HTTP/2 429

server: nginx

date: Mon, 23 Mar 2026 11:17:50 GMT

content-type: application/json

content-length: 237

access-control-allow-origin: *

access-control-expose-headers: ETag, Content-Type, Content-Length, Location

access-control-allow-origin: *

access-control-expose-headers: ETag, Content-Type, Content-Length, Location

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

100   237  100   237    0     0    766      0 --:--:-- --:--:-- --:--:--   766

\-rw-r--r--  1 mba  wheel   237B Mar 23 12:17 /tmp/tool-scons-4.40801.0.tar.gz

$hash$  /tmp/tool-scons-4.40801.0.tar.gz

Okay then cache it? :smiley:

CC @ivankravets for possible unban

1 Like

It’s almost impossible to get a 429 error if you are a real human or developer. In other cases, our protection system handles it. We’ve been experiencing extremely high load on our infrastructure since the AI boom.

Please contact us at contact@piolabs.com and provide the IP address where PlatformIO Core is installed. We will investigate the logs and check why you were banned.

1 Like

Great thanks!!

I just sent an Emil. We do cache, but we are more than happy to fix anything we are doing wrong on our end as well of course.

Thanks for the replies!

If you run PlatformIO Core from Docker containers, you need to share the PlatformIO Core local directory between instances (using a bind mount). The PLATFORMIO_CORE_DIR environment variable can help with this.

Think I found out what goes wrong.

It seems like the the library dependancies were being downloaded on every compile. I didn’t realise they were not in the main .platformio folder, but stored separately for each project.

Then I found out they were in fact stored in the the /.platformio/.cache, but this was wiped after every compile run because we were running esphome clean (didn’t realise this until now). Obviously we removed the esphome clean, and are now doing a manual clean of the files we need removed between runs, without clearing the platformio/.cache.

1 Like