Vagrant: Portable Development Environments from a Single Vagrantfile
Vagrant is a tool for building and distributing development environments.
At a glance
- What is it?
- Vagrant builds and distributes development environments on VirtualBox, VMware, AWS, OpenStack or Docker from one configuration file. Here is how the CLI works, how to bring up a first machine, and where the tool stops being the right choice.
- Who is it for?
- Adopt Vagrant if you need a reproducible machine that a whole team can start with one command, and you are willing to keep a hypervisor such as VirtualBox installed alongside it. Do not adopt it if your team has already standardised on dev containers or a cloud workspace, because Vagrant adds a hypervisor layer those tools do not need.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly Ruby, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 28, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The problem Vagrant solves: one machine definition, many hypervisors
A development environment that only exists on one laptop is a support burden. Vagrant's answer is a single project file, the Vagrantfile, that describes the machine and lets anyone on the team reproduce it. The README describes the project as "a tool for building and distributing development environments" and says those environments can run on local virtualized platforms such as VirtualBox or VMware, in the cloud via AWS or OpenStack, or in containers such as Docker or raw LXC. The portability claim is across Windows, Mac OS X and Linux, which matters when a team is mixed.
The audience is developers and operations engineers who want the machine to be described in the repository rather than in a wiki page. A new contributor clones the project, runs two commands, and gets a working box with the same operating system and the same provisioned software. That is the whole value proposition, and it is narrower than it sounds. Vagrant is not a configuration management system and it is not a container runtime. It is the layer that creates the machine and hands it to a provisioner.
How Vagrant works: a CLI, a box, and a provider underneath
The mechanism has three parts. The Vagrantfile holds the configuration: which box to use, which provider to run it on, and how to provision it. A box is the base image the machine is built from, and the README notes that the bionic64 box is downloaded from a specified URL the first time vagrant up runs, but only if Vagrant detects the box is not already present on the system. The provider is the virtualization backend, which is why the same Vagrantfile can target VirtualBox locally or a cloud platform.
That split is the design decision worth understanding. Vagrant itself does not virtualize anything. It drives a provider, so the quality of your experience depends on the provider plugin and on the hypervisor being installed and working. The repository layout reflects this: the top level contains lib/, plugins/, builtin/, bin/ and a Vagrantfile for Vagrant's own development, and the primary language is Ruby. Provisioners run after the machine boots, which is where tools like shell scripts or configuration management take over. The README does not enumerate the provisioner options in the excerpt available, so check the getting started guide for the current list rather than assuming.
Installing Vagrant and bringing up a first machine
The README states that Vagrant requires bsdtar and curl to be available on your system PATH to run successfully. Check that before anything else. Then install VirtualBox, and download the appropriate Vagrant package for your OS from the downloads page the README links to. Source installation is documented separately on the installation page for people who want the bleeding edge version from main.
With both installed, initialise a project. This writes a Vagrantfile into the current directory:
vagrant init hashicorp/bionic64Then start the machine. The README notes this command also triggers Vagrant to download the bionic64 box via the specified URL if it is not already on your system, so the first run takes longer than later ones:
vagrant upAfter that, vagrant ssh opens a shell on the running machine, and vagrant halt stops it. The README points to the getting started guide for building a fully functional environment, which is where provisioning is covered. Expect the first vagrant up to be a download, not an instant boot.
Where Vagrant is the wrong tool
The provider dependency is the real limitation. If VirtualBox is not installed or is broken on a developer's machine, vagrant up fails, and the failure is in the hypervisor rather than in Vagrant. The README's own quick start tells you to install VirtualBox first for exactly this reason. On Windows, nested virtualization and Hyper-V interactions are a common source of this class of problem, and the README does not document a workaround in the excerpt available.
Vagrant is also a poor fit when the goal is a disposable, seconds-long environment. Building a virtual machine is heavier than starting a container, and the README lists Docker and raw LXC as supported targets, which means if containers are your destination you may not need the VM layer at all. Finally, the README carries a notice that HCP Vagrant is being deprecated and that limited features will be available from the community edition effective November 2, 2026, with a link to the HCP Vagrant end-of-life page. The same notice states this change is only for HCP Vagrant and does not apply to Vagrant CLI. Read that distinction carefully before planning around the hosted service.
Vagrant compared with Docker Compose
Docker Compose describes services as containers and starts them on the host kernel. Vagrant describes a machine and asks a provider to create it, which may be a virtual machine, a cloud instance or a container. The practical difference is what you get at the end: Compose gives you a process tree sharing your kernel, while Vagrant gives you a bootable machine you can ssh into, with its own kernel and its own package manager.
That makes Vagrant the better choice when the environment must resemble production hardware, when you need a full init system, or when the team's workflow assumes a login shell on a real host. Compose wins when startup time matters and the workload is already containerised. The two are not mutually exclusive: the README lists Docker as one of the platforms Vagrant can manage, so a Vagrantfile can target a container provider. The cost of that choice is an extra layer of indirection between you and the container runtime.
Maintenance, releases and the licence question
The repository is not archived, and the last push was on 2026-09-07, which is recent. Recent releases are development builds: 2.4.10.dev+000834-2757db88 on 2026-06-01, 2.4.10.dev+000781-f9e2630d on 2026-04-09, and 2.4.10.dev+000759-0b7d460a on 2026-03-18. The version string format indicates these are dev builds rather than tagged stable releases, so pinning to a specific build is awkward. If you need a stable version, take it from the downloads page rather than from these development tags.
The licence field in the repository metadata is NOASSERTION, which means the automated classifier could not map the LICENSE file to a known identifier. The repository has a LICENSE file at the top level, so read it directly rather than relying on the metadata label. This is not legal advice, and if you are embedding Vagrant in a product or redistributing boxes, have someone review the LICENSE text and the terms of the box images you use. Upgrade cost is mostly the hypervisor: Vagrant and VirtualBox version combinations are the usual source of breakage, and the README does not document a rollback procedure for a failed upgrade.
Editorial conclusion
Adopt Vagrant if you need a reproducible machine that a whole team can start with one command, and you are willing to keep a hypervisor such as VirtualBox installed alongside it. Do not adopt it if your team has already standardised on dev containers or a cloud workspace, because Vagrant adds a hypervisor layer those tools do not need. Before committing, run vagrant init hashicorp/bionic64 and vagrant up on one developer machine, and confirm that bsdtar and curl resolve on the PATH, since the README lists both as required for Vagrant to run.
Frequently asked questions
What is Vagrant in DevOps?
Vagrant is a tool for building and distributing development environments, according to its README. In practice it creates a machine from a Vagrantfile and hands it to a provider such as VirtualBox, VMware, AWS, OpenStack or Docker. It is the environment layer, not a configuration management or deployment tool.
How do I use Vagrant with VirtualBox?
Install VirtualBox first, then install the Vagrant package for your OS. Run vagrant init hashicorp/bionic64 followed by vagrant up, and Vagrant downloads the box if it is not already on your system. The README uses VirtualBox for its quick start because it is free and works on all major platforms.
How do I install Vagrant?
Download and install the appropriate Vagrant package for your OS from the downloads page linked in the README, and make sure bsdtar and curl are available on your system PATH, since the README lists both as required. Building from source is covered on the separate installation page for the bleeding edge version.
How do I run Vagrant?
Initialise a directory with vagrant init hashicorp/bionic64, then run vagrant up. The README notes that vagrant up also triggers the box download the first time, but only if Vagrant detects the box is not already present. The getting started guide covers building a fuller environment.
What is Vagrant on Linux?
On Linux, Vagrant is the same CLI described in the README: it builds and distributes development environments that can run on local virtualized platforms, in the cloud, or in containers. The installation page documents building from source if you want the version from main.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/hashicorp-vagrant)
Community notes