Skip to content

Download & Install

Bruno is an open-source, fast and lightweight API client for exploring and testing APIs. It's designed to be a modern alternative to traditional API clients with a focus on speed, simplicity, and collaboration.

Installation Options

Bruno can be installed via direct download or through package managers on supported platforms.

Starting with Bruno v3, native ARM64 binaries are available for Windows ARM64 devices ↗.

### Direct Download

Download the latest macOS version from the [official downloads page <strong><sup>↗</sup></strong>](https://www.usebruno.com/downloads).

<Info>
  **PKG Installer**

  Starting with v4.0.0, Bruno is also available as a `.pkg` installer for MDM tools and scripted deployments.

  - Installs `Bruno.app` to `/Applications` for all users and requires administrator privileges
  - Signed and notarized by Apple. Verify with `pkgutil --check-signature <file>.pkg`
  - Package identifier: `com.usebruno.app`

  Example: `sudo installer -pkg bruno_<version>_<arch>_mac.pkg -target /`
</Info>

### Using Package Managers

**Homebrew**
```bash
brew install bruno
```

### Direct Download

Download the latest Windows installer from the [official downloads page <strong><sup>↗</sup></strong>](https://www.usebruno.com/downloads).

<Info>
  **Enterprise MSI Installation**

  When installing Bruno using an MSI installer, IT administrators can control auto-update behavior by passing the `AUTOUPDATE_ENABLED` flag during installation:

  - Set to `false` to disable auto-updates enterprise-wide
  - If auto-updates are disabled by the enterprise, users cannot enable them manually
  - If no enterprise setting exists, Bruno respects individual user preferences

  Example: `msiexec /i Bruno.msi AUTOUPDATE_ENABLED=false`
</Info>

### Using Package Managers

**Chocolatey**
```bash
choco install bruno
```

**Winget**
```bash
winget install Bruno.Bruno
```

**Scoop**
```bash
scoop install bruno
```

### Direct Download

Download the latest Linux package from the [official downloads page <strong><sup>↗</sup></strong>](https://www.usebruno.com/downloads).

### Using Package Managers

**APT (Debian/Ubuntu)**
```bash
# Create keyrings directory
sudo mkdir -p /etc/apt/keyrings

# Update and install GPG and curl
sudo apt update && sudo apt install gpg curl

# List existing keys (optional)
sudo gpg --list-keys

# Add the Bruno repository key
curl -fsSL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x9FA6017ECABE0266" | gpg --dearmor | sudo tee /etc/apt/keyrings/bruno.gpg > /dev/null

# Set permissions for the GPG key file
sudo chmod 644 /etc/apt/keyrings/bruno.gpg

# Add the Bruno repository
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/bruno.gpg] http://debian.usebruno.com/ bruno stable" | sudo tee /etc/apt/sources.list.d/bruno.list

# Update and install Bruno
sudo apt update && sudo apt install bruno
```
**Flatpak**
```bash
flatpak install flathub com.usebruno.Bruno
```

**Snap**
```bash
sudo snap install bruno
```

Nightly Builds

Nightly builds are pre-release and may contain bugs. Use them to preview upcoming features and provide feedback - not for production.

Nightly builds are published automatically for early testing of upcoming features. To get started, visit the bruno-nightly-builds ↗ repository on GitHub and download the asset that matches your OS.

Find the latest release in the nightly builds repository ↗ and download the installer for your platform:

| Platform | File to download |
|----------|-----------------|
| macOS (Apple Silicon) | `.dmg` or `.pkg` (arm64) |
| macOS (Intel) | `.dmg` or `.pkg` (x64) |
| Windows | `.exe` or `.msi` installer |
| Linux | `.AppImage`, `.deb`, or `.rpm` |

Install it the same way as a regular Bruno release.

The CLI nightly build is published as an npm tarball (.tgz). Installing it in an isolated folder keeps it separate from any globally installed version.

**1. Prepare a test folder**

Download the `.tgz` file from the [nightly builds repository <strong><sup>↗</sup></strong>](https://github.com/usebruno/bruno-nightly-builds/releases) and keep the original filename unchanged. Then create a clean folder and move the file into it:

```bash
mkdir cli-portable-nightly
mv usebruno-cli-*.tgz cli-portable-nightly/
cd cli-portable-nightly
```

**2. Install the bundle locally**

```bash
npm init -y
npm install --offline ./usebruno-cli-<version>.tgz
```

**3. Verify the installation**

```bash
npx bru --version
# Expected output: the nightly version number, e.g. 3.5.0
```

**4. Run your collection using the local CLI**

The nightly binary is installed inside `cli-portable-nightly/node_modules/.bin/bru`. When you want to run a collection that lives in a **different folder**, you must use the full absolute path to that binary.

Using `./node_modules/.bin/bru` only works from inside the `cli-portable-nightly` folder itself.

```bash
# Step into your collection folder
cd /path/to/your-collection

# macOS / Linux — use the absolute path to the nightly binary
/path/to/cli-portable-nightly/node_modules/.bin/bru run --env <name>

# Windows
C:\path\to\cli-portable-nightly\node_modules\.bin\bru run --env <name>
```

If you are not sure of the path, run `pwd` while inside `cli-portable-nightly` to get it:

```bash
cd /path/to/cli-portable-nightly
pwd
# e.g. /Users/yourname/Downloads/cli-portable-nightly
```

Then use that output as the prefix:

```bash
cd /path/to/your-collection
/Users/yourname/Downloads/cli-portable-nightly/node_modules/.bin/bru run --env <name>
```

<Tip>
  To avoid typing the full path every time, export it as a shell variable for your session:

  ```bash
  export NIGHTLY_BRU=/Users/yourname/Downloads/cli-portable-nightly/node_modules/.bin/bru
  cd /path/to/your-collection
  $NIGHTLY_BRU run --env <name>
  ```
</Tip>


Release Information

Bruno follows semantic versioning. You can check the GitHub Releases ↗ page for: - Latest version information - Release notes - Bug fixes - New features included in each release