README.md
July 30, 2026 · View on GitHub
MusicBee Remote (plugin)
A Plugin for MusicBee that allows you to control it through the MusicBee Remote Android Application
Application
Help
·
MusicBee Forum
·
Report Bug
·
Request Feature
Table of Contents
- About the Project
- Installation
- Getting Started
- Usage
- Contributing
- Building
- Testing
- Formatting
- Releasing
- License
About the Project
The plugin is an essential part of MusicBee Remote. It acts as a bridge that allows the Android application to communicate with MusicBee. The plugin exposes a socket server (TCP) that listens for incoming connections from the plugin.
It uses a text based protocol that is uses newline separated JSON messages. Those messages are then translated to calls of the MusicBee API.
Built With
The plugin core is written in Rust; the C# side is a thin shim over MusicBee's plugin API.
- serde / serde_json - wire codec
- tokio - the socket server and its per-connection tasks
- redb - embedded store for the library and cover caches
- MessagePack-CSharp - FFI DTO serialization
- Costura.Fody - embeds the managed dependencies into
mb_remote.dll - minisign-verify - release manifest signatures
Project Structure
mbrc-plugin/
├── packages/
│ ├── mbrc-core/ # Rust core (mbrc_core.dll): server, dispatch, caches, FFI
│ ├── mbrc-wire/ # Wire codec and handshake
│ ├── mbrc-discovery/ # UDP multicast discovery responder
│ ├── mbrc-capture/ # Capture and fixture tooling
│ ├── mbrc-release/ # Release manifest parsing, signature verification
│ ├── mbrc-helper/ # Elevated helper exe: firewall rule, staged update apply
│ └── plugin/ # MusicBee plugin (mb_remote.dll): entry point, API callbacks
├── tests/
│ ├── csharp/ # xUnit suite for the C# shim
│ └── golden/ # Committed golden wire traces
└── tools/
├── mbrc-cli/ # Headless CLI: send, monitor, capture, replay
└── api-debugger/ # Protocol testing app (Tauri + Vue, standalone)
The C# core was folded into the plugin project, so the managed side builds as a
single mb_remote.dll with its NuGet dependencies embedded by Costura. The
native mbrc_core.dll and mbrc-helper.exe are not embedded and ship
side-by-side with it.
Installation
Download the latest version from releases.
Installer (Recommended)
- Download
musicbee_remote_x.x.x.exe - Run the installer
- The installer will automatically detect your MusicBee installation and install the plugin
- Restart MusicBee if it was running
Note: The installer requires MusicBee 3.1 or later.
Manual Installation (ZIP)
Use this method for the Microsoft Store version of MusicBee or if you prefer manual installation:
-
Download
musicbee_remote_x.x.x.zip -
Extract the contents
-
Copy both
mb_remote.dllandmbrc_core.dllto your MusicBee Plugins folder:- Regular installation:
C:\Program Files (x86)\MusicBee\Plugins\ - Store version:
%LOCALAPPDATA%\Packages\...\LocalCache\Roaming\MusicBee\Plugins\
The plugin loads the native core at startup, so they must sit side by side.
- Regular installation:
-
Optionally copy
mbrc-helper.exeif you want the Windows Firewall rule added for you -
Restart MusicBee
Verify Installation
After installation, the plugin should appear in MusicBee under Edit > Preferences > Plugins.
Getting Started
As a developer there are a few steps you need to follow to get started:
Prerequisites
- Visual Studio 2026 Community (2022 also supported)
- .NET Framework 4.8 SDK
- MusicBee installed (for testing)
After getting the basic environment setup you just need to clone the project from command line:
git clone https://github.com/musicbeeremote/mbrc-plugin.git
or you could use your visual Git interface to clone the repository.
Installation
After cloning the project you can go and open the MBRC.sln solution in Visual Studio. The first
thing you need to do is to restore the NuGet dependencies so that you can start build the solution.
Usage
While building and testing the application you need a network interface that will listen for incoming connections. This has to be in the same network as the one where the device you use to test is.
If you are using a Windows Virtual Machine for development as I do, then you have to make sure that the
virtual machine is using a Bridged connection, otherwise you might not be able to connect to the plugin.
Contributing
Contributions are always welcome. The contribution guide should follow soon.
Building
You can build the application using any of these methods:
Visual Studio:
Open MBRC.sln and build the solution.
Command Line:
dotnet build -c Release
Build Script (Windows / PowerShell):
.\build-msbuild.ps1 # Release build (default)
.\build-msbuild.ps1 -Configuration Debug # Debug build
The build process:
- Builds the Rust core and helper for
i686-pc-windows-msvc - Compiles the plugin project into
mb_remote.dll, with Costura embedding the managed NuGet dependencies - In Debug mode, copies
mb_remote.dll,mbrc_core.dllandmbrc-helper.exeto MusicBee's Plugins folder
Note that build-msbuild.ps1 builds only the C# solution. Use .\build.ps1 for
a full build of both halves.
Testing
The C# suite uses xUnit:
dotnet test tests/csharp/MusicBeeRemote.Core.Tests.csproj
Note: these require Windows to run (net48 target framework).
The Rust suites run for the target the plugin actually ships as:
cargo test --workspace --target i686-pc-windows-msvc
Formatting
The project uses EditorConfig for consistent code formatting. Most IDEs support EditorConfig natively or via plugins.
Check formatting:
dotnet format --verify-no-changes
Apply formatting:
dotnet format
Key style rules:
- 4 spaces indentation for C# files
- Braces on new lines (Allman style)
- Sort
Systemusings first - Use explicit types for built-in types,
varwhen type is apparent
Releasing
Releases are automated via GitHub Actions when a version tag is pushed.
Version Management
The version is centralized in Directory.Build.props:
<VersionPrefix>1.5.0</VersionPrefix>
Every shipped component inherits this version automatically: the C# assemblies
through MSBuild, and mbrc-helper.exe through its build.rs, which reads the
same <VersionPrefix> at compile time. Bumping it here is the only edit needed.
CI may override the helper's stamp via the MBRC_VERSION environment variable so
nightlies carry their full suffixed version.
Creating a Release
- Update the version in
Directory.Build.props - Update
CHANGELOG.mdwith release notes - Commit the changes:
git add Directory.Build.props CHANGELOG.md git commit -m "chore: bump version to 1.5.0" git push - Create and push a tag:
git tag v1.5.0 git push origin v1.5.0
The CI pipeline will automatically:
- Build the plugin with the tagged version
- Create the NSIS installer (
musicbee_remote_1.5.0.exe) - Create the ZIP archive (
musicbee_remote_1.5.0.zip) - Generate SHA512 checksums
- Create build provenance attestations
- Publish a GitHub Release with all artifacts
Development Builds
Commits to main branch produce development builds with version suffix:
- Example:
1.5.0-nightly.123(where 123 is the build number)
These are available as workflow artifacts but not published as releases.
License
The source code of the application is licensed under the GPLv3 license. See LICENSE for more information
MusicBee Remote (Plugin for MusicBee)
Copyright (C) 2011-2026 Konstantinos Paparas
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.