silverbullet is a free, open source note taking & knowledge management project written in TypeScript and released under MIT. It has 6,093 GitHub stars, 482 forks and 345 open issues, and was last pushed 10 hours ago. On this registry it ranks #22 of 37 tracked projects in Note Taking & Knowledge Management, with 5 head-to-head comparisons available.

What is silverbullet?

SilverBullet is an open source, self-hosted, browser-based personal knowledge database that stores notes as Markdown pages and makes them programmable with Space Lua, aimed at individual knowledge workers who want a notes app they can script rather than merely configure.

What it is

SilverBullet describes itself as a Programmable, Private, Browser-based, Open Source, Self Hosted, Personal Knowledge Database, which is a longer way of saying it is a browser-based Markdown editor programmable with Lua. Content lives as a collection of Markdown pages called a Space. Users navigate that space through a Page Picker like a conventional notes app, or through wiki-style links that are bi-directional. The editor offers live preview, and the application ships with its own database and query language alongside a fully integrated Space Lua scripting environment, so notes become a system that can be queried, generated and automated rather than only written.

Architecturally, the client is written in TypeScript and built on CodeMirror 6, with additional interface elements in Preact and a build handled by ESBuild. The backend is written in Rust as a Cargo workspace and serves the pre-built client bundle, the file and space HTTP API, authentication, and a headless-Chrome runtime for server-side Lua. The project sits in the Productivity and Utilities category, under Note Taking and Knowledge Management, and carries topics including end-user-programming, knowledge-management, lua, markdown, note-taking and personal-knowledge-management.

The concrete problem it addresses is the gap between a plain Markdown notes app and a programmable system. A conventional editor stores and links text; SilverBullet adds Objects and Queries through SLIQ and a scripting dialect so that content can be dynamically generated, and so that custom Commands, Page Templates and Widgets can be defined against the same data. It replaces the combination of a static Markdown editor plus separate scripting and database glue that users would otherwise assemble themselves.

Key capabilities

  • Live-preview Markdown editor built on CodeMirror 6, with pages stored as plain Markdown files inside a Space.
  • Wiki-style bi-directional links, complementing Page Picker navigation for a conventional notes workflow.
  • Objects and Queries, referred to as SLIQ, providing a built-in database and query language over pages.
  • Space Lua, SilverBullet's Lua dialect, for dynamically generating content and authoring custom Commands, Page Templates and Widgets.
  • Outlining tools and a Tasks feature for outliner and task-management workflows.
  • A standalone silverbullet Rust server binary, plus an sb CLI client for command-line access.
  • Plugin support: built-in plugs in TypeScript, a plug compiler at bin/plug-compile.ts, and plug-api/ published to NPM, with syscalls/ TypeScript wrappers.

Who uses it and how

  • Writers use it as a clean Markdown editor with live preview, keeping content as plain Markdown pages rather than a proprietary format.
  • Outliners use the dedicated Outlining tools, while productivity-focused users work through Tasks.
  • Database-oriented users keep structured data in pages and query it through Objects and Queries (SLIQ).
  • Developers comfortable with scripting extend the system with Space Lua, defining Commands, Page Templates and Widgets, or build plugs against plug-api/.
  • Self-hosters run the silverbullet server binary themselves; a Docker image, zefhemel/silverbullet, is published on Docker Hub and is referenced by the project's badge.

Getting started

The README directs installation to the instructions at silverbullet.md/Install, and a Docker image named zefhemel/silverbullet is published for deployment. Building from source requires Node.js 24+ and npm 10+, a stable Rust toolchain installed via rustup, and the make setup target, with .nvmrc and .node-version files provided for version managers.

How it compares

The facts provided name no paid products that SilverBullet replaces, and no comparable tools are listed in this registry, so on the evidence available it stands alone in this registry. Its distinguishing combination is MIT licensing, self-hosting, content held as plain Markdown in a Space the user owns, and programmability through Space Lua rather than configuration alone.

When to use it — and when not to

A self-hoster must operate the Rust server binary, provide the headless-Chrome runtime used for server-side Lua, and install Node.js 24+ with npm 10+ and a stable Rust toolchain to build the client and plugs from source. The README itself is sparse on installation, deferring to silverbullet.md/Install, and the repository carries 345 open issues, so users wanting a managed service or a zero-ops hosted product will not find one described in these facts. It suits people who are willing to run their own server and to script their notes; it is a poor fit for users who want no operational responsibility and no scripting at all.

project readme (upstream, from github) — read inline

GitHub Repo stars Docker Pulls GitHub Downloads (all assets, all releases) GitHub contributors Ask DeepWiki

SilverBullet

