The plugin you need,
built by your agent.
An effect for ryolune or kimchi, a filter for nori, a function for folio: describe it in a sentence and the app's agent writes it in Rust, builds it and loads it, without a restart. Every app also has its stock plugins and loads the plugin formats of its trade.
Free, like everything in lsuite · native Rust · in all four apps · one switch per plugin
One Plugins area in every app.
A plugin is a folder: a plugin.toml and a library built against the app's Rust SDK (the contract). Each app's Plugins area shows four things.
Ships with the app
The plugins every copy of the app comes with, by kind, each with a line saying what it does.
Yours, on this computer
The plugins you built or added, and the compatible formats found on your computer, each with an on/off switch always in view.
Your trade's plugins
CLAP, VST3 and Audio Units in ryolune, frei0r and .cube LUTs in kimchi, and what each app can really load.
With your agent
One field: "Describe the plugin you want". The agent's progress shows as it works, and the plugin appears in Installed, loaded.
Describe it. The agent does the rest.
In any app's Plugins area, "Describe the plugin you want" starts the app's agent on the plugin recipe. Any agent works: Claude Code, Codex, an API key or a local model.
- It scaffolds a crate from the app's SDK in
~/.lsuite/plugins-src/<app>/(plugin.new), and offers to install Rust if it's missing. - It builds until it's green (
plugin.build), fixing what the compiler says, error by error. - It installs and tries it (
plugin.publishLocal): applied to your selection, a frame or a bar rendered, and looked at before the agent says it's done. - Or from the lsuite app: its Plugins area lists the plugins installed for every app, removes them, and sends a plugin request to the right app's agent.
Building and installing plugins is an agent permission of its own: it stays off for API agents until you allow it.
# what the agent runs (you can too) ryolune-cli plugin.guide ryolune-cli plugin.new name=tape-warmth kind=effect ryolune-cli plugin.build name=tape-warmth ryolune-cli plugin.publishLocal name=tape-warmth # a plugin someone gave you: a bundle folder ryolune-cli plugin.install path=~/Downloads/com.example.tape-warmth
Native code, under your control.
A plugin runs inside the app and can do what the app can do. Build your own, or install bundles from people you trust.
Never blocking the window
A plugin runs where the app's own effects run: the audio thread, the compositor, the filter worker. Its ABI version is checked before anything is called.
A panic switches it off
Every call into a plugin is guarded: one that panics is disabled, and the app keeps going.
Off in one click
Every plugin has an on/off switch in the app's Plugins area, and the lsuite app removes the ones you no longer want.
Before you build one.
Does it cost anything?
No. Plugins, like the apps, are free: no account, no plan. You only need an agent, and the ones you already have work.
Do I need to know Rust?
No. The agent writes the code, builds it and fixes it. If you do know Rust, the crate is yours to read and change: ~/.lsuite/plugins-src/<app>/<name>/.
How do I share a plugin?
A plugin is a folder in ~/.lsuite/plugins/<app>/. Send it, or the source crate, and the other person installs it with plugin.install or their agent. Only install plugins from people you trust: a plugin is native code.
Where did the marketplace go?
lsuite became entirely free on 2026-10-10: no accounts, no plans, so no store either. Building plugins with your agent, the part that mattered, stays in every app.