SilverBullet development can happen at various level.
At its most basic level, you can do a lot using Space Lua. If this does not give enough power, you can upgrade to Plugs. If that doesn’t suffice, you can contribute to SilverBullet’s core (see below).
SilverBullet’s client is written in TypeScript and built on top of the excellent CodeMirror 6 editor component. Additional UI is built using Preact. ES Build is used to build the frontend.
Plugs are also written in TypeScript.
The SilverBullet server is written in Go.
client/: The SilverBullet client, implemented with TypeScriptserver/: The SilverBullet server, written in Goplugs: Set of built-in plugs that are distributed with SilverBulletlibraries: A set of libraries (space scripts, page templates, slash templates) distributed with SilverBulletplug-api/: Useful APIs for use in plugs
lib/: Useful libraries to be used in plugssyscalls/: TypeScript wrappers around syscallstypes/: Various (client) types that can be references from plugsbin
plug_compile.ts the plug compilerscripts/: Useful scriptswebsite/: silverbullet.md website contentRequirements: * Deno 2.4 or newer. * Go 1.25 or newer * Make
It's convenient to also install air for development, this tool will watch your code base for changes and automatically rebuild:
go install github.com/air-verse/air@latest
Make sure your $GOPATH/bin is in your $PATH.
To build everything and run the server using air:
air <PATH-TO-YOUR-SPACE>
Note, that if you want to pass arguments to your SilverBullet binary like -p or -L you need to this as follows:
air -- -L 0.0.0.0 <PATH-TO-YOUR-SPACE>
Alternatively, to build the project without air:
make build
To run the resulting server:
./silverbullet <PATH-TO-YOUR-SPACE>
# Clean all generated files
make clean
# Typecheck and lint all code
make check
# Format all code
make fmt
# Run all tests
make test
Note, you do not need Deno nor Go locally installed for this to work:
docker build -t silverbullet .
To run:
docker run -p 3000:3000 -v <PATH-TO-YOUR-SPACE>:/space silverbullet