An open API service indexing awesome lists of open source software.

https://github.com/halsatif/freshctl

windows bootstrap utility
https://github.com/halsatif/freshctl

bootstrap chocolatey cli golang package-manager terminal tui windows

Last synced: 28 days ago
JSON representation

windows bootstrap utility

Awesome Lists containing this project

README

          



freshctl



windows bootstrap utility



install apps from a clean terminal interface.





## Install

PowerShell:

```powershell
irm https://freshctl.tech/install.ps1 | iex
```

Options:

```powershell
# install without launching freshctl afterwards
.\install.ps1 -NoLaunch

# install without prompts
.\install.ps1 -Silent
```

---

## Screenshot

![freshctl screenshot](./assets/screenshot.png)

---

## Features

- full catalog search
- category browser
- chocolatey bootstrap
- package selection
- terminal-native tui
- fast setup for fresh Windows installs
- clean minimal interface

---

## Build

```powershell
go mod tidy
go build -o freshctl.exe .
```

Regenerate the website package catalog after editing `internal/catalog/catalog.go`:

```powershell
go run ./cmd/export-catalog
```

Validate the catalog before releases or catalog updates:

```powershell
go run ./cmd/check-catalog
```

---

## Run

```powershell
.\freshctl.exe
```

---

## Uninstall

Use the installer uninstall mode from an elevated PowerShell:

```powershell
iwr https://freshctl.tech/install.ps1 -OutFile "$env:TEMP\freshctl-install.ps1"
powershell -ExecutionPolicy Bypass -File "$env:TEMP\freshctl-install.ps1" -Uninstall
```

This removes:

- `C:\Program Files\freshctl\`
- the freshctl PATH entry
- the Start Menu shortcut
- temporary installer files

It does **not** remove Chocolatey or apps installed through Chocolatey. freshctl uses Chocolatey as the package manager, but it does not own the Chocolatey installation.

To remove Chocolatey too, follow Chocolatey's uninstall guidance: remove `C:\ProgramData\chocolatey` and Chocolatey's environment variables/PATH entries. Be careful: this removes Chocolatey's package state and cache, not the normal Windows apps already installed by package installers.

freshctl currently does not keep a separate config directory. Runtime installer files are temporary and live under:

```text
%TEMP%\freshctl-installer
```

---

## Requirements

- Windows 10/11
- PowerShell
- Administrator privileges may be required
- Internet connection

---

## Package Source

freshctl currently uses Chocolatey as its install backend.

Package managers are implementation details, not the product identity. The goal is simple: download freshctl, open it, choose apps, and install them quietly with clear status and reliable results.

---

## Project Direction

freshctl prioritizes reliability over catalog size. Packages in the default catalog should be verified, suitable for unattended install, and useful on modern Windows 10/11 systems.

Broken, deprecated, interactive, hardware-dependent, or VM-hostile packages should not be shown by default. A smaller verified catalog is better than a large catalog full of unreliable installs.

Future work is focused on a better Windows setup experience: direct installers where they are more reliable, installed-app detection, clearer UX, proxy and network handling, presets, profiles, and safe Windows setup tweaks.

---

## Profiles

Profiles are experimental.

You can create a profile on the website:

1. Open `https://freshctl.tech/#profile`.
2. Select packages.
3. Download `freshctl-profile.json`.
4. Open freshctl and press `o` from the catalog screen.

From the review screen, press `e` to export the current selection to:

```text
freshctl-profile.json
```

From the catalog screen, press `o` to import `freshctl-profile.json` and add its packages to the current selection.

Current profile format is JSON:

```json
{
"version": 1,
"name": "developer setup",
"packages": ["vscode", "git"]
}
```

Profile package IDs must exist in the freshctl catalog.
Command-line profile apply is coming later.

---

## Included Packages

freshctl currently includes packages for:

- browsers
- development tools
- runtimes
- terminals
- media tools
- gaming utilities
- networking
- virtualization
- productivity
- privacy & security

Examples:

- Google Chrome
- Firefox
- VSCode
- Git
- Docker Desktop
- Python
- Node.js
- OBS Studio
- Discord
- Steam
- Tailscale
- PowerToys
- ShareX
- qBittorrent
- VirtualBox

---

## License

MIT License

See [LICENSE](./LICENSE).