Skip to content
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
149 changes: 121 additions & 28 deletions src/content/docs/guides/manual-installation.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,35 +7,149 @@ import { Code } from '@astrojs/starlight/components';
import { getLatestVersion } from "@biomejs/version-utils";
export const version = await getLatestVersion("stable");

Using Biome's standalone CLI binary can be a great choice if you aren't already using Node.js or `npm` (or any other package manager).
Or in other words, Biome shouldn't be the only reason for you to have a `package.json`.
You can install Biome to your machine to use like any other command line tool. This can be a great choice
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I liked the previous wording because it highlighted the fact that you don't need Node.js to use Biome, that was the major selling point.

The proposed wording doesn't do that. Plus, you can install CLI tools globally even with npm, so we lost the fact that Biome is a standalone binary

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

True. I was reflowing the wording to pick up where the previous thoughts left off. The former wording was kind of a sudden break in style if I recall correctly. Maybe not the biggest problem.

if you need to run this manually: for instance, if you use a code editor that does not have a Biome plugin,
or if you intend to use this in shell scripts or another local tool to automate processing of source code
files, or if you intend to have an AI coding tool execute this tool.
Comment on lines +11 to +13
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the proposed use cases, maybe we can make a list out of them

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

neat. glad the suggestion landed. I did notice the readme changed a bit since I last was here. Good job.


If you are using Biome in a CI/CD pipeline, you should install it directly into the project using a Node.js
package manager (`npm`, `pnpm`, etc) and abandon this manual option.
Comment on lines +15 to +16
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since this is the page of manual installation, we shouldn't overstep into CI/CD suggestions.

Plus, we already own our own GitHub action and recipes, which doesn't use npm.

To sum up, this suggestion shouldn't be here.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

People will tend to follow instructions in whichever section they found without trying to find the other section. Unfortunately, redundant explanation is necessary to avoid frustrating someone learning from the docs.


