Snapshot

Capture your current Mac’s dev environment and turn it into a shareable config — without building anything from scratch.

openboot snapshot

Don’t have openboot yet? Run the installer with the snapshot subcommand:

curl -fsSL https://openboot.dev/install.sh | bash -s -- snapshot

What it captures

CategoryWhat’s scannedHow
Homebrew formulaeTop-level CLI tools (not dependencies)brew leaves
Homebrew casksInstalled GUI appsbrew list --cask
Homebrew tapsThird-party repositoriesbrew tap
NPM globalsGlobally installed npm packagesnpm list -g
macOS preferencesWhitelisted developer settingsCurated list
Shell configOh-My-Zsh theme and plugins.zshrc parsing
Git configuser.name, user.email, editor, default branch~/.gitconfig
Dev toolsGo, Node, Python, Rust, Java, Ruby, DockerVersion detection

Only whitelisted data is captured. No SSH keys, API tokens, .env files, or credentials — ever.

How it works

1. Scan. OpenBoot scans your system with real-time progress:

✓ Homebrew Formulae    28 found
✓ Homebrew Casks       12 found
✓ macOS Preferences     9 found
✓ Shell Environment     scanned
✓ Git Config            scanned

2. Review (TTY only). A full-screen TUI editor lets you customize what’s included:

  • Tabs: Formulae, Casks, NPM Packages, macOS Preferences
  • Space to toggle items on/off
  • / to search, a to select all in a category
  • Taps, Shell, Git, and Dev Tools are shown as read-only

3. Choose a destination. Either via flag or the interactive menu.

Destinations

Flags decide where the snapshot goes. Without flags, behavior depends on whether stdout is a TTY.

CommandResult
openboot snapshot (TTY)Interactive editor, then a menu to save locally / publish / both
openboot snapshot (piped)JSON to stdout
openboot snapshot --localSave to ~/.openboot/snapshot.json
openboot snapshot --publishUpload to openboot.dev
openboot snapshot --local --publishSave and upload
openboot snapshot --jsonJSON to stdout (explicit)

Piping

Since a piped stdout auto-switches to JSON, you can script around snapshots without extra flags:

openboot snapshot | jq '.packages.formulae'
openboot snapshot > my-setup.json

Publishing

--publish uploads directly, no interactive menu:

openboot snapshot --publish
  • If the machine is already synced to a config (from a previous install), --publish updates that config in place — no prompts for name/description/visibility.
  • Otherwise you’re asked for a name and visibility, then a new config is created.

Target an existing config by slug:

openboot snapshot --publish --slug my-config

After upload, you get a one-line install command:

curl -fsSL openboot.dev/yourname/my-setup | bash

Restoring from a snapshot

Use --import to apply a snapshot to the current Mac:

openboot snapshot --import ~/.openboot/snapshot.json
openboot snapshot --import https://example.com/snapshot.json
openboot snapshot --import my-setup.json --dry-run

Before installing, a review editor lets you deselect anything you don’t want. If the snapshot is partial (some capture steps failed), you’ll be warned.

CategoryWhat’s applied
Homebrew formulaebrew install
Homebrew casksbrew install --cask
Homebrew tapsbrew tap
NPM globalsnpm install -g
Git configgit config --global for name/email — skipped if both are already set
Shell configOh-My-Zsh theme and plugins written to .zshrc — only if Oh-My-Zsh was captured
macOS preferencesdefaults write for each captured preference

Flags

FlagWhat it does
--localSave to ~/.openboot/snapshot.json
--publishUpload to openboot.dev
--slug <slug>Target an existing config by slug (with --publish)
--jsonOutput JSON to stdout
--dry-runPreview without saving, uploading, or installing
--import <path>Restore from a local file or URL

Privacy & safety

Snapshots are designed to be safe to share:

  • Paths sanitized — home directory references replaced with ~/
  • Whitelisted preferences only — no arbitrary system data is read
  • No secrets captured — SSH keys, tokens, credentials never included
  • Full control — you review and deselect anything before uploading

See Config Options for the full list of macOS preferences that can be captured.