references:

  • client/plugos/*
  • plugs/builtin_plugs.ts

SilverBullet at its core is bare bones in terms of functionality, most of its power it gains from plugs and [Space Lua](Space Lua).

Plugs are an extension mechanism that runs “plug” code in the browser using web workers.

Plugs can hook into SB in various ways:

  • Define new commands and keybindings
  • Respond to various events triggered either on the server or client-side
  • Run recurring and background tasks.
  • Define their own extension mechanisms through custom events

Each plug runs in its own sandboxed environment and communicates with SB via syscalls that expose a vast range of functionality. Plugs can be loaded, unloaded, and updated without having to restart SilverBullet itself.

Plugs are distributed as self-contained JavaScript bundles (ending with .plug.js). SilverBullet will load all core plugs bundled with SB itself (listed below), as well as any additional plugs stored in the _plug folder in your Space|space.

Available plugs

The SilverBullet ‘Plugs’ category has a list of third-party plugs you can try.

  • SilverSearch: implements a better full text search
  • TreeView: adds a tree-view to your UI
  • PDF: enables viewing and annotation of PDF documents with PDF.js
  • PlantUML: adds plantuml diagram rendering
  • Draw.io: adds drawio diagram rendering and editing
  • Excalidraw: adds excalidraw diagram rendering and editing

Development

Want to develop your own plugs? Have a look at Plugs/Development.