> docs/ reference

Config Options

Every OpenBoot config β€” whether created from a preset, a snapshot, or the dashboard β€” follows the same structure. Here’s what each field does.

Full Example

{
  "name": "frontend-team",
  "description": "Standard setup for our frontend developers",
  "base_preset": "developer",
  "packages": [
    { "name": "node", "type": "formula" },
    { "name": "pnpm", "type": "formula" },
    { "name": "ripgrep", "type": "formula" },
    { "name": "visual-studio-code", "type": "cask" },
    { "name": "arc", "type": "cask" },
    { "name": "typescript", "type": "npm" },
    { "name": "homebrew/cask-fonts", "type": "tap" }
  ],
  "custom_script": "mkdir -p ~/projects\ngit clone git@github.com:yourorg/main-repo.git ~/projects/main-repo",
  "dotfiles_repo": "https://github.com/yourorg/team-dotfiles.git",
  "snapshot": null,
  "alias": "fe",
  "visibility": "unlisted"
}

Fields

name

Display name for the config. Used as the page title and in the dashboard.

  • Type: string
  • Required: yes
  • Example: "frontend-team"

description

Optional description shown on the config page.

  • Type: string
  • Required: no
  • Example: "Standard setup for our frontend developers"

base_preset

Which preset to start from. The preset’s packages are included unless individually removed.

  • Type: string
  • Options: "minimal", "developer", "full"
  • Required: no
  • Default: "developer"

packages

The tools and apps to install. Stored as an array of package objects, each with a name and type.

  • formula β€” CLI tools installed via brew install
  • cask β€” GUI apps installed via brew install --cask
  • npm β€” Global npm packages installed via npm install -g
  • tap β€” Third-party Homebrew repositories added via brew tap

Each entry is an object: { "name": "package-name", "type": "formula" | "cask" | "npm" | "tap" }. Names must match Homebrew or npm package names exactly. Taps are added before formulae and casks are installed.

Limits: max 500 packages per config; name max 200 characters (alphanumeric, ., _, -, @, /).

custom_script

Shell commands that run after all packages are installed. Use this for project-specific setup like cloning repos, generating SSH keys, or configuring services.

  • Type: string (newline-separated commands)
  • Required: no
  • Max length: 10,000 characters
  • Runs as: bash (errors are logged but don’t stop the install)
mkdir -p ~/projects
git clone git@github.com:yourorg/api.git ~/projects/api
ssh-keygen -t ed25519 -C "dev@yourcompany.com" -f ~/.ssh/id_ed25519 -N ""

dotfiles_repo

Git URL to a dotfiles repository. OpenBoot clones it to ~/.dotfiles and optionally symlinks with GNU Stow.

  • Type: string (HTTPS Git URL)
  • Required: no
  • Max length: 500 characters
  • Must: start with https://. ssh:// and git@ URLs are rejected.
  • Example: "https://github.com/yourname/dotfiles.git"

See Dotfiles & Shell for setup details.

snapshot

Snapshot data attached to this config (auto-populated when creating from openboot snapshot). Contains the raw scan results β€” packages, preferences, shell config, git settings, dev tool versions.

  • Type: object or null
  • Required: no
  • Usually: managed automatically, not edited by hand

Each entry in snapshot.macos_prefs[] has the shape { domain, key, value, type?, host? }. host selects the defaults scope: "" (default) writes to the main domain, "currentHost" writes via defaults -currentHost (required for keys under ~/Library/Preferences/ByHost/).

alias

Short URL alias for easy sharing. If set, this alias becomes the primary way to install the config β€” for example, openboot install my-setup instead of openboot install username/slug. The alias also works as a short URL: openboot.dev/my-setup.

When a user runs openboot install <word>, the CLI checks aliases first before falling back to username/default.

  • Type: string
  • Required: no
  • Length: 2–20 characters (after cleaning)
  • Allowed characters: lowercase letters, digits, hyphens. Other characters are stripped automatically.
  • Must be: unique across all configs
  • Reserved: api, install, dashboard, login, docs, cli-auth, explore

visibility

Controls who can see and install this config.

  • Type: string
  • Default: "unlisted"
  • Options:
    • "public" β€” listed on your profile, install URL works for everyone
    • "unlisted" β€” not listed on your profile, but install URL still works if shared
    • "private" β€” only you can access. Run openboot login first, then openboot install yourname/slug

Export

You can export any config as a JSON file from the dashboard. Click the Export button on a config card to download a .json file containing all config data (name, packages, custom script, dotfiles repo, snapshot, visibility, and alias).

macOS Preferences Whitelist

These are the system settings that OpenBoot can configure. Only these are captured by openboot snapshot and applied during install. In the dashboard, preferences are grouped into collapsible accordion sections by category.

System

