--- layout: vagrant-cloud page_title: Vagrant Box Architecture description: "Vagrant box architecture and default architecture." --- # Architecture for Vagrant boxes Providers for Vagrant boxes, in Vagrant version 2.4.0 and newer, can include multiple architecture options. This allows you to have multiple instances of one specific provider. The specific provider shares a common name for artifacts of different architectures. For example, the `hashicorp/precise32` and `hashicorp/precise64` boxes each include a provider for `virtualbox`. ``` hashicorp/precise32 v1.0.0 provider: virtualbox hashicorp/precise64 v1.0.0 provider: virtualbox ``` The addition of architecture now allows these to be combined into a single box. Instead of having a `hashicorp/precise32` box for a 32-bit guest, and a `hashicorp/precise64` box for a 64-bit guest, a single `hashicorp/precise` box can provide both. ``` hashicorp/precise v1.0.0 provider: virtualbox, architecture: amd64 provider: virtualbox, architecture: i386 ``` The Vagrant CLI will automatically match the provider architecture using the detected local host architecture. If the Vagrant CLI cannot find a matching architecture, it will attempt a [special case match](/vagrant/vagrant-cloud/boxes/architecture#unknown-architecture). ## Default architecture Vagrant Cloud allows you to optionally specify one architecture as the "default architecture" for a provider. This enables the box owner to control which architecture for the provider the Vagrant CLI uses when architecture filtering is not available. By default, the first provider in the configuration for a box version is the default architecture. Note, this functionality enables backwards compatiblity with previous versions of the Vagrant CLI that do not support architecture filtering when matching an appropriate provider. For example, the `2.0.0` version of the `hashicorp/precise` box is created and a new `virtualbox` provider is created with `amd64` architecture. ``` hashicorp/precise v2.0.0 provider: virtualbox, architecture: amd64, default_architecture: true ``` Adding another `virtualbox` provider with `i386` architecture. ``` hashicorp/precise v2.0.0 provider: virtualbox, architecture: amd64, default_architecture: true provider: virtualbox, architecture: i386, default_architecture: false ``` When the Vagrant CLI, prior to version 2.4.0, requests the `hashicorp/precise` box with the `virtualbox` provider, it will receive the information from the `virtualbox` provider with the `amd64` architecture because it is flagged as being the default architecture. If, instead, the provider with `i386` architecture should be returned, the `virtualbox` provider for the `i386` architecture can be updated to be the default architecture. ``` hashicorp/precise v2.0.0 provider: virtualbox, architecture: amd64, default_architecture: false provider: virtualbox, architecture: i386, default_architecture: true ``` Now the provider with the `i386` architecture will be returned. ## Special cases There are two cases where Vagrant CLI versions with architecture support will use the default architecture flag. ### User requested If the user sets the [config.vm.box_architecture](/vagrant/docs/vagrantfile/machine_settings#config-vm-box_architecture) option in their Vagrantfile to `nil`, the Vagrant CLI will use the provider which has been flagged as the default architecture. ### Unknown architecture The architecture value `unknown` combined with the default architecture flag provides a special matching case for the Vagrant CLI. If the [config.vm.box_architecture](/vagrant/docs/vagrantfile/machine_settings#config-vm-box_architecture) option in the local Vagrantfile is configured with the default `:auto` value, and no architecture matching the host platform can be found for the desired provider, the Vagrant CLI will check for a matching provider that is flagged as the default architecture and has an architecture value of `unknown`. If that match is found, the Vagrant CLI will use that provider. This special case matching was included so the Vagrant CLI would be able to use boxes published to Vagrant Cloud prior to the introduction of architecture metadata. All previously existing providers have a default architecture value of `unknown` and are flagged as the default architecture since they are the only provider to exist for a given name.