FruityLink.Ui.Avalonia.Hosting
0.1.0
dotnet add package FruityLink.Ui.Avalonia.Hosting --version 0.1.0
NuGet\Install-Package FruityLink.Ui.Avalonia.Hosting -Version 0.1.0
<PackageReference Include="FruityLink.Ui.Avalonia.Hosting" Version="0.1.0" />
<PackageVersion Include="FruityLink.Ui.Avalonia.Hosting" Version="0.1.0" />
<PackageReference Include="FruityLink.Ui.Avalonia.Hosting" />
paket add FruityLink.Ui.Avalonia.Hosting --version 0.1.0
#r "nuget: FruityLink.Ui.Avalonia.Hosting, 0.1.0"
#:package FruityLink.Ui.Avalonia.Hosting@0.1.0
#addin nuget:?package=FruityLink.Ui.Avalonia.Hosting&version=0.1.0
#tool nuget:?package=FruityLink.Ui.Avalonia.Hosting&version=0.1.0
<div align="center">
<img src="assets/logo.svg" width="104" alt="FL Automate" />
<h1>FruityLink SDK</h1>
<p><strong>Write C# plugins that run inside FL Studio.</strong><br/> The open-source plugin system and FL Studio control surface behind <a href="https://fl-automate.com">FL Automate</a>.</p>
<p> <img src="https://img.shields.io/badge/license-MIT-8b5cf6?style=flat-square" alt="MIT license" /> <img src="https://img.shields.io/badge/.NET-9.0-7c3aed?style=flat-square" alt=".NET 9" /> <img src="https://img.shields.io/badge/FL%20Studio-2025%20%2F%202026-d946ef?style=flat-square" alt="FL Studio 2025/2026" /> </p>
<p> <a href="https://fl-automate.com">Website</a> · <a href="https://fl-automate.com/#pricing">Pricing</a> · <a href="docs/getting-started.md">Getting started</a> · <a href="#documentation">Docs</a> </p>
<p>🌱 <strong>1.5% of FL Automate AI usage goes to carbon credits</strong> — <a href="https://fl-automate.com/#pricing">fl-automate.com/#pricing</a></p>
</div>
FruityLink lets a plain C# class library run inside FL Studio and drive it programmatically — tempo, piano-roll notes, patterns, playlist clips, mixer, plugin parameters, native menus and toolbar buttons, even your own UI embedded in FL's window chrome.
The FL Automate AI assistant is a separate, closed-source plugin built on this SDK. Everything it can do in FL Studio, your plugin can do too.
Quickstart
Reference FruityLink.Plugins.Abstractions, implement one interface:
public sealed class MyPlugin : IFlPlugin
{
public string Id => "my-plugin";
public string Name => "My Plugin";
public string Description => "Logs the current tempo.";
public string Version => "1.0.0";
private IDisposable? _cmd;
public Task EnableAsync(IPluginContext ctx, CancellationToken ct = default)
{
_cmd = ctx.Menu.AddCommand(FlNativeMenu.Tools, "Log tempo",
onInvoke: () => _ = Task.Run(async () =>
ctx.Log($"tempo = {await ctx.Fl.GetTempoAsync()} BPM")));
return Task.CompletedTask;
}
public Task DisableAsync(CancellationToken ct = default)
{
_cmd?.Dispose();
return Task.CompletedTask;
}
}
Drop the build output into <host-dir>\plugins\MyPlugin\ and enable it from Tools ▸ FL Plugins.
Rebuild and it hot-reloads. Full example: samples/HelloFl.
What you get
INativeFlControl— a typed, safe control surface: channels, patterns, notes, mixer, playlist, transport, markers, projects, arrangements, plugin params, automation.- Native menu + toolbar integration — commands and toggles in FL's own UI.
- UI embedding — host Avalonia, WPF, or any
HWNDinside a real FL editor form. - Hot reload + isolation — each plugin loads in its own collectible
AssemblyLoadContextfrom a shadow copy. - Fail-safe by design — FL functions are resolved by signature scan and refused rather than guessed; plugins never see raw memory primitives.
Documentation
- Getting started — first plugin, deploy, debug.
- Plugin lifecycle — discovery, isolation, pre-warm, hot reload.
- FL control API — the
INativeFlControlsurface and FL's value conventions. - Menus and toolbar — contributing to FL's native UI.
- Window embedding — your window inside FL, incl. the WPF helpers.
- Avalonia UI — Avalonia inside FL, and the gotchas that matter.
- Native bridge — architecture, protocol, build, FL version policy.
Building
dotnet build FruityLink.Sdk.slnx # managed SDK + sample
cmake -S native/bridge -B native/bridge/build -A x64 # native bridge (MSVC, x64)
cmake --build native/bridge/build --config Release
License
MIT © Realynx
<div align="center"><sub> Made for producers who script. <a href="https://fl-automate.com/#pricing">FL Automate pricing</a> — 🌱 1.5% of AI usage funds carbon credits. </sub></div>
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net9.0
- Avalonia (>= 11.3.18)
- Avalonia.Desktop (>= 11.3.18)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0 | 44 | 7/10/2026 |