:::note
If you're already using `npm` or another package manager, then using the package manager is the [preferred way to install](/guides/getting-started#installation) Biome.
You're already familiar with the tooling, and installing and updating are simpler.
If you are unsure which one to choose, see the [getting started guide](/guides/getting-started#installation).
You're already familiar with package management in Node.js projects, using those tools makes installing,
updating, and freezing the version simpler for collaboration scenarios.
:::

## Supported platforms
## Supported Architectures

You have to pick the correct binary for your platform for Biome work. The following table should help you do so.
You have to pick the correct binary for your CPU architecture for Biome work. The following table should help you do so.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why the change? FYI we chose the word platform because there are two variables: CPU and OS

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The reader already knows that they need to look for their operating system. 'Platform' only implies the OS. The original basic definition of "platform" was synonymous with "Operating System" excluding the CPU architecture but has been extended illegitimately to include CPU architecture. Platform is a release specification, like "Windows 11", or "Nintendo 64". What is important and not obvious to the user is that they must choose their CPU architecture as well.


| CPU Architecture | Windows | macOS | Linux | Linux (musl) |
| ---------------- | ------------- | ---------------------------- | ------------- | ------------------ |
| `arm64` | `win32-arm64` | `darwin-arm64` (M1 or newer) | `linux-arm64` | `linux-arm64-musl` |
| `x64` | `win32-x64` | `darwin-x64` | `linux-x64` | `linux-x64-musl` |

## Windows

Install Biome either using the `winget` native package manager for Windows, or a download:

:::note
Use the Linux variant for Windows Subsystem for Linux (WSL).
:::

## Homebrew
### Winget

Native package manager for Windows:

<Code lang="shell" code={`
# Windows (x86_64, Powershell)
winget install BiomeJS.Biome
`} />

### Download

Download via [Latest CLI release](https://github.com/biomejs/biome/releases) on GitHub or the following shell command:

<Code lang="shell" code={`
# Windows (x86_64, Powershell)
Invoke-WebRequest -Uri "https://github.com/biomejs/biome/releases/download/@biomejs/biome@${version}/biome-win32-x64.exe" -OutFile "%USERPROFILE%\Downloads\binaries\biome.exe"
`} />

Now you can use Biome by running `C:\users\<your_username>\Downloads\binaries\biome.exe`. Note that this does
not register Biome on the PATH var (system or user var), so you cannot call it from within any folder by
simply using `biome`. In order to register it to the PATH, edit the PATH variable using your operating
system's GUI or command line:

Either

- Press Windows key + R to open the Run dialog, type **sysdm.cpl**, and press Enter.
- Add the folder in a new line to the User PATH variable (not system PATH).

or

- Open Terminal and run:

<Code lang="shell" code={`
# Windows (x86_64, Powershell)
setx PATH "%PATH%;%USERPROFILE%\Downloads\binaries"
`} />

This updates the PATH permanently and applies to future terminal sessions. To update the current terminal, run

<Code lang="shell" code={`
# Windows (x86_64, Powershell)
set PATH="%PATH%;%USERPROFILE%\Downloads\binaries\"
`} />
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we add a note that says that those tags/binaries published on wget aren't managed by the team?

Copy link
Author

@AMDphreak AMDphreak Jan 29, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah I'm starting to realize a lot of them aren't managed by the original teams. Something needs to be done about that at the cultural level. There needs to be a clearer and easier way to onboard existing devs into the winget workflow. I found and still find it very confusing.


## macOS and Linux

Biome is available as a [Homebrew formula](https://formulae.brew.sh/formula/biome) for macOS and Linux users.

```shell
brew install biome
```

### Using a published binary

To install Biome, grab the executable for your platform from the [latest CLI release](https://github.com/biomejs/biome/releases) on GitHub and give it execution permission.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
To install Biome, grab the executable for your platform from the [latest CLI release](https://github.com/biomejs/biome/releases) on GitHub and give it execution permission.
Biome executables are also available on our [GitHub release pages](https://github.com/biomejs/biome/releases).
Download the executable available to your platform, give it execution permission and you're read to use it:

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah sounds fine. I'm late to the party. all good


<Code lang="shell" code={`
# macOS arm64 (Apple Silicon – M1/M2/M3/M4)
curl -L https://github.com/biomejs/biome/releases/download/@biomejs/biome@${version}/biome-darwin-arm64 -o biome
chmod +x biome

# macOS x86_64 (Intel Macs)
curl -L https://github.com/biomejs/biome/releases/download/@biomejs/biome@${version}/biome-darwin-x64 -o biome
chmod +x biome

# Linux x86_64
curl -L https://github.com/biomejs/biome/releases/download/@biomejs/biome@${version}/biome-linux-x64 -o biome
chmod +x biome

# Linux arm64/aarch64 (Raspberry Pi 64-bit, AWS Graviton, etc.)
curl -L https://github.com/biomejs/biome/releases/download/@biomejs/biome@${version}/biome-linux-arm64 -o biome
chmod +x biome
`} />

You can now run Biome with `./biome`.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
You can now run Biome with `./biome`.
You can now run Biome with `./biome`.
```shell
./biome check
```

Copy link
Author

@AMDphreak AMDphreak Jan 29, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One of these days, I hope someone builds a proper instruction documentation system that models the tangents and decision paths (windows, linux, this, that, the other) the user is taking during the instructions. GitHub is not innovative enough in this area.


To run it globally from any directory just by typing `biome`, add it to your `PATH`.
Here are the recommended ways:

**Recommended: Move the binary to a directory already in `$PATH`**
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we suggest a way to know which folders are available in PATH?

Copy link
Author

@AMDphreak AMDphreak Jan 29, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

that's a good idea. again, another tangent that really sucks to include by default but is highly useful to the beginner. Include it or risk being yelled at by another beginner. Hate to say it, but it needs it.

Also I just found out Windows has a major flaw in their PATH editor GUI where it won't let you add more paths to the PATH variable after a certain length of the variable. Windows is soooo dumb. The PowerToys app can circumvent the limitation. Or users can use the command line, which is a pain.


<Code lang="shell" code={`
# Most common choice on both macOS and Linux
sudo mv biome /usr/local/bin/biome

# Alternative (user-local, no sudo needed – preferred on many modern Linux distros)
mkdir -p ~/.local/bin
mv biome ~/.local/bin/biome
`} />

**Alternative: Add the current folder to your `PATH`**
If you prefer not to move the binary, append the current directory to `PATH` in your shell configuration file.
Comment on lines +131 to +132
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's not very clear what "current folder" actually means, because it could mean anything, even a temporary folder where users download their stuff.

I suggest rewording the suggestion in another way by suggesting to add a new folder to PATH

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If I recall correctly, I wrote this in the context of a procedure, so the user would have to infer what their current folder is from the state of the install procedure. Another potential liability in the instructions. You're right, but I don't have a solution for you. In my experience, I usually just let the user fail on that one, if they forget their context or skip through the document, it's on them to correctly re-read and model it in their head before following the instruction here.


- macOS (zsh – default since Catalina) – add to `~/.zshrc`
<Code lang="shell" code={`export PATH="$PATH:$(pwd)"`} />
- macOS (bash) or Linux – add to `~/.bashrc`, `~/.zshrc`, or equivalent
<Code lang="shell" code={`export PATH="$PATH:$(pwd)"`} />

Then reload your shell:

<Code lang="shell" code={`source ~/.zshrc # or source ~/.bashrc`} />

:::note
**Tip**: Moving the binary to `/usr/local/bin` or `~/.local/bin` (as shown in the
recommended method) is cleaner, more reliable, and works across all terminal
sessions without relying on `$(pwd)`.
:::
Comment on lines +143 to +147
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ohh nice! I didn't know. I am the ignorant.


Now `biome` works everywhere:

<Code lang="shell" code={`biome --version biome format . biome lint .`} />
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
<Code lang="shell" code={`biome --version biome format . biome lint .`} />
<Code lang="shell" code={`biome check`} />

We don't recommend using the . anymore

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't even remember why I wrote this (or if I copied it from somewhere)


## Docker

Biome publishes [official Docker images](https://github.com/biomejs/docker/pkgs/container/biome) that support
Expand Down Expand Up @@ -63,27 +177,6 @@ docker run -v $(pwd):/code ghcr.io/biomejs/biome format
docker run -v $(pwd):/code ghcr.io/biomejs/biome format --write
```



## Using a published binary

To install Biome, grab the executable for your platform from the [latest CLI release](https://github.com/biomejs/biome/releases) on GitHub and give it execution permission.

<Code lang="shell" code={`
# macOS arm (M1 or newer)
curl -L https://github.com/biomejs/biome/releases/download/@biomejs/biome@${version}/biome-darwin-arm64 -o biome
chmod +x biome

# Linux (x86_64)
curl -L https://github.com/biomejs/biome/releases/download/@biomejs/biome@${version}/biome-linux-x64 -o biome
chmod +x biome

# Windows (x86_64, Powershell)
Invoke-WebRequest -Uri "https://github.com/biomejs/biome/releases/download/@biomejs/biome@${version}/biome-win32-x64.exe" -OutFile "biome.exe"
`} />

Now you can use Biome by simply running `./biome`.

## Next Steps

Follow our [Getting Started guide](/guides/getting-started/).
Loading