{"id":51081261,"url":"https://github.com/vnedyalk0v/rig","last_synced_at":"2026-06-23T18:03:24.928Z","repository":{"id":362043932,"uuid":"1257007864","full_name":"vnedyalk0v/rig","owner":"vnedyalk0v","description":"Set up a DevOps-ready Mac with the tools and versions your workflow depends on.","archived":false,"fork":false,"pushed_at":"2026-06-02T10:49:43.000Z","size":31,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"dev","last_synced_at":"2026-06-02T11:23:15.938Z","etag":null,"topics":["cloud-engineering","devops","devops-tools","homebrew","infrastructure-as-code","macos","platform-engineering","workstation-setup"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vnedyalk0v.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":"SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-06-02T09:26:12.000Z","updated_at":"2026-06-02T10:49:07.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/vnedyalk0v/rig","commit_stats":null,"previous_names":["vnedyalk0v/rig"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/vnedyalk0v/rig","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vnedyalk0v%2Frig","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vnedyalk0v%2Frig/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vnedyalk0v%2Frig/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vnedyalk0v%2Frig/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vnedyalk0v","download_url":"https://codeload.github.com/vnedyalk0v/rig/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vnedyalk0v%2Frig/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34700915,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-23T02:00:07.161Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloud-engineering","devops","devops-tools","homebrew","infrastructure-as-code","macos","platform-engineering","workstation-setup"],"created_at":"2026-06-23T18:03:24.305Z","updated_at":"2026-06-23T18:03:24.916Z","avatar_url":"https://github.com/vnedyalk0v.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# rig\n\nSet up a DevOps-ready Mac with the tools and versions your workflow depends on.\n\n`rig` is a small, auditable macOS bootstrap tool for developers, DevOps\nengineers, and platform engineers. The v1 design is captured in\n[docs/rig-v1-spec.md](docs/rig-v1-spec.md).\n\n## Status\n\nThis repository is in pre-release v1 development. The bootstrap installer,\nlocal `rig` command, catalog, dry-run planning, config generation, and real\ninstall paths are implemented.\n\nCurrent implementation:\n\n- `install.sh --dry-run` renders the bootstrap plan without creating files, and\n  `install.sh` installs or updates the local `rig` command before starting\n  `rig install`.\n- `rig install` writes committable state under `~/.config/rig/` (Brewfile,\n  install-plan.tsv, macos-defaults.sh) and applies it via Homebrew Bundle,\n  version managers, and defaults scripts.\n- `rig install` checks Homebrew before tool selection. If Homebrew is missing,\n  interactive install asks before installing it; non-interactive install\n  requires `--yes`.\n- `rig install --dry-run`, `rig install --write-config-only`, and\n  `rig install --from-config` support preview, config-only, and replay flows.\n- `rig list`, `rig doctor`, `rig dry-run`, `rig self-update`, `rig update-tools`,\n  and `rig version` are implemented.\n- Interactive install (no flags) uses optional `gum` with a plain Bash keyboard\n  checklist fallback and a final review screen.\n- Non-interactive selection uses `--select`, `--defaults`, `--category`, and\n  `--version` flags.\n- TSV catalog validation, multi-select flags, macOS guards, and bootstrap checks\n  are covered by local tests.\n\nRemaining polish:\n\n- expand catalog coverage toward the full v1 breadth (incremental, verify-first);\n- additional macOS defaults and category entries from the spec as they are verified.\n\nThe remote install one-liner reads `install.sh` from `main`. Review that exact\nscript before running it. Use `rig install --dry-run` to preview workstation\nchanges before applying them.\n\n## v1 Shape\n\n`rig` is a macOS-only bootstrap tool that:\n\n- runs from the system `/bin/bash` on a clean Mac;\n- uses Homebrew and Homebrew Bundle for Homebrew-native packages;\n- supports interactive and non-interactive setup flows;\n- includes a dry-run mode that makes no system or user changes;\n- generates a committable `Brewfile`, external install plan, and macOS\n  preferences script under `~/.config/rig/`;\n- uses a data-driven TSV catalog with descriptions for every selectable item;\n- supports version-managed tools such as Node.js/npm, Bun, Terraform,\n  OpenTofu, and Terragrunt;\n- keeps tool self-updates separate from workstation package updates.\n\nThe bootstrap command is:\n\n```bash\n/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/vnedyalk0v/rig/main/install.sh)\"\n```\n\nThat command installs or updates the local `rig` command and then starts the\ninteractive setup flow. The flow checks for Homebrew first. If `brew` is\nmissing, `rig` explains that Homebrew is required and waits for approval before\nrunning the official Homebrew installer. After Homebrew is available, `rig`\nshows the selectable tool/software catalog.\n\nThe dry-run bootstrap command is:\n\n```bash\n/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/vnedyalk0v/rig/main/install.sh)\" -- --dry-run\n```\n\nRemote shell execution has real supply-chain risk. The installer should stay\nsmall and readable, and users should review `install.sh` before running it.\nAfter bootstrap, use `rig install --dry-run` to exercise the same Homebrew\nprerequisite and selection flow without installing packages or writing config.\n\n## Commands\n\n```text\nrig install\nrig install --dry-run\nrig install --yes --select gh\nrig install --write-config-only\nrig install --from-config\nrig dry-run\nrig list\nrig doctor\nrig self-update\nrig update-tools\nrig version\n```\n\nRun `rig install` with no flags for an interactive setup. Use\n`rig install --dry-run` or `rig dry-run` to preview without changes. Use\n`--yes` only when a non-interactive install is allowed to install Homebrew if it\nis missing.\n\nInteractive selection requires a real terminal. The plain Bash fallback renders\ncheckbox-style multi-select lists by category: use Up/Down to move, Space to\nselect or deselect, and Enter to continue. Rows show the tool name, catalog id,\nand description without requiring numeric input. Before applying an interactive\ninstall, `rig` shows a final review grouped by category and asks for approval.\nIf `gum` is installed, `rig` uses its multi-select UI. In scripts, CI, or\ncaptured shells, pass explicit `--select` and `--defaults` flags instead of\nrelying on prompts.\n\nDry-run output starts with a short summary of package counts before printing the\nraw Brewfile, external install plan, macOS defaults, and shell-edit preview.\n\n## Local Validation\n\n```bash\nfor f in install.sh rig lib/rig/*.sh scripts/*.sh tests/*.sh; do\n  bash -n \"$f\"\ndone\nbash tests/run-tests.sh\n./scripts/validate-catalog.sh\n./rig install --dry-run --select vscode,chrome,node-npm --defaults finder-show-hidden-files\n./install.sh --dry-run\nshellcheck install.sh rig lib/rig/*.sh scripts/*.sh tests/*.sh\nactionlint .github/workflows/*.yml\ngit diff --check\n```\n\n## Design Principles\n\n- **Auditable:** keep bootstrap code and generated state easy to inspect.\n- **Dry-run first:** every install path should be explainable before it runs.\n- **Idempotent:** reruns should not duplicate shell config or generated files.\n- **Portable on macOS:** use Bash 3.2-compatible shell code for the entrypoint.\n- **Explicit:** do not install everything by default; make users choose.\n\n## Documentation\n\n- [v1 specification](docs/rig-v1-spec.md)\n- [Repository settings record](docs/repository-settings.md)\n- [Contributing guide](CONTRIBUTING.md)\n- [Security policy](SECURITY.md)\n- [Support guide](SUPPORT.md)\n- [Code of conduct](CODE_OF_CONDUCT.md)\n- [Agent instructions](AGENTS.md) — guidance for AI coding agents\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md). While v1 is being built, small,\nspec-aligned pull requests are preferred. Branch off `dev` and open pull\nrequests against `dev` (the default branch); `main` is the stable release\nbranch. [CodeRabbit](https://coderabbit.ai) automatically reviews every pull\nrequest.\n\n## Security\n\nSee [SECURITY.md](SECURITY.md). Please do not report exploitable security\nissues in public GitHub issues.\n\n## Support\n\nSee [SUPPORT.md](SUPPORT.md) for where to ask questions or report non-sensitive\nproblems.\n\n## License\n\nMIT. See [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvnedyalk0v%2Frig","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvnedyalk0v%2Frig","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvnedyalk0v%2Frig/lists"}