Easily set up your OS X from scratch.
Switch branches/tags
Clone or download
Pull request Compare This branch is 30 commits ahead of matthewmueller:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



Easily set up your OS X from scratch.

macstrap is a command line tool to simplify the initial setup or the reinstallation of command line tools and GUI applications in OS X. To install and keep them up to date macstrap uses homebrew for the command line tools and homebrew cask for the GUI applications.

When a reinstallation of an already setup OS X is needed then macstrap is able to first store the configuration of the configured applications for example in a dropbox folder, on an external hard drive, etc. to be able to restore it again when the OS X is reinstalled. This saves you time and additionally you have a backup of your application configurations. Underneath macstrap uses mackup to store and retrieve the configurations again. Please check the projects site to see what it is able to backup for you.

#Table of contents


macstrap has been tested on OS X 10.13+ and therefore this is needed as requirement. It is possible that it also works with earlier versions of OS X but this is not supported.

Installation and update

First read the Configuration section as it is important how you want to configure macstrap. Also have a look at the Migrating the configuration section before you update such that everything is still working properly with the new version of macstrap. After that you can install or update macstrap by executing the following line.

mkdir -p /tmp/macstrap && cd /tmp/macstrap && curl -L https://github.com/guylabs/macstrap/archive/master.tar.gz | tar zx --strip 1 && bash ./install.sh && rm -rf /tmp/macstrap && cd ~

This will install macstrap to the /usr/local/lib folder and create proper symlinks in the /usr/local/bin folder such that you are easily able to execute the macstrap command from the command line. It will also install the following required applications:

  • The OS X command line tools which macstrap needs for Git
  • homebrew to install the command line tools.
  • homebrew cask to install the GUI applications.

When you are asked to select how to configure macstrap choose the default option, or use your custom configuration.

If you already have macstrap installed the install script will replace the old version and keep your configurations.

When done exeute macstrap install to install the command line tools and GUI applications, based on the configuration set above.


macstrap is configured with a so called "configuration GIT repository" to enable versioning (tagging and branching) of the configuration. While installing macstrap you will be asked how to configure macstrap and are able to select the default configuration which I use or point to a GIT repository where your custom configuration resides.

Please have a look at the following sections to see what the default configuration contains and how to create a custom configuration.

Default configuration

The default macstrap configuration resides in the macstrap-config GIT repository. This repository is built up with the needed structure and contains all required default scripts and configurations which I use for my setup.

Please have a look at the macstrap.cfg to see which apps, command line tools etc. will be installed if you choose the default configuration.

Custom configuration

If you want to create a custom configuration please follow these steps:

  1. Fork the macstrap-config repository as this also serves as template configuration repository.
  2. Checkout the README.md files in each folder to see how to customize your configuration and have a look at the default scripts how they are built up.
  3. When you finished the customizations then please commit and push the changes to your repository.
  4. When you now install macstrap then please choose to select your own GIT repository and then point to the HTTPS clone URL of your customized configuration repository.

Migrating the configuration

When you upgrade to a newer version of macstrap then please check the changes done in the default macstrap-config GIT repository and adapt it with your version. You can easily compare the two repositories as you did a fork of the default one. This way you can easily merge the changes and update your custom repository.


macstrap offers several commands which are used to install or update the system. The following sections describe all available commands.


This command will execute the install.sh of the defined configuration repository. In the default configuration it will install all GUI applications and command line tools which are defined in the macstrap-config repository.


This command will execute the update.sh of the defined configuration repository. In the default configuration it will update all GUI applications and command line tools to the latest available version with the help of homebrew and homebrew cask.


This command will download the newest master version of macstrap and execute the install.sh script to update macstrap.


This command will execute the backup.sh of the defined configuration repository. In the default configuration it will use mackup to backup the configurations.


This command will execute the restore.sh of the defined configuration repository. In the default configuration it will use mackup to restore the configurations.


macstrap itself is a fork of the dots project which has the base functionality to install and update the command line tools and the GUI applications. So please also have a look at this project if you also need a similar functionality for Ubuntu. At this point I want to thank Matthew for his nice work.


macstrap is available under the MIT license.

(c) Matthew Mueller - Forked project (https://github.com/matthewmueller/dots) (c) Modifications by Guy Brand