@ciderapp/pluginkit is the open source plugin API for Cider.
It is the public bridge between a plugin and the closed source Cider frontend. The package does not reimplement Cider; it exposes the supported host APIs, Vue helpers, playback controls, context menu builders, dialog helpers, and plugin-scoped utilities that Cider provides at runtime.
If you are building a plugin, start with docs/API Documentation.md.
- Cider is the host application.
- PluginKit is the supported API surface exposed to plugins.
- The host injects runtime objects such as
window.__PLUGINSYS__,window.CiderApp, andwindow.CiderAudio. - Most helpers in this package are thin wrappers around those host objects.
import {
definePluginContext,
AppleMusic,
addMainMenuEntry,
subscribeEvent,
useMessageListener,
} from "@ciderapp/pluginkit";
const plugin = definePluginContext({
setup() {},
name: "Example Plugin",
identifier: "example-plugin",
description: "Example plugin for Cider",
version: "1.0.0",
author: "You",
repo: "https://github.com/you/example-plugin",
});
AppleMusic.playPause();
const removeMenuEntry = addMainMenuEntry({
label: "Example action",
onClick: () => console.log("Clicked"),
});
subscribeEvent("app:ready", () => {
console.log("Cider is ready");
});
useMessageListener("example:ping", (event) => {
console.log("Received", event);
});- Install the latest LTS version of Node.js.
- Enable Corepack with
corepack enable. - Install dependencies with
pnpm install. - Run the local test and typecheck loop with
pnpm dev.
- Use this repository for PluginKit bugs, missing APIs, and integration issues with Cider's plugin host.
- Do not report plugin-specific bugs here; report those to the plugin author.
Published under the MIT license.