-
Notifications
You must be signed in to change notification settings - Fork 7
Home
Serein supports local, opt-in plugins and themes for its native desktop client.
- A plugin is a sandboxed WebAssembly module. It can add native panels, message or composer tools, bounded local settings, and app-wide appearance overrides after the user grants the requested capabilities.
- A theme is a declarative JSON package. It can change supported colors, gradients, typography, spacing, control heights, and corner radii without running code.
Creators keep their source and license in their own public Git repository. Serein never clones that repository or runs its scripts on a user's computer. Users install a versioned .serein-extension artifact whose exact bytes are pinned in Serein's reviewed community catalog.
| I want to… | Start here |
|---|---|
| Add a native tool or settings panel | Create a plugin |
| Change the app's appearance | Create a theme |
| Test a package locally | Test and package |
| List a finished extension in Serein | Publish to the community catalog |
For plugins:
- Git and a public Git repository for your source and license
- Rust with the
wasm32-unknown-unknowntarget - Python 3 for Serein's small author-side packaging script
- A local Serein source checkout for offline testing
For themes, a text editor and Serein are enough. Git and a public repository are required when you publish to the catalog.
- Build and import the package locally. Importing does not grant capabilities or execute it.
- Publish the exact
.serein-extensionfile as a versioned release artifact in your repository. - Record its source commit, HTTPS release URL, exact byte size, and SHA-256 digest.
- Submit those values in a pull request to
extensions/catalog.json. - Maintainers review the source, artifact, capabilities, and license. Updates require the same review and renewed user consent.
The catalog is free. There are no automatic updates or background catalog refreshes. Disabling a plugin unloads it and removes Serein's downloaded package and plugin data.
Plugins do not receive network, filesystem, process, credential, microphone, camera, or direct Discord access. They run on demand in a bounded WebAssembly sandbox without WASI or host imports. A theme never executes code.
Read API and security reference before requesting capabilities or storing data.