SilverBullet is a Programmable, Private, Browser-based, Open Source, Self Hosted, Personal Knowledge Database — a fancy term for a "notes app on steroids".

Yowza! That surely is a lot of adjectives to describe a browser-based Markdown editor programmable with Lua.

Let’s get more specific.

SilverBullet combines a clean live-preview editor with wiki-style linking, a built-in database and query language, and a fully integrated Space Lua scripting environment, turning your notes into a programmable system that grows with you.

In SilverBullet you keep your content as a collection of Markdown Pages (called a Space). You navigate your space using the Page Picker like a traditional notes app, or through Links like a wiki (except they are bi-directional).

If you are the writer type, you’ll appreciate SilverBullet as a clean Markdown editor with Live Preview. If you have more of an outliner personality, SilverBullet has Outlining tools for you. Productivity freak? Have a look at Tasks. More of a database person? You will appreciate Objects and Queries (SLIQ).

And if you are comfortable programming a little bit — now we’re really talking. You will love dynamically generating content with Space Lua (SilverBullet’s Lua dialect), or to use it to create custom Commands, Page Templates or Widgets.

You were told there’s no such thing as a silver bullet. You were told wrong.

Much more detail can be found on silverbullet.md

Installing SilverBullet

Check out the instructions.

Developing SilverBullet

SilverBullet's frontend ("client") is written in TypeScript and built on top of the excellent CodeMirror 6 editor component. Additional UI is built using Preact. ESBuild is used to build the frontend.

The server backend is written in Rust (a Cargo workspace). It serves the pre-built client bundle, the file/space HTTP API, authentication, and a headless-Chrome runtime for server-side Lua.

Code structure

  • bin/silverbullet/: The standalone silverbullet server binary (Rust) (this is the one you generally run)
  • bin/sb/: The sb CLI client (Rust)
  • bin/plug-compile.ts: the plug compiler
  • client/: The SilverBullet client (browser, TypeScript)
  • server/: The SilverBullet server library (Rust): HTTP router, handlers, auth, runtime seam
  • server-common/: Shared Rust crate (space primitives, shared types)
  • server-runtime-chrome/: Headless-Chrome runtime backend (Rust)
  • plugs: Set of built-in plugs (TypeScript) that are distributed with SilverBullet
  • libraries: A set of libraries (space scripts, page templates, slash templates) distributed with SilverBullet (Space Lua)
  • plug-api/: Useful APIs for use in plugs and published to NPM
    • lib/: Useful libraries to be used in plugs
    • syscalls/: TypeScript wrappers around syscalls
    • types/: Various (client) types that can be references from plugs
  • scripts/: Useful scripts
  • docs/: documentation (also serves a silverbullet.md website content)

Requirements

  • Node.js 24+ and npm 10+: Used to build the frontend (client) and plugs
  • Rust (stable, via rustup): Used to build the server

The project includes .nvmrc and .node-version files. If you use nvm or another Node version manager, it will automatically use the correct Node.js version:

nvm use  # If using nvm

First, install dependencies:

make setup

To create a (release) build:

make

This will produce silverbullet and cli binaries in ./target/release/, run ./target/release/silverbullet to run the server.

Development workflow

SilverBullet has two halves you rebuild independently:

  • The client (TypeScript: client/) is built by ESBuild into client_bundle/, which the server then serves.
  • The server (Rust: server/, server-common/, server-runtime-chrome/, bin/silverbullet/) is a compiled binary.

Run the server in development with cargo run. A debug build serves the client bundle live from client_bundle/ on disk (a release build embeds it instead):

npm run build
cargo run <PATH-TO-YOUR-DATA-FOLDER>

When you change only the client (TypeScript in client/): you do not need to restart the server. Rebuild just the client bundle and reload the page in your browser — the debug server serves the freshly-built bundle straight from disk:

npm run build

To build a self-contained release binary (with the client bundle embedded), and run it:

make
./target/release/silverbullet <PATH-TO-YOUR-DATA-FOLDER>

Useful development tasks

# Clean all generated files
make clean
# Typecheck and lint all code
make check
# Format all code
make fmt
# Run all tests
make test
# Run benchmarks
make bench

Build a docker container

Note, you do not need Node.js nor Rust locally installed for this to work:

docker build -t silverbullet .

To run:

docker run -p 3000:3000 -v <PATH-TO-YOUR-DATA-FOLDER>:/data silverbullet

Frequently asked questions

Is silverbullet free to use?

silverbullet is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does silverbullet do?

An open source personal productivity platform built on Markdown, turbo charged with the scripting power of Lua

What is silverbullet written in?

silverbullet is primarily written in TypeScript. Its source is publicly available at https://github.com/silverbulletmd/silverbullet, and it has 6,093 GitHub stars.