Skip to content

Title: Make the default package index optional / disableable #3073

@bxclib2

Description

@bxclib2

Describe the request

Title: Make the default package index optional / disableable

Body:

I’m trying to use Arduino CLI / IDE in offline and controlled environments, and the current index mechanism is unnecessarily rigid.

Current behavior is simple and problematic:

Arduino always tries to load the default indexes from downloads.arduino.cc (package_index., library_index.), no matter what.
This happens even if:

  • all required cores and tools are already installed
  • additional indexes are explicitly configured
  • local file:// indexes are used

There is no supported way to disable, override, or replace the default index.
This is not a documentation issue. It’s a hard limitation by design.

Why this is a real problem:

In air-gapped networks, CI systems, corporate firewalls, labs, or classrooms, this causes:

  • unavoidable outbound network attempts
  • startup delays and warnings
  • the need for DNS / hosts hacks or fake mirrors just to make Arduino start cleanly
  • no clean way to freeze or reproduce a toolchain

At this point, the only workable solutions involve redirecting downloads.arduino.cc at the OS level, which is ugly and clearly outside the scope of what users should be doing.

What is being requested:

One of the following would solve this properly:

  • a config option to disable loading the default index
  • a way to override the default index URL
  • a CLI / IDE flag like: arduino-cli core update-index --no-default-index
  • treating the default index like any other optional index instead of a mandatory one

Notes:

  • file:// indexes already work, so this is not a technical blocker
  • signature verification can remain optional or configurable
  • this is not about removing the default index, only about making it optional

Right now, Arduino effectively forces external network access even when the environment is fully local and already set up. That makes offline and reproducible setups fragile for no good reason.

This is a design limitation, not a corner case.

Describe the current behavior

please don't close this issue.

Arduino CLI version

all

Operating system

N/A

Operating system version

all

Additional context

No response

Issue checklist

  • I searched for previous requests in the issue tracker
  • I verified the feature was still missing when using the nightly build
  • My request contains all necessary details

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions