Install Porter

Join our mailing list for announcements of releases and announcements of new features. Connect with other Porter users and contributors on Slack.

Porter is about to release v1.0.0, and we strongly recommend that you install that version of Porter if you are just starting out.

If you are already using Porter, here are links to install an older v0 version of Porter. Heads up that v0 will be deprecated a few months after v1.0.0 is released!

  • Latest installs the latest stable version of v0. We recommend new users start with v1 instead.
  • Canary installs the most recent build of v0.
  • Older Version installs a specific version of Porter.

You can also install and manage mixins and plugins using Porter, and use the Porter VS Code Extension to help author bundles.



We recommend installing v1 of Porter if you are trying out Porter for the first time. Keep in mind that prereleases are not suitable for production workloads. Data migrations will not be provided or supported for prereleases before v1.0.0-beta.1. Prereleases are intended for you to try out new features in Porter and provide feedback about the direction of the feature.

The examples below use a hard-coded version of the prerelease and there may be a newer version available. Set VERSION to the most recent v1 prerelease version number.


export VERSION="v1.0.0-beta.2"
curl -L$VERSION/ | bash


export VERSION="v1.0.0-beta.2"
curl -L$VERSION/ | bash


(New-Object System.Net.WebClient).DownloadFile("$VERSION/install-windows.ps1", "install-porter.ps1")
.\install-porter.ps1 -PORTER_HOME $PORTER_HOME

Running multiple versions

If you have multiple versions of Porter installed on the same machine, you can switch between then by setting the PORTER_HOME environment variable and adding the desired version of Porter to your PATH.


export PORTER_HOME=~/.porterv1
# Check that you are using the desired version of porter
porter version


# Check that you are using the desired version of porter
porter version


Install the most recent stable v0 release of porter and the exec mixin.

Latest MacOS

curl -L | bash

Latest Linux

curl -L | bash

Latest Windows

You will need to create a PowerShell Profile if you do not have one.

iwr "" -UseBasicParsing | iex


Install the most recent build of Porter v0 and the exec mixin.

This saves you the trouble of cloning and building porter and its mixin repositories yourself. The build may not be stable but it will have new features that we are developing.

Canary MacOS

curl -L | bash

Canary Linux

curl -L | bash

Canary Windows

You will need to create a PowerShell Profile if you do not have one.

iwr "" -UseBasicParsing | iex

Older Version

Install an older version of porter, starting with v0.38.0. Porter v1.0.0+ only installs porter and the exec mixin. Older versions of Porter installed more mixins by default.

If you need a specific version of a mixin, use the --version flag when installing the mixin.

See the porter releases page for a list of older porter versions. Set VERSION to the version of Porter that you want to install.

Older Version MacOS

curl -L$VERSION/ | bash

Older Version Linux

curl -L$VERSION/ | bash

Older Version Windows

You will need to create a PowerShell Profile if you do not have one.

iwr "$VERSION/install-windows.ps1" -UseBasicParsing | iex


We have a number of mixins to help you get started. Only the exec mixin is installed with Porter v1.0.0+, other mixins should be installed separately.

You can update an existing mixin, or install a new mixin using the porter mixin install command:

$ porter mixin install terraform
installed terraform mixin v0.3.0-beta.1 (0d24b85)

All the Porter-authored mixins are published to


We have a couple plugins which extend Porter and integrate with other cloud providers and software.

You can update an existing plugin, or install a new plugin using the porter plugin install command:

$ porter plugin install azure --version canary
installed azure plugin v0.1.1-10-g7071451 (7071451)

All the Porter-authored plugins are published to

Install Script Parameters

The installation scripts provide the following parameters. Parameters can be specified with environment variables for the macOS and Linux scripts, and on Windows they are named parameters in the script.


Location where Porter is installed (defaults to ~/.porter).

Posix Shells

export PORTER_HOME=/alt/porter/home


iwr REPLACE_WITH_INSTALL_URL -OutFile install-porter.ps1 -UseBasicParsing
.\install-porter.ps1 -PORTER_HOME C:\alt\porter\home


Base URL where Porter assets, such as binaries and atom feeds, are downloaded. This lets you set up an internal mirror. Note that atom feeds and index files should be updated in the mirror to point to the mirrored location. Porter does not alter the contents of these files.

Posix Shells



iwr REPLACE_WITH_INSTALL_URL -OutFile install-porter.ps1 -UseBasicParsing
.\install-porter.ps1 -PORTER_MIRROR

URL Structure

Configuring a mirror of Porter’s assets is out of scope of this document. Reach out on the Porter mailing list for assistance.

Below is the general structure for Porter’s asset URLs:

  - install-windows.ps1
  - atom.xml
  - index.json
  - atom.xml
  - index.json

Command Completion

Porter provides autocompletion support for Bash, Fish, Zsh, and PowerShell.

If you use Bash the completion script depends on Bash v4.1 or newer and bash-completion v2.

The default version for macOS is Bash v3.2 and bash-completion v1. The completion command will not work properly with these versions. The Kubernetes project has detailed information for upgrading Bash and installing bash-completion here.

Initial Setup

The initial setup is to generate a completion script file and have your shell environment source it when you start your shell.

The completion command will generate its output to standard out and you can capture the output into a file. This file should be put in a place where your shell reads completion files.

An example for Bash:

porter completion bash > /usr/local/etc/bash_completion.d/porter

Once your completion script file is in place you will have to source it for your current shell or start a new shell session.

Completion Usage

To list available commands for Porter, in your terminal run

$ porter [tab][tab]

To find a specific command that starts with bu

$ porter bu[tab][tab]

build    bundles

Commands that have sub-commands will be displayed with completions as well

$ porter credentials [tab][tab]

delete    edit    generate    list    show

Note: Completion commands are available for Porter’s built in commands and flags, future plans include dynamic completion for your project.