Automate your dev environment.

mstrap is a development machine provisioning tool that will save you hours of manual setup and tweaking.

mstrap run

Ready to run out of the box.

With zero external runtime dependencies, there's nothing to install before bootstrapping your machine.

You can even bootstrap with a remote config file via HTTPS.

Built on the shoulders of giants.

Uses strap or strap-linux for OS & dotfiles bootstrapping, asdf-vm or mise to manage language runtimes, and tools you're already using, such as Homebrew for package management, and Docker for managing services.

Fast & Idempotent.

mstrap is written in Crystal, so it's fast as can be, and can be run (and re-run) whenever you have a few free minutes to keep your environment up-to-date.

Managed Profiles

Track your configuration in Git and compose profiles to reuse common configurations across machines or teams.

Read docs on config.hcl →
version = "1.0"

user {
  name = "Max Fierke"
  email = "max@example.com"
  github = "maxfierke"
}

profile "personal" {
  url = "ssh://git@github.com/maxfierke/mstrap-personal.git"
}

profile "work" {
  url = "ssh://git@github.com/maxfierke/mstrap-work.git"
}

Convention over Configuration

Define as little as needed about your projects and let mstrap detect what it needs to do, and configure when you need to diverge from the defaults.

mstrap uses HCL for more expressive configuration.

Read docs on profile.hcl →
runtime "ruby" {
  package "bundle-audit" {}
}

runtime "node" {
  package "pnpm" {}
  package "release-it" {}
}

runtime "rust" {
  package "ripgrep" {
    version = "14.1.0"
  }
}

project "my-cool-project" {
  name = "My Cool Project"
  repo = "ssh://git@github.com:maxfierke/my-cool-project.git"
}

project "simple-rails-project" {
  name = "Simple Rails Project"
  port = 5000
  repo = "ssh://git@github.com:maxfierke/simple-rails-project.git"
}