SettingDescriptionDefault
Show all file extensionsShow extensions for all fileson
Always show scrollbarsAlways visible, not just on scrollAlways
Disable auto-correctTurn off automatic spelling correctionoff
Disable auto-capitalizationTurn off automatic capitalizationoff
Fast key repeat rateHow fast keys repeat when held β€” lower = faster (KeyRepeat)2
Short delay until key repeatHow long before a held key starts repeating (InitialKeyRepeat)15

Finder

SettingDescriptionDefault
Show path barFull folder path at bottom of windowson
Show status barItem count and disk space at bottom of windowson
Show sidebarShow sidebar in Finder windowson
Show tab barShow tab bar in Finder windowson
Show preview paneShow preview pane in Finder windowsoff
Default view styleHow files display in new windows (Nlsv=list, icnv=icon, clmv=column, glyv=gallery)list
Show hidden filesShow files and folders starting with a doton
Show full POSIX path in titleDisplay full path in window title baron
No extension change warningSuppress the warning when changing a file extensionon
Default search scopeWhere Finder searches by default (SCcf=current folder, SCev=This Mac)Current folder
Keep folders on top (name sort)Folders sorted before files when sorting by nameon
Keep folders on top (Desktop)Folders sorted before files on the Desktopon
Don’t warn before emptying TrashSkip confirmation dialog when emptying Trashon
Remove Trash items after 30 daysAuto-purge items in Trash older than 30 dayson
Allow quitting Finder (⌘Q)Enable Quit menu item for Finderon
New window targetDefault location for new Finder windows (PfHm=Home, PfDe=Desktop, PfDo=Documents, PfLo=custom path)Home
New window custom pathCustom path when target is PfLoβ€”
Show external drives on DesktopShow mounted external hard drives on Desktopon
Show internal hard drives on DesktopShow internal drives on Desktopoff
Show servers on DesktopShow mounted network servers on Desktopoff
Show removable media on DesktopShow USB drives etc. on Desktopon
Show recent tags in sidebarShow recent tags in Finder sidebaron
No .DS_Store on network volumesSuppress .DS_Store files on network shareson
No .DS_Store on USB volumesSuppress .DS_Store files on USB driveson

Dock

SettingDescriptionDefault
Auto-hide DockAutomatically hide and show the Dockoff
Show recent appsShow recently used apps in a separate Dock sectionoff
Icon sizeDock icon size in pixels48
Minimize animationVisual effect when minimizing windows (scale or genie)scale

Screenshots

SettingDescriptionDefault
Screenshot save locationFolder where screenshots are saved~/Screenshots
Screenshot formatFile format for screenshots (png, jpg, pdf, tiff)png
Disable window shadowsRemove drop shadows from window screenshotson

Trackpad

SettingDescriptionDefault
Tap to click (wired)Tap the trackpad to click instead of pressing downon
Tap to click (Bluetooth)Same setting for Bluetooth trackpadson
Three-finger dragDrag windows and items using three fingerson

Keyboard

SettingDescriptionDefault
Use F1–F12 as standard function keysFn key not required to use function keyson

Mission Control

SettingDescriptionDefault
Don’t auto-rearrange SpacesKeep Spaces order fixed instead of reordering by recent useon
Group windows by applicationGroup windows by app in Mission Controlon
Top-left hot cornerAction when cursor hits top-left corner (0 = disabled)0
Top-right hot cornerAction when cursor hits top-right corner (0 = disabled)0
Bottom-left hot cornerAction when cursor hits bottom-left corner (0 = disabled)0
Bottom-right hot cornerAction when cursor hits bottom-right corner (0 = disabled)0
Top-left hot corner modifierModifier key for top-left corner (0 = none)0
Top-right hot corner modifierModifier key for top-right corner (0 = none)0
Bottom-left hot corner modifierModifier key for bottom-left corner (0 = none)0
Bottom-right hot corner modifierModifier key for bottom-right corner (0 = none)0
SettingDescriptionDefault
Show Sound in menu barShow/hide Sound iconon
Show Bluetooth in menu barShow/hide Bluetooth iconon
Show Wi-Fi in menu barShow/hide Wi-Fi iconon
Show Battery in menu barShow/hide Battery iconon
Hide AirDrop from menu barHide AirDrop iconon
Hide Display from menu barHide Display iconon
Hide Focus Modes from menu barHide Focus Modes iconon
Hide Now Playing from menu barHide Now Playing iconon
Hide Screen Mirroring from menu barHide Screen Mirroring iconon
Sound always-show mode3-way dropdown: 18 = Always Show, 2 = Show When Active, 8 = Don’t Show (written to ByHost scope on Sequoia)18 (Always Show)

Security

SettingDescriptionDefault
Require password after sleepAsk for password after sleep or screen saver beginson
No password delayRequire password immediately (no grace period)on

Desktop & Stage Manager

SettingDescriptionDefault
Click wallpaper to show desktopfalse = only reveals desktop while Stage Manager is active (Sonoma+ default); true = always reveals desktop (pre-Sonoma)off