mstrap v0.3.1

Machine Bootstrapping tool with a focus on sensible defaults, conventions, and avoidance of vendoring
  • v0.3.1 - March 29, 2021
  • v0.2.8 - January 17, 2021
  • v0.2.7 - December 8, 2020
  • v0.2.6 - December 7, 2020
  • v0.2.5 - December 7, 2020


mstrap (short for "machine bootstrap") is a tool for provisioning and managing a development environment. It is a convention-over-configuration tool, which aims to leverage existing ecosystem tools to provide a one-command provisioning experience for a new machine.

The approach is inspired by the chirpstrap tool built at Iora Health, but is built and maintained in my personal capacity and is not associated with Iora Health.


  • Run on a new machine with no development tools installed
  • Leverage existing ecosystem tools, when possible
    • Avoid vendoring or overriding tool defaults
  • Hook into standard scripts-to-rule-them-all
    • Currently hooks into a project's script/bootstrap and script/setup
  • Eventually: leverage mruby for user-defined extensions written in Ruby, such as environment migrations.

mstrap is wholly centered around proving a no-runtime-dependency (other than normal system libraries) approach and will always remain a tool designed around being possible to run immediately after taking a new machine out of its box, and finishing the OS setup.

Installation & Usage

Please refer to the documentation site for documentation


  1. Install dependencies
  • macOS: brew install crystal libevent pcre openssl@1.1
  • Debian/Ubuntu:
    1. Install Crystal
    2. sudo apt install libevent-dev libpcre3-dev libreadline-dev libssl-dev patchelf
  1. git clone
  2. make
  3. bin/mstrap will be created

Building multi-arch

To build multi-arch, you'll need to configure Docker to enable BuildKit-based multi-arch support, and register the proper binfmt handlers to run ARM binaries through QEMU.

On Ubuntu 20.04, this can be done via the following:

$ sudo apt install --no-install-recommends qemu-user-static binfmt-support
$ docker run --privileged --rm tonistiigi/binfmt --install arm64,arm
$ sudo systemctl restart docker.service


  1. Fork it (
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request


github statistic
  • 3
  • 0
  • 0
  • 2
  • 11 days ago
  • January 10, 2019

MIT License

Synced at

Mon, 19 Apr 2021 11:31:54 GMT