Distribute a Mixin

Once you have created a mixin, it is time to share it with others so that they can try it out and use it too. Porter has built-in commands for managing mixins. All you need to do is get your mixin ready, and publish them to a file server:


Your mixin should be compatible with the following architectures and operating systems:

  • GOOS: windows, linux, darwin
  • GOARCH: amd64

If you are creating your mixin in Go, you may find the Makefile that we use for our DeisLabs mixins helpful as a starting point.


Porter expects mixins to be published with a specific naming convention:

  • runtime: VERSION/MIXIN-linux-amd64

* Note: Porter uses GOOS and GOARCH which are terms from the Go programming language, because it is written in Go. You must use the same terms, for example darwin and not macos, in order to Porter to recognize your mixin properly.

Here is an example from the exec mixin:

base url/
└── v0.4.0-ralpha.1+dubonnet
    ├── exec-darwin-amd64
    ├── exec-linux-amd64
    └── exec-windows-amd64.exe

If you are distributing your mixing via Github releases, upload just the mixin executables as artifacts to a release named after the mixin version, and it will match exactly what Porter expects. Then provide the following URL to your users, https://github.com/org/project/releases/download.


When porter installs a mixin, it builds a url from the command-line arguments:

porter mixin install NAME --version VERSION --url URL
  • runtime url: URL/VERSION/NAME-linux-amd64

When --version is not specified, it is defaulted to latest which should represent the most recent version of the mixin.

You may also choose to publish canary versions of the mixin, which are unpublished builds from the master branch. Porter and the official DeisLabs mixins follow this pattern. If you have other published tagged builds of your mixin, porter can handle installing them as well.