SilverBullet at its core is bare bones in terms of functionality, most of its power it gains from plugs.

Plugs are an extension mechanism (implemented using a library called PlugOS) that runs “plug” code in the browser using web workers.

Plugs can hook into SB in various ways:
  • Extend the Markdown parser and its syntax
  • 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. Typically, management of plugs in the _plug folder is done using Plug Management.

Core plugs

These plugs are distributed with SilverBullet and are automatically enabled:
plug where uri = null order by name render [[internal-template/plug]]

Third-party plugs

These plugs are written either by third parties or distributed separately from the main SB distribution.
plug where uri != null order by name render [[internal-template/plug]]

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