Installing Frost
Frost installs with one command on macOS, Linux and Windows. Each release includes its own runtime, so there's nothing else to install first.
#Supported systems
| System | Processors |
|---|---|
| macOS | Apple silicon (arm64) and Intel (amd64) |
| Linux | amd64 and arm64 |
| Windows | amd64 and arm64 |
There's no package for 32-bit ARM, like older Raspberry Pi systems. On Windows, WSL installs the Linux package.
#The installer
On macOS or Linux, run this in a terminal:
curl -fsSL https://getfro.st/install.sh | sh
On Windows, run this in PowerShell:
irm https://getfro.st/install.ps1 | iex
The installer:
- Downloads the latest release for your system.
- Checks the release's signature and the download's checksum, and stops if either is wrong.
- Installs Frost in your user profile, and puts a
frostlauncher in a folder on yourPATH.
On macOS and Linux, it needs curl or wget, ssh-keygen from OpenSSH 8.1 or newer, and sha256sum or shasum for verification. On Windows, it needs Windows PowerShell 5.1, which comes with Windows 10 and 11, or PowerShell 7. It checks the signature with the runtime inside the release, once Windows confirms the OpenJS Foundation signed that runtime.
On macOS and Linux, the launcher goes in /usr/local/bin if you can write to it, and in ~/.local/bin otherwise. If that folder isn't on your PATH yet, the installer prints the line that adds it. On Windows, the launcher goes in %LocalAppData%\frost\bin, and the installer adds that folder to your PATH. Terminals that were already open need restarting before they find frost.
The curl installer also works in Git Bash on Windows. There it needs cygpath, which Git Bash provides, extracts with unzip or PowerShell, and puts the launcher in ~/bin.
When it's done, run frost init to set up your first backup. See Setting up Frost.
#Installer options
| Variable | Does |
|---|---|
FROST_INSTALL_DIR | Puts the launcher in this folder instead. The Windows installer leaves your PATH alone for it |
FROST_VERSION | Installs this release, like v0.1.0, instead of the latest |
For example, on macOS or Linux:
curl -fsSL https://getfro.st/install.sh | FROST_INSTALL_DIR="$HOME/bin" sh
On Windows, set the variable first, in the same PowerShell window:
$env:FROST_VERSION = 'v0.1.0'; irm https://getfro.st/install.ps1 | iex
Changing the launcher folder doesn't move Frost itself. Files and folders lists where everything goes.
#With npm or pnpm
If you already have Node.js 22 or newer, you can install Frost with npm:
npm install -g getfrost
Or with pnpm:
pnpm add -g getfrost
The package is called getfrost, and the command it gives you is frost. The first time you run frost, it downloads the release for your system, checks its signature and checksum like the installer does, and installs it in your user profile. Then it runs your command. After that, every frost command goes straight to the installed Frost, which keeps itself up to date.
With pnpm, run pnpm setup first if you haven't before, so pnpm's global commands are on your PATH.
#Installing by hand
- Download the archive for your system from the latest release. Archive names look like
frost_0.1.0_linux_amd64.tar.gz, with.zipon Windows. - Verify the download before you run anything from it, as shown under "Verifying a download" below.
- Extract it into a new, empty folder.
- Inside the extracted folder, run the bundled installer and give it the folder for the launcher.
On macOS or Linux:
./runtime/bin/node install.mjs "$PWD" "$HOME/.local/bin"
On Windows, in PowerShell:
.\runtime\bin\node.exe .\install.mjs "$PWD" "$env:LOCALAPPDATA\frost\bin"
Then add the launcher folder to your PATH if it isn't there already. On Windows, frost.cmd works in Command Prompt and PowerShell, and frost works in Git Bash.
To run an extracted package without installing it, use its frost launcher (frost.cmd on Windows) directly, and keep all of its files together.
#Verifying a download
The installer does this for you. To check an archive yourself, download it with checksums.txt and checksums.txt.sig from the same release, and release-signing.pub from the repository. Set archive to the archive's file name, then run:
(
set -e
archive='frost_X.Y.Z_linux_amd64.tar.gz'
printf 'frost-release %s\n' "$(cat release-signing.pub)" > allowed_signers
ssh-keygen -Y verify -f allowed_signers -I frost-release -n file -s checksums.txt.sig < checksums.txt
selected_checksum=$(awk -v archive="$archive" '$2 == archive { line = $0; count++ } END { if (count != 1) exit 1; print line }' checksums.txt)
printf '%s\n' "$selected_checksum" | shasum -a 256 -c -
)
The commands stop if the signature is wrong or the signed list doesn't contain exactly one entry for your archive. The first check should print Good "file" signature, and the second should print OK after your archive's name. If either doesn't, don't install it.