A macOS app that automates developer environment setup. Define your tools in a YAML config, share it with your team, and get everyone to a working setup in minutes.
- You write a
.onboardfile listing your dependencies and apps - Someone opens it (drag-and-drop, double-click, or paste a URL)
- They see what's installed, what's missing, and install with one click
No more "clone the repo and follow the README" where half the steps are outdated.
name: "My Team Setup"
description: "Everything needed for frontend development"
dependencies:
- id: homebrew
name: Homebrew
desc: Package manager for macOS
check: which brew
install: '/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"'
- id: node
name: Node.js
desc: JavaScript runtime
check: which node
install: brew install node
depends_on: homebrew
apps:
- id: vscode
name: VS Code
desc: Code editor
check: ls /Applications/Visual\ Studio\ Code.app
install: brew install --cask visual-studio-code
depends_on: homebrewEach item needs:
id— unique identifiername— display namecheck— shell command that succeeds (exit 0) if installedinstall— shell command to install it
Optional:
desc— short descriptiondepends_on— id of another item that must be installed firsticon_img— URL or filename inassets/icon_bg— hex color for icon background
cd electron
npm install
npm run devcd electron
npm run packageOutput goes to electron/dist/. Requires macOS and valid code signing credentials for distribution.
Vanilla Electron. No frameworks, no build step, no TypeScript.
electron/
├── main.js # Main process — window, IPC, shell execution
├── preload.js # Bridge — exposes window.onboard API
├── renderer.js # UI — state, rendering, user interactions
├── index.html # Structure
├── styles.css # Styles
└── examples/ # Sample .onboard configs
The renderer never touches Node directly. All shell commands go through IPC to the main process.
When you click "Install":
- The app runs your
installcommand viaspawn('/bin/bash', ['-c', command]) - Output streams to an inline terminal (or pop-out window)
- When done, it runs your
checkcommand to verify success - If check passes, the item shows as installed with version info
The app respects depends_on ordering — you can't install Node before Homebrew.
See CONTRIBUTING.md.
MIT — see LICENSE.