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.
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
```
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 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.
| 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.
.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