bn-loader 0.1.0

A profile launcher for Binary Ninja that manages multiple configurations
bn-loader-0.1.0 is not a library.

bn-loader

A profile launcher for Binary Ninja that lets you manage multiple configurations. If you work with different Binary Ninja setups (personal vs commercial licenses, different plugin sets, separate configs for development), this tool makes switching between them painless.

Installation

From crates.io

cargo install bn-loader

From source

git clone https://github.com/alecnunn/bn-loader

cd bn-loader

cargo install --path .

Pre-built binaries

Download from the releases page for Windows, Linux, and macOS.

Quick Start

  1. Copy example.config.toml to ~/.config/bn-loader.toml
  2. Edit the file to define your profiles
  3. Run bn-loader <profile-name> to launch

Configuration

bn-loader looks for its config file in these locations (in order):

  1. ~/.config/bn-loader.toml (recommended)
  2. Next to the executable

A basic config looks like this:

[global]

default_profile = "personal"

check_updates = true



[profiles.personal]

install_dir = "C:\\Program Files\\Binary Ninja Personal"

config_dir = "C:\\Users\\You\\AppData\\Roaming\\Binary Ninja Personal"



[profiles.commercial]

install_dir = "C:\\Program Files\\Binary Ninja"

config_dir = "C:\\Users\\You\\AppData\\Roaming\\Binary Ninja"

See example.config.toml for a full example with Linux and macOS paths.

Usage

# Launch a profile

bn-loader personal


# Launch default profile (if configured)

bn-loader


# List available profiles

bn-loader --list


# Launch with debug output

bn-loader personal --debug


# Check for updates

bn-loader --check-update

Commands

init - Create a new profile from an existing one:

bn-loader init dev --template personal --config-dir ~/bn-dev-config

This copies the license and install directory from the template but gives the new profile its own config directory.

sync - Copy settings between profiles:

# Sync from personal to all other profiles

bn-loader sync --from personal


# Sync to a specific profile

bn-loader sync --from personal --to commercial


# Preview changes without applying

bn-loader sync --from personal --dry-run

License files and other sensitive data are excluded by default. You can add more exclusions in the [sync] section of your config.

plugins - List installed plugins for a profile:

bn-loader plugins personal

diff - Compare two profiles:

bn-loader diff personal commercial

completions - Set up shell completions:

bn-loader completions bash

bn-loader completions zsh

bn-loader completions fish

bn-loader completions powershell

Shell Completions

bn-loader supports tab completion for profile names and commands. Run bn-loader completions <shell> for setup instructions specific to your shell.

Global Options

These go in the [global] section:

Option Default Description
default_profile none Profile to launch when no argument given
color "auto" Color output: "auto", "always", "never"
check_updates true Check GitHub for new releases on launch
backup_retention 5 Number of sync backups to keep (0 = unlimited)
debug false Enable debug logging globally

Profile Options

Option Required Description
install_dir yes Path to Binary Ninja installation
config_dir yes Path to user data directory
executable no Binary name (defaults to binaryninja.exe on Windows, binaryninja elsewhere)
debug no Enable debug logging for this profile

License

BSD-3-Clause. See LICENSE for details.