npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@owncast/plugin-sdk

v0.6.0

Published

SDK for authoring Owncast plugins in JavaScript

Readme

@owncast/plugin-sdk

SDK for authoring Owncast plugins in JavaScript or TypeScript. Plugins compile to WebAssembly and run sandboxed inside the Owncast server.

Most authors don't install this directly, instead, scaffold a new project with npx create-owncast-plugin@latest <slug> and the generated package.json already lists it as a dependency.

Quick start

npx create-owncast-plugin@latest my-plugin
cd my-plugin
npm install     # postinstall fetches the per-platform wasm toolchain
npm run build   # compiles src/plugin.js into an intermediate build artifact
npm run package # zips manifest + wasm + assets + icon.png into my-plugin.ocpkg
npm test        # runs scenarios from __tests__/

Then install my-plugin.ocpkg in Owncast. From the admin's Plugins page click Upload plugin and pick the file, or copy it directly to the server's data/plugins/ directory. Toggle Enabled on the plugin's row to load it.

Writing a plugin

const { definePlugin, owncast, filter } = require("@owncast/plugin-sdk");

module.exports = definePlugin({
  onChatMessage(msg) {
    owncast.chat.send(`echo: ${msg.body}`);
  },

  filterChatMessage(msg) {
    return msg.body.includes("spam") ? filter.drop("spam") : filter.pass();
  },
});

Declare the permissions your plugin uses (chat.send for the example above) in plugin.manifest.json. The full author guide covers every event handler, host API, and the testing harness:

→ Owncast Plugin Author Guide

What's in the package

  • index.js, runtime: definePlugin, the owncast.* host wrappers, the filter constructor.
  • index.d.ts, TypeScript declarations for editor autocomplete on every event payload and host API.
  • testing.js, JS test API (runScenarios) for writing __tests__/*.test.js with the full ergonomics of JavaScript instead of static JSON.
  • bin/owncast-plugin, CLI: build, test, serve, package subcommands.
  • scripts/postinstall.js, downloads the per-platform wasm toolchain (extism-js, wasm-merge, wasm-opt) and the Go test/serve runner on install.

License

MIT