From 2af5adfbe637e3b776c930639e6bf6d363b8cb5c Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 19 Apr 2026 12:44:56 +0000 Subject: [PATCH] docs: update docs to OpenBoot v1.0 CLI surface OpenBoot v1.0 narrowed the CLI to install + snapshot and removed 13 commands (pull, push, diff, clean, log, restore, init, setup-agent, doctor, update, list, edit, delete). This aligns the docs with the new surface: - Rewrite cli-reference.md around install/snapshot/login/version; document positional source resolution, add-only install, sync-source resume, and snapshot --publish/--slug. - Rewrite env-vars.md: drop OPENBOOT_DOTFILES, OPENBOOT_API_URL, OPENBOOT_DISABLE_AUTOUPDATE, OPENBOOT_INSTALL_DIR, OPENBOOT_SKIP_CHECKSUM, and stale file-location paths. - Rewrite snapshot.md: document --publish, --slug, TTY/pipe behavior, and that shell capture now actually populates. - Rewrite quick-start.md and faq.md: drop openboot update --self, add the "running again" sync flow, clarify that install is add-only. - Delete openboot-yml.md (openboot init was removed with no replacement). - Switch openboot --preset/--shell/--dotfiles/--macos examples to the openboot install -p/--shell/... forms in presets.md and dotfiles-shell.md. - Update llms.txt/llms-full.txt to match. --- src/docs/cli-reference.md | 445 +++++++++---------------------------- src/docs/dotfiles-shell.md | 8 +- src/docs/env-vars.md | 49 ++-- src/docs/faq.md | 61 ++--- src/docs/openboot-yml.md | 155 ------------- src/docs/presets.md | 16 +- src/docs/quick-start.md | 57 +++-- src/docs/snapshot.md | 127 +++++++---- static/llms-full.txt | 126 ++++++----- static/llms.txt | 2 +- 10 files changed, 352 insertions(+), 694 deletions(-) delete mode 100644 src/docs/openboot-yml.md diff --git a/src/docs/cli-reference.md b/src/docs/cli-reference.md index 41307f1..b021509 100644 --- a/src/docs/cli-reference.md +++ b/src/docs/cli-reference.md @@ -1,133 +1,135 @@ --- title: CLI Commands -description: Complete reference for all openboot commands — install, snapshot, sync, push, pull, log, restore, list, edit, login, doctor, update, and their flags. +description: Complete reference for the openboot CLI — install, snapshot, login, and their flags. group: Reference order: 9 --- # CLI Commands -All commands for the `openboot` CLI, organized by what you're trying to do. +OpenBoot v1.0 has two real verbs: **`install`** adds things to your Mac, **`snapshot`** captures what's on it. Everything else is auth or bookkeeping. -## Set Up an Environment +``` +openboot # install (resume or interactive) +openboot install [source] # install from preset, file, or cloud config +openboot snapshot # capture your environment +openboot login / logout # openboot.dev auth +openboot version # print version +``` + +> **v1.0 removed these commands:** `pull`, `push`, `diff`, `clean`, `log`, `restore`, `init`, `setup-agent`, `doctor`, `update`, `list`, `edit`, `delete`. OpenBoot no longer uninstalls packages or tracks revision history — `install` is add-only, and `snapshot --publish` overwrites. Manage configs on the [dashboard](/dashboard). See the project [CHANGELOG](https://github.com/openbootdotdev/openboot/blob/main/CHANGELOG.md) for migration. -### `openboot` +## `openboot` / `openboot install` -Launch the interactive TUI installer. Browse packages, toggle what you want, and install. +Install and configure your Mac. `openboot` with no subcommand is identical to `openboot install`. ``` -openboot +openboot install [source] ``` -### `openboot --preset ` +**Behavior with no `[source]` and no flags:** -Start with a preset's packages pre-selected. Available: `minimal`, `developer`, `full`. +- If this machine has a saved sync source (from a previous install), resume it. OpenBoot fetches the config, shows a diff of what's missing, and asks to apply it. +- Otherwise, the interactive TUI opens. + +The sync-source header looks like: ``` -openboot --preset developer +→ Syncing with @alice/dev-setup (last synced 2 days ago) ``` -You can still customize in the TUI. To skip the TUI entirely, add `--silent`. - -### `openboot install ` or `openboot install /` +If the last sync was more than 90 days ago, the header turns yellow as a warning. -Install from a config hosted on openboot.dev. +### Source resolution -If you set an alias for your config in the dashboard, use it directly: +The positional `[source]` argument is identified by pattern: -``` -openboot install myalias -``` +| Input | Resolves to | +|-------|-------------| +| `./path`, `/path`, `../path`, or `*.json` | Local file | +| `user/slug` | openboot.dev cloud config | +| `minimal`, `developer`, `full` | Built-in preset | +| Any other word | openboot.dev alias | -Or use the full username/slug format: +Examples: ``` -openboot install sarah/frontend-team +openboot install # resume last sync (or interactive) +openboot install alice/dev-setup # cloud config by user/slug +openboot install ./backup.json # local config or snapshot file +openboot install developer # built-in preset +openboot install myalias # alias configured on the dashboard +openboot install --dry-run # preview without installing ``` -**Resolution order** for a single word (no `/`): -1. Try as a config alias (set in the dashboard) -2. Fall back to `username/default` config - -Alternatively, use the `--user` flag: `openboot --user myalias` (same effect). +Explicit flags (`--from`, `--user`/`-u`, `-p`/`--preset`) always override the positional argument. -For private configs, run `openboot login` first — the CLI sends your auth token automatically. +For private configs, run `openboot login` first. -### Install Flags +### Install flags | Flag | Description | |------|-------------| | `-p, --preset ` | Use a preset: `minimal`, `developer`, `full` | -| `-u, --user ` | Install from a config hosted on openboot.dev | -| `-s, --silent` | Non-interactive mode — no TUI, no prompts | -| `--dry-run` | Preview what would be installed without installing | -| `--packages-only` | Install packages only, skip shell/macOS/dotfiles config | +| `-u, --user ` | Install from an openboot.dev config | +| `--from ` | Install from a local config or snapshot JSON | +| `-s, --silent` | Non-interactive mode (for CI/automation) | +| `--dry-run` | Preview without installing | +| `--packages-only` | Skip shell, macOS, dotfiles, post-install | | `--shell ` | `install` or `skip` | | `--macos ` | `configure` or `skip` | | `--dotfiles ` | `clone`, `link`, or `skip` | | `--post-install ` | `skip` to skip post-install scripts | +| `--allow-post-install` | Allow post-install scripts in silent mode | | `--update` | Update Homebrew before installing | +| `--verbose` | Debug logging to stderr | + +`install` is **add-only**. It never uninstalls packages or removes settings — if a package is in your local system but not in the config, it stays. To remove packages, run `brew uninstall` directly. -## Set Up a Project Environment +--- -### `openboot init` +## `openboot snapshot` -Read `.openboot.yml` from the current directory and install the declared dependencies, run initialization scripts, and verify the environment is ready. +Capture your Mac's Homebrew packages, npm globals, macOS preferences, shell config (Oh-My-Zsh theme + plugins), git identity, and dev tool versions. ``` -openboot init +openboot snapshot ``` -### `openboot init ` - -Run init against a specific project directory instead of the current one. +### Destination by flag or context ``` -openboot init /path/to/project +openboot snapshot # TTY: interactive menu. Pipe: JSON to stdout. +openboot snapshot --local # save to ~/.openboot/snapshot.json +openboot snapshot --publish # upload to openboot.dev +openboot snapshot --json # JSON to stdout ``` -### Init Flags +Flags combine — `openboot snapshot --local --publish` saves locally **and** uploads. -| Flag | Description | -|------|-------------| -| `--dry-run` | Preview what would be installed and run, without making any changes | -| `-s, --silent` | Non-interactive mode — skip confirmation prompts (for CI/CD) | -| `--update` | Update Homebrew before installing packages | - -See [`.openboot.yml` Reference](/docs/openboot-yml) for the full config schema. - ---- - -## Capture Your Environment - -### `openboot snapshot` - -Scan your Mac's current setup — packages, preferences, shell config, git settings — and upload or save it. +When stdout is not a terminal (e.g. piped), `snapshot` emits JSON automatically: ``` -openboot snapshot +openboot snapshot | jq '.packages.formulae' +openboot snapshot > my-setup.json ``` -### `openboot snapshot --local` - -Save the snapshot to `~/.openboot/snapshot.json` instead of uploading. +### Publishing ``` -openboot snapshot --local +openboot snapshot --publish ``` -### `openboot snapshot --json` +- If this machine is already synced to a config, `--publish` updates that config in place (no prompts for name/description/visibility). +- Otherwise you're asked to name the config and pick visibility, then it's created. -Output the snapshot as JSON to stdout. Useful for piping to `jq` or other tools. +Target a specific existing config by slug: ``` -openboot snapshot --json -openboot snapshot --json | jq '.packages.formulae' +openboot snapshot --publish --slug my-config ``` -### `openboot snapshot --import ` - -Restore a full environment from a snapshot file or URL. Installs packages, applies git identity, shell config (Oh-My-Zsh theme and plugins), and macOS preferences. +### Restoring from a snapshot ``` openboot snapshot --import my-setup.json @@ -135,233 +137,42 @@ openboot snapshot --import https://example.com/snapshot.json openboot snapshot --import my-setup.json --dry-run ``` -A review editor appears before any changes are made, letting you deselect items you don't want. +A review editor appears before any changes are made, so you can deselect items. What gets applied: -### Snapshot Flags +| Category | How | +|----------|-----| +| Homebrew formulae | `brew install` | +| Homebrew casks | `brew install --cask` | +| Homebrew taps | `brew tap` | +| NPM globals | `npm install -g` | +| Git config | `git config --global` (skipped if already set) | +| Shell config | Oh-My-Zsh theme and plugins written to `.zshrc` | +| macOS preferences | `defaults write` per captured preference | + +### Snapshot flags | Flag | Description | |------|-------------| | `--local` | Save to `~/.openboot/snapshot.json` | -| `--json` | Output as JSON to stdout | +| `--publish` | Upload to openboot.dev | +| `--slug ` | Target an existing config by slug (with `--publish`) | +| `--json` | Output JSON to stdout | | `--dry-run` | Preview without saving, uploading, or installing | | `--import ` | Restore from a local file or URL | --- -## Manage Your Remote Config - -These commands work with configs stored on openboot.dev. They follow a git-style mental model: `push` saves your state, `pull` applies the remote to your system, `log` shows history, `restore` rolls back. - -### `openboot push` - -Capture your current system state and upload it to openboot.dev. If a sync source is configured (from a previous `openboot install`), it updates that config silently. Otherwise, an interactive picker lets you choose an existing config to update or create a new one. - -``` -openboot push -``` - -Attach a message to the revision (shown in `openboot log`): - -``` -openboot push -m "before upgrading to Node 22" -``` - -Target a specific config by slug: - -``` -openboot push --slug my-config -``` - -#### Push Flags - -| Flag | Description | -|------|-------------| -| `--slug ` | Push to a specific existing config | -| `-m, --message ` | Revision message saved in history | - ---- - -### `openboot pull` - -Fetch the latest version of your remote config and apply it to your local system. Equivalent to `git pull` — syncs the remote state down to your machine. - -``` -openboot pull -``` - -#### Pull Flags - -| Flag | Description | -|------|-------------| -| `--slug ` | Pull from a specific config | -| `--dry-run` | Preview changes without applying them | -| `-y, --yes` | Auto-confirm all prompts | - ---- - -### `openboot sync` - -Fetch the remote config and show what differs from your local system, then let you selectively apply changes. More granular than `pull` — you choose which packages to install or remove. - -``` -openboot sync -``` - -``` -openboot sync --yes # apply all changes without prompting -openboot sync --dry-run # preview only -``` - -#### Sync Flags - -| Flag | Description | -|------|-------------| -| `--source ` | Sync from a specific config | -| `--dry-run` | Preview without applying | -| `-y, --yes` | Auto-confirm all changes | -| `--install-only` | Only install missing packages, never remove extras | - ---- - -### `openboot diff` - -Show what differs between your local system and your remote config, without applying any changes. - -``` -openboot diff -``` - ---- - -### `openboot list` - -Show all configs in your openboot.dev account. The config currently linked to this machine is marked with `→`. - -``` -openboot list -``` - -``` -=== Configs for fullstackjam === - -→ jam-s-packages Jam's packages [public] - work-mac Work Machine - minimal - -Install: openboot -u fullstackjam/ • Edit: openboot edit --slug • Delete: openboot delete -``` - ---- - -### `openboot edit` - -Pick a config from your account and open it in the browser for editing. Shows an interactive list of your configs — select one to open the edit page on openboot.dev. - -``` -openboot edit -``` - -Skip the picker and open a specific config directly: - -``` -openboot edit --slug my-config -``` - -#### Edit Flags - -| Flag | Description | -|------|-------------| -| `--slug ` | Open a specific config (skips the picker) | - ---- - -### `openboot log` - -Show the revision history for your config. Every `push` automatically saves the previous version as a revision. - -``` -openboot log -``` - -``` -=== Revision history: jam-s-packages === - - rev_abc123 2026-04-10 14:32 26 pkgs before upgrading to Node 22 - rev_def456 2026-04-08 09:15 24 pkgs - rev_ghi789 2026-04-01 11:00 20 pkgs - -Use 'openboot restore ' to roll back to a previous state. -``` - -Up to 10 revisions are kept per config. Oldest are pruned automatically. - -#### Log Flags - -| Flag | Description | -|------|-------------| -| `--slug ` | Show history for a specific config | - ---- - -### `openboot restore ` - -Roll back your config to a previous revision. The current config is automatically saved as a new revision first (so you can always undo). After updating the server config, the changes are applied to your local system via sync. - -``` -openboot restore rev_abc123 -``` - -Preview what would change without applying: - -``` -openboot restore rev_abc123 --dry-run -``` - -Get revision IDs from `openboot log`. - -#### Restore Flags - -| Flag | Description | -|------|-------------| -| `--slug ` | Restore a specific config | -| `--dry-run` | Preview changes without applying them | -| `-y, --yes` | Auto-confirm all prompts | - ---- - -### `openboot delete ` - -Delete a config from your openboot.dev account. - -``` -openboot delete my-config -``` - -Skip the confirmation prompt: - -``` -openboot delete my-config --force -``` - -#### Delete Flags - -| Flag | Description | -|------|-------------| -| `-f, --force` | Skip the confirmation prompt | - ---- - ## Authentication ### `openboot login` -Authenticate with openboot.dev via browser. Required for installing private configs and uploading snapshots. +Authenticate with openboot.dev through your browser. Required to install private configs and to publish snapshots. ``` openboot login ``` -Opens your browser to approve the login. After approval, a token is saved at `~/.openboot/auth.json`. +The token is saved at `~/.openboot/auth.json`. ### `openboot logout` @@ -371,97 +182,41 @@ Remove the stored authentication token from this machine. openboot logout ``` -## Clean Your Environment - -### `openboot clean` - -Compare your current system against a config or snapshot and remove packages not in it. +--- -``` -openboot clean -``` +## `openboot version` -By default, compares against `~/.openboot/snapshot.json`. Use `--from` or `--user` to compare against a different source. +Print the OpenBoot version. ``` -openboot clean --dry-run -openboot clean --user sarah/frontend-team -openboot clean --from my-setup.json +openboot version ``` -**What it removes**: Homebrew formulae, casks, and npm global packages that aren't in your target config or snapshot. Taps are only diffed when the target includes at least one tap; npm is only checked if npm is available on the system. - -### Clean Flags - -| Flag | Description | -|------|-------------| -| `--from ` | Compare against a local snapshot file | -| `--user ` | Compare against a config hosted on openboot.dev | -| `--dry-run` | Preview what would be removed without removing anything | - -**Sources checked in order**: `--from` → `--user` → local snapshot (`~/.openboot/snapshot.json`). - --- -## Maintain Your Environment - -### `openboot doctor` +## Upgrading OpenBoot -Run diagnostic checks — network, disk space, Homebrew health, Git config, shell setup. +OpenBoot no longer has a self-update command. It's installed via Homebrew — use Homebrew to upgrade: ``` -openboot doctor +brew upgrade openboot ``` -``` -✓ Network connectivity -✓ Disk space (48 GB free) -✓ Homebrew installed -✓ Homebrew health -✓ Outdated packages (5 updates available) -✓ Git installed -✓ Git identity -✓ Oh-My-Zsh installed -✓ .zshrc exists - -Suggested fixes: - Run 'openboot update' to upgrade outdated packages - -All checks passed! Your environment is healthy. -``` - -### `openboot update` +OpenBoot also does a lightweight auto-update check when you run `install`. -Update Homebrew and upgrade all installed packages. - -``` -openboot update -openboot update --dry-run -``` +--- -### `openboot update --self` +## Removing packages -Update the OpenBoot binary to the latest version. +OpenBoot doesn't uninstall — by design. To remove a package, run Homebrew directly: ``` -openboot update --self +brew uninstall +brew autoremove # prune orphaned dependencies ``` -### Update Flags - -| Flag | Description | -|------|-------------| -| `--dry-run` | Preview what packages would be updated without upgrading | -| `--self` | Update the OpenBoot binary itself to the latest version | - -### `openboot version` - -Print the current OpenBoot version. - -``` -openboot version -``` +For a history of what was installed on this machine, see `~/.openboot/install_state.json`. --- -See also: [Config Options](/docs/config-options) for the full config schema, and [Environment Variables](/docs/env-vars) for all env vars that control the install script and CLI. +See also: [Config Options](/docs/config-options) for the config schema, [Environment Variables](/docs/env-vars) for env vars, and the project [CHANGELOG](https://github.com/openbootdotdev/openboot/blob/main/CHANGELOG.md) for the full v1.0 migration. diff --git a/src/docs/dotfiles-shell.md b/src/docs/dotfiles-shell.md index 0ad8b25..4f74ec8 100644 --- a/src/docs/dotfiles-shell.md +++ b/src/docs/dotfiles-shell.md @@ -26,7 +26,7 @@ After installation, restart your terminal or run `source ~/.zshrc` to pick up th If you manage your shell config yourself: ``` -openboot --shell skip +openboot install --shell skip ``` ## Dotfiles @@ -50,8 +50,8 @@ Control how OpenBoot handles dotfiles with the `--dotfiles` flag: | `skip` | Don't touch dotfiles | ``` -openboot --dotfiles link -openboot --dotfiles skip +openboot install --dotfiles link +openboot install --dotfiles skip ``` ### Setting Up Your Dotfiles Repo @@ -97,7 +97,7 @@ OpenBoot applies a curated set of developer-friendly macOS settings. These are a If you prefer your current settings: ``` -openboot --macos skip +openboot install --macos skip ``` See [Config Options](/docs/config-options) for the complete list of macOS preferences you can configure. diff --git a/src/docs/env-vars.md b/src/docs/env-vars.md index fe72816..3ea9353 100644 --- a/src/docs/env-vars.md +++ b/src/docs/env-vars.md @@ -1,71 +1,62 @@ --- title: Environment Variables -description: All environment variables for the install script and CLI — version pinning, install directory, Git identity, and more. +description: All environment variables the install script and openboot CLI understand. group: Reference order: 12 --- # Environment Variables -All environment variables that control the install script and the `openboot` CLI. +Every environment variable OpenBoot reads. Short list — v1.0 kept things minimal. -## Install Script Variables +## Install script (`install.sh`) -These are used when running the `curl | bash` install command. The install script installs OpenBoot via Homebrew (`brew install openbootdotdev/tap/openboot`). +Used when you run `curl -fsSL openboot.dev/install.sh | bash`. The script installs OpenBoot via Homebrew (`brew install openbootdotdev/tap/openboot`). | Variable | Description | Default | |----------|-------------|---------| -| `OPENBOOT_VERSION` | Install a specific version instead of latest | Latest release | +| `OPENBOOT_VERSION` | Install a specific version instead of latest | `latest` | | `OPENBOOT_DRY_RUN` | Set to `true` to preview without changes | — | -### Examples - Preview the install script without making changes: ``` OPENBOOT_DRY_RUN=true curl -fsSL https://openboot.dev/install.sh | bash ``` -## CLI Variables +## CLI (`openboot`) -These are used by the `openboot` binary at runtime. +Used by the `openboot` binary at runtime. | Variable | Description | |----------|-------------| -| `OPENBOOT_GIT_NAME` | Git user name — **only read in `--silent` mode** (required if Git isn't configured) | -| `OPENBOOT_GIT_EMAIL` | Git user email — **only read in `--silent` mode** (required if Git isn't configured) | -| `OPENBOOT_PRESET` | Default preset to use (overridden by `--preset` flag) | -| `OPENBOOT_USER` | Default remote config to use (overridden by `--user` flag) | -| `OPENBOOT_DOTFILES` | Dotfiles repository URL (overridden by config's `dotfiles_repo`) | -| `OPENBOOT_API_URL` | Override the API base URL (default: `https://openboot.dev`) | -| `OPENBOOT_DISABLE_AUTOUPDATE` | Set to `1` to disable auto-update checks | - -### Examples +| `OPENBOOT_GIT_NAME` | Git user name — **read only in `--silent` mode** (required if Git isn't already configured) | +| `OPENBOOT_GIT_EMAIL` | Git user email — **read only in `--silent` mode** (required if Git isn't already configured) | +| `OPENBOOT_PRESET` | Default preset. Overridden by `-p` / `--preset` | +| `OPENBOOT_USER` | Default cloud config (alias or `user/slug`). Overridden by `-u` / `--user` | Silent install with Git identity: ``` OPENBOOT_GIT_NAME="Your Name" OPENBOOT_GIT_EMAIL="you@example.com" \ - openboot --preset developer --silent + openboot install --preset developer --silent ``` -Set a default preset so `openboot` always starts with it: +Set a default preset so `openboot install` always starts with it: ``` export OPENBOOT_PRESET=developer -openboot # launches TUI with developer preset pre-selected +openboot install # TUI opens with developer preset pre-selected ``` -## File Locations +## File locations -These aren't environment variables, but useful to know: +Not environment variables, but useful to know. -| Path | What's There | +| Path | What's there | |------|-------------| -| `~/.openboot/auth.json` | Auth token (after `openboot login` or snapshot upload) | +| `~/.openboot/auth.json` | Auth token (after `openboot login` or publishing a snapshot) | | `~/.openboot/snapshot.json` | Local snapshot (when using `--local`) | -| `~/.openboot/config.json` | Auto-update settings | -| `~/.openboot/install_state.json` | Tracks what was installed and when | -| `~/.openboot/state.json` | UI reminder state | -| `~/.openboot/update_state.json` | Auto-update check state | +| `~/.openboot/install_state.json` | What was installed on this machine, and when | +| `~/.openboot/sync_source.json` | The cloud config this machine is synced to | | `~/.dotfiles/` | Cloned dotfiles repo (when configured) | diff --git a/src/docs/faq.md b/src/docs/faq.md index 9a0b6ff..4e61715 100644 --- a/src/docs/faq.md +++ b/src/docs/faq.md @@ -9,7 +9,7 @@ order: 13 ## Is OpenBoot free? -Yes. Free and open source (MIT license). Create configs, snapshot your setup, share with your team—no cost. Team management features (org accounts, access controls) might have paid tiers later. +Yes. Free and open source (MIT license). Create configs, snapshot your setup, share with your team — no cost. Team features (org accounts, access controls) may have paid tiers later. ## Why not just use Homebrew directly? @@ -19,15 +19,15 @@ If you're fine managing those separately, you don't need this. If you'd rather a ## Should I use Homebrew or the one-line installer? -**Use Homebrew** (`brew install openboot`) if you: +**Use Homebrew** (`brew install openbootdotdev/tap/openboot`) if you: - Already have Homebrew installed - Want cleaner updates (`brew upgrade openboot`) -- Prefer package managers and the OpenBoot CLI over ad-hoc scripts +- Prefer package managers over ad-hoc scripts **Use the one-line installer** if you: - Don't have Homebrew yet (it installs Homebrew for you) - Want the absolute fastest setup on a fresh Mac -- Are running in CI/automation environments +- Are running in CI / automation environments Both methods install the exact same binary. @@ -35,16 +35,16 @@ Both methods install the exact same binary. Fair question. Here's how it works: -- Install script is open source—review it at [github.com/openbootdotdev/openboot](https://github.com/openbootdotdev/openboot) +- Install script is open source — review it at [github.com/openbootdotdev/openboot](https://github.com/openbootdotdev/openboot/blob/main/scripts/install.sh) - Hosted on openboot.dev (Cloudflare Workers), served over HTTPS -- Zero telemetry—no analytics, no tracking, nothing phones home +- Zero telemetry — no analytics, no tracking, nothing phones home - Installs OpenBoot via Homebrew (`brew install openbootdotdev/tap/openboot`), which handles integrity verification - You can inspect the script before running it: ```bash curl -fsSL https://openboot.dev/install.sh > install.sh -cat install.sh # Review the script -bash install.sh # Run it after review +cat install.sh +bash install.sh ``` If you prefer, install via Homebrew instead (see above). @@ -54,18 +54,28 @@ If you prefer, install via Homebrew instead (see above). If you share a config publicly on the Explore page, we display an install count. This is **not telemetry** in the traditional sense: - **Anonymous** — we don't track who installed it, only that someone did -- **Opt-in** — only happens when you actively set visibility to "Public" -- **No personal data** — no IP addresses, no user agents, no system info collected -- **Zero tracking** — we don't follow your behavior, clicks, or usage patterns +- **Opt-in** — only happens when visibility is set to "Public" +- **No personal data** — no IP addresses, no user agents, no system info +- **Zero tracking** — no behavior, clicks, or usage patterns -"Zero telemetry" means the OpenBoot CLI never reports back to us. It doesn't track what you install, what commands you run, or any system information. Install counts are simply a counter for configs you chose to share publicly with the community. +"Zero telemetry" means the OpenBoot CLI never reports back to us. It doesn't track what you install, what commands you run, or any system information. Install counts are simply a counter for configs you chose to share publicly. -Think of it like GitHub's star count — it shows popularity, but doesn't track individual users. +Think of it like GitHub's star count — shows popularity, doesn't track individuals. ## What if I already have Homebrew? OpenBoot detects existing Homebrew installs and skips the setup. It also skips already-installed packages — only new ones get installed. Re-running is fast and safe. +## Does OpenBoot uninstall packages? + +No — by design. As of v1.0, OpenBoot is add-only: + +- `openboot install` never removes packages, even if they're not in the config you're installing from +- There is no `openboot clean` or `openboot uninstall` +- To remove something, run Homebrew directly: `brew uninstall ` + +This makes re-running `openboot install` always safe — you never lose packages you added manually. + ## Can I use it without an account? Yes. No account needed for: @@ -76,7 +86,7 @@ Yes. No account needed for: An account (GitHub or Google OAuth) is needed to: -- Upload configs to openboot.dev and share them via URL +- Publish configs to openboot.dev (`openboot snapshot --publish`) - Install private configs (run `openboot login` first) ## How do I update OpenBoot? @@ -85,20 +95,16 @@ An account (GitHub or Google OAuth) is needed to: brew upgrade openboot ``` -Or use the built-in self-update: +OpenBoot also does a lightweight auto-update check when you run `install`. -```bash -openboot update --self -``` +The old `openboot update --self` command was removed in v1.0 — use `brew upgrade` instead. -Your configs, snapshots, and auth tokens are unaffected by updates. +Your configs, snapshots, and auth tokens are unaffected by upgrades. ## How do I uninstall OpenBoot? ### 1. Remove the binary -Both installation methods use Homebrew, so the uninstall is the same: - ```bash brew uninstall openboot brew untap openbootdotdev/tap @@ -110,22 +116,21 @@ brew untap openbootdotdev/tap rm -rf ~/.openboot ``` -This deletes your auth token, local snapshots, install state, and update config. If you want to keep anything, back it up first — see [File Locations](/docs/env-vars#file-locations) for what's in there. +This deletes your auth token, local snapshots, install state, and sync source. See [File Locations](/docs/env-vars#file-locations) for what's in there if you want to keep something. ### 3. Clean up shell config (optional) -If OpenBoot configured your shell, open `~/.zshrc` and remove the block starting with `# OpenBoot additions` — it includes Homebrew init, PATH changes, CLI aliases, and tool integrations. If you're not sure which lines, look for the block between `# OpenBoot additions` and the next blank line or section. +If OpenBoot configured your shell, open `~/.zshrc` and remove the block starting with `# OpenBoot additions` — it includes Homebrew init, PATH changes, CLI aliases, and tool integrations. -If you used dotfiles linking, OpenBoot created `.openboot.bak` backups of your original files. To restore them: +If you used dotfiles linking, OpenBoot created `.openboot.bak` backups of your original files. To restore: ```bash -# Example: restore a backed-up .zshrc mv ~/.zshrc.openboot.bak ~/.zshrc ``` ### 4. Packages and apps (optional) -OpenBoot doesn't remove Homebrew packages or casks when you uninstall it — they're yours to keep. If you want to remove packages that were installed via OpenBoot, use `brew uninstall ` individually. +OpenBoot doesn't remove Homebrew packages when you uninstall it — they're yours to keep. To remove packages installed via OpenBoot, use `brew uninstall ` individually. ## Where is my data stored? @@ -134,7 +139,7 @@ OpenBoot doesn't remove Homebrew packages or casks when you uninstall it — the | Configs & user data | Cloudflare D1 on openboot.dev | | Auth token | `~/.openboot/auth.json` (local) | | Local snapshots | `~/.openboot/snapshot.json` (local) | -| OpenBoot binary | Managed by Homebrew (run `which openboot` to find it) | +| OpenBoot binary | Managed by Homebrew (`which openboot`) | Configs are **unlisted** by default — not listed on your profile, but the install URL works if shared. You can set them to **public** (listed on profile) or **private** (requires authentication to install). See [Custom Configs — Visibility](/docs/custom-configs#visibility) for details. @@ -154,6 +159,6 @@ Not yet. OpenBoot is macOS-only. Linux support is being explored. ## Can I use it with my existing dotfiles? -Yes. Set your dotfiles repo URL in your config and OpenBoot will clone and link it with GNU Stow. See [Dotfiles & Shell](/docs/dotfiles-shell) for details. +Yes. Set your dotfiles repo URL in your config and OpenBoot will clone and link it with GNU Stow. See [Dotfiles & Shell](/docs/dotfiles-shell). Your existing dotfiles repo structure works as-is — OpenBoot doesn't require any special format. diff --git a/src/docs/openboot-yml.md b/src/docs/openboot-yml.md deleted file mode 100644 index 7077630..0000000 --- a/src/docs/openboot-yml.md +++ /dev/null @@ -1,155 +0,0 @@ ---- -title: .openboot.yml Reference -description: Full schema for .openboot.yml — the project-level config used by `openboot init` to install packages, set env vars, and run setup scripts. -group: Reference -order: 11 ---- - -# `.openboot.yml` Reference - -`.openboot.yml` is a project-level config file that tells `openboot init` what to install and how to set up the development environment for a specific project. Commit it alongside your code so everyone on the team gets the same setup with one command. - -## Full Example - -```yaml -version: "1.0" - -brew: - taps: - - homebrew/cask-fonts - packages: - - git - - node@20 - - go - - jq - - ripgrep - casks: - - visual-studio-code - - docker - -npm: - - typescript - - eslint - - prettier - -env: - NODE_ENV: development - API_URL: http://localhost:3000 - -init: - - npm install - - cp .env.example .env - - npm run db:migrate - -verify: - - node --version - - npm --version - - git --version - - docker --version -``` - -## Fields - -### `version` - -Schema version. Currently the only valid value is `"1.0"`. - -- **Type:** string -- **Required:** yes -- **Value:** `"1.0"` - -### `brew` - -Homebrew packages to install. All three sub-fields are optional. - -#### `brew.taps` - -Homebrew taps to add before installing packages. Use this for packages that live outside the default Homebrew registry. - -- **Type:** list of strings -- **Example:** `["homebrew/cask-fonts", "stripe/stripe-cli"]` - -#### `brew.packages` - -Homebrew formulae (CLI tools) to install via `brew install`. - -- **Type:** list of strings -- **Example:** `["git", "node@20", "ripgrep", "jq"]` - -#### `brew.casks` - -Homebrew casks (GUI apps) to install via `brew install --cask`. - -- **Type:** list of strings -- **Example:** `["visual-studio-code", "docker", "tableplus"]` - -### `npm` - -Global npm packages to install via `npm install -g`. Only runs if npm is available on the system. - -- **Type:** list of strings -- **Example:** `["typescript", "eslint", "prettier"]` - -### `env` - -Environment variables to display after packages install. OpenBoot prints these with suggested export commands — it does not write them to any file automatically. - -- **Type:** key-value map -- **Example:** - -```yaml -env: - NODE_ENV: development - DATABASE_URL: postgres://localhost:5432/mydb -``` - -### `init` - -Shell commands to run after packages are installed. Each command runs from the project directory in sequence. Use this for `npm install`, copying config files, running migrations, etc. - -- **Type:** list of strings -- **Runs as:** individual shell commands from the project directory -- **On failure:** init stops at the first failing command - -```yaml -init: - - npm install - - cp .env.example .env - - npm run db:migrate -``` - -### `verify` - -Shell commands to run as a final check. Each command is expected to exit with code 0. All commands run regardless of earlier failures, and results are summarized at the end. - -- **Type:** list of strings -- **On failure:** reports which checks failed but does not undo prior steps - -```yaml -verify: - - node --version - - docker --version - - psql --version -``` - -## Placement - -The file must be named `.openboot.yml` and placed in the project root. When running `openboot init /path/to/project`, OpenBoot looks for `.openboot.yml` at that path. - -## Usage - -```bash -# From the project directory -openboot init - -# From anywhere, pointing at the project -openboot init ~/projects/my-app - -# Preview without installing -openboot init --dry-run - -# Non-interactive (for CI/CD) -openboot init --silent -``` - -See [CLI Commands](/docs/cli-reference#set-up-a-project-environment) for all `openboot init` flags. diff --git a/src/docs/presets.md b/src/docs/presets.md index 25f6475..d9d3bdd 100644 --- a/src/docs/presets.md +++ b/src/docs/presets.md @@ -28,14 +28,14 @@ CLI essentials. Fast and lightweight. **GUI apps:** Warp, Raycast, Maccy, Stats, Rectangle ```bash -openboot --preset minimal +openboot install -p minimal ```
Or use the one-line installer ```bash -curl -fsSL https://openboot.dev/install.sh | bash -s -- --preset minimal +curl -fsSL https://openboot.dev/install.sh | bash -s -- install -p minimal ```
@@ -49,14 +49,14 @@ Default preset. What most developers need without extra stuff you won't use. - **NPM:** typescript, tsx, eslint, prettier, nodemon ```bash -openboot --preset developer +openboot install -p developer ```
Or use the one-line installer ```bash -curl -fsSL https://openboot.dev/install.sh | bash -s -- --preset developer +curl -fsSL https://openboot.dev/install.sh | bash -s -- install -p developer ```
@@ -70,14 +70,14 @@ Complete dev environment. Languages, DevOps, databases, AI tools — all of it. - **NPM:** pm2, serve, vercel, wrangler ```bash -openboot --preset full +openboot install -p full ```
Or use the one-line installer ```bash -curl -fsSL https://openboot.dev/install.sh | bash -s -- --preset full +curl -fsSL https://openboot.dev/install.sh | bash -s -- install -p full ```
@@ -97,13 +97,13 @@ Want `developer` with `kubectl` added? Pick `developer`, then toggle `kubectl` o For scripted installs, use `--silent` to install a preset exactly as defined: ```bash -openboot --preset developer --silent +openboot install -p developer --silent ``` Preview what would be installed first with `--dry-run`: ```bash -openboot --preset developer --dry-run +openboot install -p developer --dry-run ``` See [CLI Reference](/docs/cli-reference) for automation details. diff --git a/src/docs/quick-start.md b/src/docs/quick-start.md index 1ab030e..1de8893 100644 --- a/src/docs/quick-start.md +++ b/src/docs/quick-start.md @@ -9,15 +9,15 @@ order: 2 ## Installation -### One Command +### One command ```bash curl -fsSL https://openboot.dev/install.sh | bash ``` -It installs Xcode Command Line Tools and Homebrew if you don't have them, downloads OpenBoot, and launches the TUI. Everything in one go. +Installs Xcode Command Line Tools and Homebrew if they're missing, downloads OpenBoot via Homebrew, and launches the TUI. -### Already Have Homebrew? +### Already have Homebrew? ```bash brew install openbootdotdev/tap/openboot @@ -26,32 +26,43 @@ openboot The interactive TUI opens and you pick what to install. -## First Run - -After installing, just run: +## First run ```bash openboot ``` -The TUI opens with the `developer` preset selected. **Arrow keys** navigate, **Space** toggles packages, **Enter** confirms your selection. +The TUI opens with the `developer` preset selected. **Arrow keys** navigate, **Space** toggles packages, **Enter** confirms. Homebrew starts installing — usually 10–30 minutes depending on what you picked. -Homebrew starts installing everything. This takes 10-30 minutes depending on what you picked. After it finishes, restart your terminal or run: +When it finishes, restart your terminal or run: ```bash source ~/.zshrc ``` -Want a different preset? Pass it with `--preset`: +Want a different preset? Pass it with `-p`: ```bash -openboot --preset minimal # Bare essentials -openboot --preset full # Everything +openboot install -p minimal # CLI essentials only +openboot install -p full # everything ``` See [Presets](/docs/presets) for what's in each one. -## Snapshot Your Current Setup +## Running again later + +Just type `openboot`. If the machine is already synced to a config (or a preset), OpenBoot fetches the latest version, shows what's missing, and asks to apply it. Nothing gets uninstalled — `install` only adds. + +``` +→ Syncing with @alice/dev-setup (last synced 2 days ago) + ++ visual-studio-code (cask) ++ tableplus (cask) + +Apply 2 change(s) from @alice/dev-setup? [Y/n] +``` + +## Snapshot your current setup Already have a Mac configured the way you like? Capture it: @@ -59,23 +70,21 @@ Already have a Mac configured the way you like? Capture it: openboot snapshot ``` -(Don't have OpenBoot installed yet? Run: `curl -fsSL https://openboot.dev/install.sh | bash -s -- snapshot`) +Don't have OpenBoot installed yet? `curl -fsSL https://openboot.dev/install.sh | bash -s -- snapshot`. -This scans your Homebrew packages, macOS preferences, shell config, and git settings. A TUI editor opens showing everything it found. Review it, remove anything you don't want to share, then upload or save locally. +This scans your Homebrew packages, macOS preferences, shell config (Oh-My-Zsh theme + plugins), and git identity. A TUI editor opens showing everything found. Review it, remove anything you don't want to share, then save locally or publish to openboot.dev. -After uploading, you get a shareable install command: +Publishing gives you a one-line install command: ```bash curl -fsSL openboot.dev/yourname/my-setup | bash ``` -Anyone can run that and get your exact setup — no tools to install first. See [Snapshot](/docs/snapshot) for details. - -## Share a Config with Your Team +Anyone can run that to get your exact setup — no tools to install first. See [Snapshot](/docs/snapshot) for details. -Setting up a standard environment for your team: +## Share a config with your team -1. Create a config on the [dashboard](/dashboard) — pick a preset, add/remove packages, add custom scripts if needed +1. Create a config on the [dashboard](/dashboard) — pick a preset, add/remove packages, add a post-install script if needed 2. Share the install command in your onboarding docs: ```bash @@ -86,8 +95,8 @@ curl -fsSL openboot.dev/yourteam/frontend | bash See [For Teams](/docs/teams) for more. -## Next Steps +## Next steps -- [Presets](/docs/presets) — What's in `minimal`, `developer`, and `full` -- [Custom Configs](/docs/custom-configs) — Build and share your own -- [CLI Reference](/docs/cli-reference) — Full command list +- [Presets](/docs/presets) — what's in `minimal`, `developer`, and `full` +- [Custom Configs](/docs/custom-configs) — build and share your own +- [CLI Commands](/docs/cli-reference) — the full command surface diff --git a/src/docs/snapshot.md b/src/docs/snapshot.md index 2abc7f0..2513129 100644 --- a/src/docs/snapshot.md +++ b/src/docs/snapshot.md @@ -1,6 +1,6 @@ --- title: Snapshot -description: Capture your current Mac's packages, preferences, and shell config, then share it as a one-line install URL. +description: Capture your Mac's packages, preferences, and shell config, then share it as a one-line install URL. group: Features order: 4 --- @@ -13,30 +13,30 @@ Capture your current Mac's dev environment and turn it into a shareable config openboot snapshot ``` -Or if you don't have `openboot` yet: +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 +## What it captures -| Category | What's Scanned | How | -|----------|---------------|-----| -| **Homebrew Formulae** | Top-level CLI tools (not dependencies) | `brew leaves` | -| **Homebrew Casks** | All installed GUI apps | `brew list --cask` | -| **Homebrew Taps** | Third-party repositories | `brew tap` | -| **NPM Global Packages** | Globally installed npm packages | `npm list -g` | -| **macOS Preferences** | 26 whitelisted developer settings | Curated list | -| **Shell Config** | Oh-My-Zsh plugins, theme, aliases | `.zshrc` parsing | -| **Git Config** | user.name, user.email, editor, default branch | `~/.gitconfig` | -| **Dev Tools** | Go, Node.js, Python, Rust, Java, Ruby, Docker | Version detection | +| Category | What's scanned | How | +|----------|----------------|-----| +| **Homebrew formulae** | Top-level CLI tools (not dependencies) | `brew leaves` | +| **Homebrew casks** | Installed GUI apps | `brew list --cask` | +| **Homebrew taps** | Third-party repositories | `brew tap` | +| **NPM globals** | Globally installed npm packages | `npm list -g` | +| **macOS preferences** | Whitelisted developer settings | Curated list | +| **Shell config** | Oh-My-Zsh theme and plugins | `.zshrc` parsing | +| **Git config** | user.name, user.email, editor, default branch | `~/.gitconfig` | +| **Dev tools** | Go, Node, Python, Rust, Java, Ruby, Docker | Version detection | > Only whitelisted data is captured. No SSH keys, API tokens, `.env` files, or credentials — ever. -## How It Works +## How it works -**Step 1 — Scan.** OpenBoot scans your system with real-time progress: +**1. Scan.** OpenBoot scans your system with real-time progress: ``` ✓ Homebrew Formulae 28 found @@ -46,69 +46,100 @@ curl -fsSL https://openboot.dev/install.sh | bash -s -- snapshot ✓ Git Config scanned ``` -**Step 2 — Review.** A full-screen TUI editor lets you customize what's included: +**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 individual items on/off +- 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 a read-only summary +- Taps, Shell, Git, and Dev Tools are shown as read-only -**Step 3 — Save.** Choose where it goes: +**3. Choose a destination.** Either via flag or the interactive menu. -- **Upload to openboot.dev** — get a shareable install URL -- **Save locally** — stored at `~/.openboot/snapshot.json` +## Destinations -If you upload, you'll authenticate via browser (like `gh auth login`), name your config, and get a one-line install command: +Flags decide where the snapshot goes. Without flags, behavior depends on whether stdout is a TTY. -```bash -curl -fsSL openboot.dev/yourname/my-setup | bash +| Command | Result | +|---------|--------| +| `openboot snapshot` (TTY) | Interactive editor, then a menu to save locally / publish / both | +| `openboot snapshot` (piped) | JSON to stdout | +| `openboot snapshot --local` | Save to `~/.openboot/snapshot.json` | +| `openboot snapshot --publish` | Upload to openboot.dev | +| `openboot snapshot --local --publish` | Save **and** upload | +| `openboot snapshot --json` | JSON 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 ``` -## Restoring from a Snapshot +### Publishing -Use `--import` to restore your environment from a previously captured snapshot: +`--publish` uploads directly, no interactive menu: -```bash -openboot snapshot --import ~/.openboot/snapshot.json -openboot snapshot --import https://example.com/snapshot.json +``` +openboot snapshot --publish ``` -**What gets restored:** +- 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. -| Category | What's Applied | -|----------|---------------| -| **Homebrew Formulae** | Installed via `brew install` | -| **Homebrew Casks** | Installed via `brew install --cask` | -| **Homebrew Taps** | Added via `brew tap` | -| **NPM Global Packages** | Installed via `npm install -g` | -| **Git Config** | `user.name` and `user.email` set via `git config --global` — skipped if both are already configured | -| **Shell Config** | Oh-My-Zsh theme and plugins written to `.zshrc` — only applied if Oh-My-Zsh was captured in the snapshot | -| **macOS Preferences** | Applied via `defaults write` for each captured preference | +Target an existing config by slug: -Before installing, a full-screen editor lets you review and deselect anything you don't want. If the snapshot is partial (some steps failed during capture), you'll be warned and asked whether to proceed. +``` +openboot snapshot --publish --slug my-config +``` -Run `--dry-run` to preview the installation without making any changes: +After upload, you get a one-line install command: -```bash +``` +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. + +| Category | What's applied | +|----------|----------------| +| Homebrew formulae | `brew install` | +| Homebrew casks | `brew install --cask` | +| Homebrew taps | `brew tap` | +| NPM globals | `npm install -g` | +| Git config | `git config --global` for name/email — skipped if both are already set | +| Shell config | Oh-My-Zsh theme and plugins written to `.zshrc` — only if Oh-My-Zsh was captured | +| macOS preferences | `defaults write` for each captured preference | + ## Flags | Flag | What it does | |------|-------------| -| `--dry-run` | Preview what would be captured or restored, without making changes | -| `--json` | Output snapshot as JSON to stdout — great for piping to `jq` | -| `--local` | Save to `~/.openboot/snapshot.json` instead of uploading | +| `--local` | Save to `~/.openboot/snapshot.json` | +| `--publish` | Upload to openboot.dev | +| `--slug ` | Target an existing config by slug (with `--publish`) | +| `--json` | Output JSON to stdout | +| `--dry-run` | Preview without saving, uploading, or installing | | `--import ` | Restore from a local file or URL | -## Privacy & Safety +## 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 are never included +- **No secrets captured** — SSH keys, tokens, credentials never included - **Full control** — you review and deselect anything before uploading See [Config Options](/docs/config-options) for the full list of macOS preferences that can be captured. diff --git a/static/llms-full.txt b/static/llms-full.txt index 5950bf8..3826b86 100644 --- a/static/llms-full.txt +++ b/static/llms-full.txt @@ -322,7 +322,7 @@ If you already have Oh-My-Zsh installed, OpenBoot merges its plugin recommendati ### Skipping Shell Setup ``` -openboot --shell skip +openboot install --shell skip ``` ## Dotfiles @@ -353,80 +353,106 @@ Settings include: show all file extensions, fast key repeat, Finder path bar, sh # CLI Commands -All commands for the `openboot` CLI, organized by what you're trying to do. +OpenBoot v1.0 has two real verbs: `install` adds things to your Mac, `snapshot` captures what's on it. Everything else is auth or bookkeeping. -## Set Up an Environment +Removed in v1.0 with no replacement: `pull`, `push`, `diff`, `clean`, `log`, `restore`, `init`, `setup-agent`, `doctor`, `update`, `list`, `edit`, `delete`. `install` is add-only and never uninstalls; use `brew uninstall` directly. -### `openboot` +## `openboot` / `openboot install` -Launch the interactive TUI installer. Browse packages, toggle what you want, and install. +`openboot` with no subcommand is identical to `openboot install`. -### `openboot --preset ` +With no `[source]` and no flags: +- If this machine has a saved sync source, resume it: fetch the config, diff against local, ask to apply the additions. +- Otherwise, launch the interactive TUI. -Start with a preset's packages pre-selected. Available: `minimal`, `developer`, `full`. +The positional `[source]` is identified by pattern: `./path` or `*.json` → local file; `user/slug` → cloud config; preset name → preset; otherwise → cloud alias. Explicit `--from`, `--user`, `--preset` override. -### `openboot --user /` +Examples: -Install from a custom config hosted on openboot.dev. +``` +openboot install +openboot install alice/dev-setup +openboot install ./backup.json +openboot install developer +openboot install myalias +openboot install --dry-run +``` -### Install Flags +### Install flags | Flag | Description | |------|-------------| | `-p, --preset ` | Use a preset: `minimal`, `developer`, `full` | -| `-u, --user ` | Install from a config hosted on openboot.dev | -| `-s, --silent` | Non-interactive mode — no TUI, no prompts | -| `--dry-run` | Preview what would be installed without installing | -| `--resume` | Resume an interrupted installation | -| `--packages-only` | Install packages only, skip shell/macOS/dotfiles config | +| `-u, --user ` | Install from an openboot.dev config | +| `--from ` | Install from a local config or snapshot JSON | +| `-s, --silent` | Non-interactive mode (for CI/automation) | +| `--dry-run` | Preview without installing | +| `--packages-only` | Skip shell, macOS, dotfiles, post-install | | `--shell ` | `install` or `skip` | | `--macos ` | `configure` or `skip` | | `--dotfiles ` | `clone`, `link`, or `skip` | +| `--post-install ` | `skip` to skip post-install scripts | +| `--allow-post-install` | Allow post-install scripts in silent mode | | `--update` | Update Homebrew before installing | -| `--rollback` | Restore backed-up config files | +| `--verbose` | Debug logging to stderr | + +## `openboot snapshot` + +Capture Homebrew packages, npm globals, macOS preferences, shell config (Oh-My-Zsh theme + plugins), git identity, and dev tool versions. + +Destination by flag or context: -## Capture Your Environment +``` +openboot snapshot # TTY: interactive menu. Pipe: JSON to stdout. +openboot snapshot --local # save to ~/.openboot/snapshot.json +openboot snapshot --publish # upload to openboot.dev +openboot snapshot --json # JSON to stdout +``` + +`--publish` updates the sync source in place if one exists; otherwise prompts for name/visibility and creates a new config. Target a specific config with `--slug `. -### `openboot snapshot` +Restore: -Scan your Mac's current setup and upload or save it. +``` +openboot snapshot --import my-setup.json +openboot snapshot --import https://example.com/snapshot.json +openboot snapshot --import my-setup.json --dry-run +``` -### Snapshot Flags +### Snapshot flags | Flag | Description | |------|-------------| | `--local` | Save to `~/.openboot/snapshot.json` | -| `--json` | Output as JSON to stdout | -| `--dry-run` | Preview without saving or uploading | +| `--publish` | Upload to openboot.dev | +| `--slug ` | Target an existing config (with `--publish`) | +| `--json` | Output JSON to stdout | +| `--dry-run` | Preview without saving, uploading, or installing | | `--import ` | Restore from a local file or URL | ## Authentication ### `openboot login` -Authenticate with openboot.dev via browser. Required for installing private configs and uploading snapshots. +Authenticate with openboot.dev via browser. Required for installing private configs and publishing snapshots. ### `openboot logout` Remove the stored authentication token from this machine. -## Maintain Your Environment +## `openboot version` -### `openboot doctor` - -Run diagnostic checks — network, disk space, Homebrew health, Git config, shell setup. - -### `openboot update` - -Update Homebrew and upgrade all installed packages. +Print the current OpenBoot version. -### `openboot update --self` +## Upgrading -Update the OpenBoot binary to the latest version. +OpenBoot is installed via Homebrew, so upgrade with Homebrew: -### `openboot version` +``` +brew upgrade openboot +``` -Print the current OpenBoot version. +A lightweight auto-update check also runs when you invoke `install`. --- @@ -489,36 +515,30 @@ Every OpenBoot config follows the same structure: ## Install Script Variables +The install script installs OpenBoot via Homebrew (`brew install openbootdotdev/tap/openboot`). + | Variable | Description | Default | |----------|-------------|---------| | `OPENBOOT_VERSION` | Install a specific version instead of latest | Latest release | -| `OPENBOOT_INSTALL_DIR` | Where to put the binary | `~/.openboot/bin` | | `OPENBOOT_DRY_RUN` | Set to `true` to preview without changes | — | -| `OPENBOOT_SKIP_CHECKSUM` | Set to `true` to skip SHA256 verification | — | ## CLI Variables | Variable | Description | |----------|-------------| -| `OPENBOOT_GIT_NAME` | Git user name (only in `--silent` mode) | -| `OPENBOOT_GIT_EMAIL` | Git user email (only in `--silent` mode) | -| `OPENBOOT_PRESET` | Default preset to use | -| `OPENBOOT_USER` | Default remote config to use | -| `OPENBOOT_DOTFILES` | Dotfiles repository URL | -| `OPENBOOT_API_URL` | Override the API base URL (default: `https://openboot.dev`) | -| `OPENBOOT_DISABLE_AUTOUPDATE` | Set to `1` to disable auto-update checks | +| `OPENBOOT_GIT_NAME` | Git user name (read only in `--silent` mode) | +| `OPENBOOT_GIT_EMAIL` | Git user email (read only in `--silent` mode) | +| `OPENBOOT_PRESET` | Default preset. Overridden by `-p` / `--preset` | +| `OPENBOOT_USER` | Default cloud config. Overridden by `-u` / `--user` | ## File Locations | Path | What's There | |------|-------------| -| `~/.openboot/bin/openboot` | The OpenBoot binary (one-line installer only) | -| `~/.openboot/auth.json` | Auth token (after `openboot login`) | +| `~/.openboot/auth.json` | Auth token (after `openboot login` or publishing a snapshot) | | `~/.openboot/snapshot.json` | Local snapshot (when using `--local`) | -| `~/.openboot/config.json` | Auto-update settings | | `~/.openboot/install_state.json` | Tracks what was installed and when | -| `~/.openboot/state.json` | UI reminder state | -| `~/.openboot/update_state.json` | Auto-update check state | +| `~/.openboot/sync_source.json` | The cloud config this machine is synced to | | `~/.dotfiles/` | Cloned dotfiles repo (when configured) | --- @@ -539,7 +559,7 @@ Homebrew installs packages. OpenBoot sets up your **entire** environment — pac ## Is the one-line installer safe? -The install script is open source, hosted on Cloudflare Workers over HTTPS, with zero telemetry. Binary is downloaded from GitHub Releases with SHA256 checksum verification. +The install script is open source, hosted on Cloudflare Workers over HTTPS, with zero telemetry. OpenBoot is installed via Homebrew (`brew install openbootdotdev/tap/openboot`), which handles integrity verification. ## What if I already have Homebrew? @@ -551,14 +571,16 @@ Yes. No account needed for presets, TUI, or local snapshots. Account needed only ## How do I update OpenBoot? -Homebrew: `brew upgrade openboot`. One-line installer: `openboot update --self`. +`brew upgrade openboot`. OpenBoot also does a lightweight auto-update check on `install`. The old `openboot update --self` command was removed in v1.0. ## How do I uninstall OpenBoot? -1. Remove binary: `brew uninstall openboot` or `rm -f ~/.openboot/bin/openboot` +1. Remove binary: `brew uninstall openboot && brew untap openbootdotdev/tap` 2. Remove data: `rm -rf ~/.openboot` 3. Clean up shell config (optional): remove `# OpenBoot additions` block from `~/.zshrc` +OpenBoot doesn't uninstall packages it installed — that's by design. Use `brew uninstall ` directly. + ## Does it work on Linux? Not yet. macOS-only. Linux support is being explored. diff --git a/static/llms.txt b/static/llms.txt index a640799..47219d3 100644 --- a/static/llms.txt +++ b/static/llms.txt @@ -24,7 +24,7 @@ OpenBoot automates your entire Mac dev environment — Homebrew packages, GUI ap - [Dotfiles & Shell](/docs/dotfiles-shell): Automatic Oh-My-Zsh setup, dotfiles linking with GNU Stow, and developer-friendly macOS preferences. - [For You](/docs/personal): How OpenBoot saves you hours on new Mac setup, keeps your machines in sync, and replaces your memory as a package manager. - [For Teams](/docs/teams): Replace your 47-step setup doc with one command. Onboard new hires in minutes, keep everyone in sync. -- [CLI Commands](/docs/cli-reference): Complete reference for all openboot commands — install, snapshot, login, doctor, update, and their flags. +- [CLI Commands](/docs/cli-reference): Complete reference for the openboot CLI — install, snapshot, login, and their flags. - [Config Options](/docs/config-options): Full config schema — packages, custom scripts, dotfiles repo, visibility, aliases, and the 23 macOS preferences whitelist. - [Environment Variables](/docs/env-vars): All environment variables for the install script and CLI — version pinning, install directory, Git identity, and more. - [FAQ](/docs/faq): Common questions about OpenBoot — pricing, safety, Homebrew vs installer, Linux support, uninstalling, and more.