StackUp: One Command to Rule Your Dev Environment
The Problem
I swapped hard drives between my PC and my brother's gaming rig for the reason I lost interest in graphical game ( except one ) and AI experements giving my brother's the high-end PC and using the OK one. Bad idea. Windows wouldn't even let me log in without a full reset.
As I reinstalled Git, Node, Docker, and everything else for the third time that month for different machine as I setup new environments for experementation in my home lab, I thought: there has to be a better way.
The Solution
StackUp lets you define your entire development environment in a single YAML file and install it with one command across Windows, Linux, and macOS.
profile: web-dev
tools:
- name: git
version: latest
linux:
package_names:
apt: git
macos:
brew: git
windows:
package_names:
winget: Git.Git
- name: node
version: "20.x"
dependencies: ["git"]
Run it:
./stackup install dev.yaml
That's it. StackUp detects your OS, allow you to pick the right package manager ( for each tool ), and installs everything in the correct order.
What Makes It Different
Cross-platform by design. Define once, run on any OS. No more maintaining separate setup scripts for Windows, Mac, and Linux.
Smart dependency handling. Need WSL before Docker on Windows? StackUp figures it out.
Complex installations made simple. Multi-step installs, pre/post hooks, and custom commands for tools that don't play nice with package managers.
Package managers built in. Works with choco or winget for windows, apt, dnf, pacman for linux.
Use Cases
New machine setup. New hire onboarding. Team environment standardization. Moving between personal and work machines.
Instead of a 10-page wiki with screenshots, your team gets a single YAML file they can trust.
A Word of Caution
StackUp runs installations with elevated privileges. It can execute any command you put in your config file.
Never run a config file you haven't reviewed yourself.
I recommend teams store configs in Git and review them like any other infrastructure code ( Following GitOps approach). Don't pass YAML files around in Slack.
What's Next
I'm working on better security guardrails, an interactive config builder, and proper update/rollback commands. But I wanted to ship this now and get feedback from real users.
The code is open source under MIT. Try it out, break it, tell me what's missing.
GitHub: github.com/araldhafeeri/stackup
Would love to hear what you think. Does this solve a problem you have? What would make it more useful?
Best,
Ahmed
Top comments (0)