A simple & minimal web browser.
Bro Computer strips browsing down to what matters: the page. One quiet row of chrome, no clutter, no noise — just a fast, focused window onto the web that gets out of your way the moment a page loads. Built on CEF.
Download the latest DMG from the latest release — it is rebuilt automatically on every commit to main. The release always holds exactly one DMG: the current build.
First launch: builds are ad-hoc signed (not notarized), so macOS blocks the first open with a "cannot be verified" warning. To get past it once:
- macOS 15 (Sequoia) and later: open the app, dismiss the warning, then go to System Settings → Privacy & Security, scroll down, and click Open Anyway. (The old right-click → Open shortcut no longer works on these versions.)
- Any version, from the terminal: run
xattr -dr com.apple.quarantine "/Applications/Bro Computer.app"(adjust the path to wherever you moved it), then open it normally.After the first successful open it launches like any other app.
Requires macOS 12.0+ on Apple Silicon.
Bro Computer updates itself. It checks once a day while running, and you can ask it to look now with Bro Computer → Check for Updates…. Updates download the full app in the background and install in place.
The menu item is greyed out until the maintainer sets up signing keys — see Enabling updates at the end. Builds without keys simply never check for updates.
- macOS 12.0+ on Apple Silicon
- Xcode Command Line Tools (
xcode-select --install— full Xcode not needed) - CMake 3.24+ and Ninja (
brew install cmake ninja) - A network connection for the first configure — CMake downloads Sparkle (~15 MB)
Download the exact CEF binary distribution pinned in CMakeLists.txt (one-time, ~250 MB):
CEF_VERSION=$(sed -n 's/^set(BRO_CEF_VERSION "\(.*\)")$/\1/p' CMakeLists.txt)
mkdir -p cef-project/third_party/cef
cd cef-project/third_party/cef
curl -L -o cef.tar.bz2 "https://cef-builds.spotifycdn.com/$(printf '%s' "$CEF_VERSION" | sed 's/+/%2B/g').tar.bz2"
tar xjf cef.tar.bz2 && rm cef.tar.bz2
cd ../../..cmake -G Ninja -B build
cmake --build build
open "build/Bro Computer.app"Updates are signed, and the signing key is deliberately not in this repo. These steps need a completed build above — the Sparkle tools come from it.
-
Generate a key pair with the copy of Sparkle the build already downloaded:
./build/_deps/sparkle-src/bin/generate_keys
It stores the private key in your login Keychain and prints the public key.
-
Export the private key and add it to the repository as a secret named
SPARKLE_PRIVATE_KEY(Settings → Secrets and variables → Actions):./build/_deps/sparkle-src/bin/generate_keys -x sparkle-private-key.txt
Delete that file once the secret is saved.
-
Only now, paste the printed public key into
SUPublicEDKeyinsrc/mac/Info.plist.in, replacingREPLACE_WITH_SPARKLE_PUBLIC_KEY, and commit it.
Do steps 2 and 3 in that order. A build carrying a real public key starts checking for updates, so if the secret isn't there yet those apps poll a feed that was never published. CI fails the build if it sees that combination rather than shipping it, but the ordering avoids the failure entirely.
Keep the key safe — Sparkle can only rotate it with a Developer ID signed build, so losing it means shipped apps can no longer be updated.