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.
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.
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.
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"
}
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"
}