SilverBullet is a Programmable, Private, Browser-based, [Open Source](Open Source), [Self Hosted](Self Hosted), Personal [Knowledge Database](Knowledge Database).
Yowza! That surely is a lot of adjectives to describe, effectively, 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|Lua](Space Lua|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 Page|Pages (called a Space). You navigate your space using the [Page Picker](Page Picker) like a traditional notes app, or through Link|Links like a wiki (except they are [Linked Mention|bi-directional](Linked Mention|bi-directional)).
If you are the writer type, you’ll appreciate SilverBullet as a clean Markdown editor with [Live Preview](Live Preview). If you have more of an outliner personality, SilverBullet has Outlines|Outlining tools for you. Productivity freak? Have a look at Task|Tasks. More of a database person? You will appreciate Object|Objects and [Space Lua/Integrated Query|Queries](Space Lua/Integrated Query|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](Space Lua) (SilverBullet’s Lua dialect), or to use it to create custom Command|Commands, [Page Template|Page Templates](Page Template|Page Templates) or API/widget|Widgets.
You were told there’s no such thing as a silver bullet. You were told wrong.
Dynamically generating content, programmable notes... why would you want that, and how does it work?
Let’s say you have documented a set of product features in individual pages that you’ve Tag|tagged with a #feature tag, and annotated with a few custom Frontmatter Attribute|Attributes.
With a simple [Space Lua/Integrated Query|Query](Space Lua/Integrated Query|Query) and Template, you can now dynamically build a product feature list, ordered by awesomeness (Alt-click or hover and click the edit button to see the underlying code):
${query[
from f = tags.feature
where f.tag == "page"
order by f.awesomeness desc
select templates.featureItem(f)
](
from f = tags.feature
where f.tag == "page"
order by f.awesomeness desc
select templates.featureItem(f)
)}
(The template generating the feature bullet items can be found in [^Library/Website Templates](^Library/Website Templates))
Neat huh? A few more use cases.
Let’s say you want to have a list of your 5 modified pages. We can do that: ${query[ from p = tags.page order by p.lastModified desc limit 5 select templates.pageItem(p) ]( from p = tags.page order by p.lastModified desc limit 5 select templates.pageItem(p) )}
Maybe you want to collect all Task|Tasks that you have not yet completed from across your space? No problem: ${query[ from t = tags.task where not t.done limit 3 select templates.taskItem(t) ]( from t = tags.task where not t.done limit 3 select templates.taskItem(t) )}
That all sounds nice, but what does that look like in practice? Well, if you’re wondering purely about looks: have a look around — this very website is hosted as a read-only SilverBullet instance. You probably already figured this out.
If you’d like a bit of a tour and demo, give this a watch: ${embed.youtube "https://www.youtube.com/watch?v=mik1EbTshX4"} Want to see even more? Here is a whole playlist with instruction videos that go more in depth.
As mentioned, SilverBullet is a [Self Hosted](Self Hosted) web application. This is great if you care about [Data Sovereignty](Data Sovereignty), but it does mean you need to Install it on a server yourself. Perhaps you do this on a Raspberry Pi you didn’t have a use for, or a VPS somewhere in the cloud. SilverBullet is distributed as a single self-contained server Install/Binary or Install/Docker container.
note Note Alternatively, there is now also a desktop edition named “SilverBullet+“ that you may want to try.
While this is a bit more complicated to set up than simply downloading desktop app or signing up for an account with some online service, self hosting is a path to both [Data Sovereignty](Data Sovereignty) and to access your content from any device with a modern Browser.
Ready? Proceed to Install, then follow [Getting Started](Getting Started) to learn the basics.