mstrap is a development machine provisioning tool that will save you hours of manual setup and tweaking.
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.
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.
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"
}