Noureddine RAMDI / Trilium Notes: a self-hosted hierarchical note-taking system with rich scripting and synchronization

Created Sat, 02 May 2026 20:07:04 +0000 Modified Sat, 23 May 2026 20:41:27 +0000

TriliumNext/Trilium

Trilium Notes tackles a common pain point: managing large personal knowledge bases with a hierarchical structure while retaining the flexibility of rich editing and robust synchronization. It stands out by combining a desktop-like experience built on modern web tech with self-hosted synchronization and a powerful scripting engine, giving users a deep level of customization beyond typical note apps.

What Trilium Notes does and its architecture

Trilium Notes is an open-source, cross-platform hierarchical note-taking application designed to help users build and maintain extensive personal knowledge bases. At its core, it supports a rich WYSIWYG editor as well as code editing with syntax highlighting, enabling versatile content creation.

The architecture consists of a desktop client built with TypeScript and Electron, providing a native-like app experience across Windows, macOS, and Linux. There’s also a server component that supports self-hosted synchronization, allowing users to keep notes in sync across multiple devices without relying on third-party cloud services. The app also offers a mobile web interface for access on smartphones and tablets.

A standout feature is the attribute system, which serves both organizational and scripting purposes. Notes can have custom attributes that are used for filtering, querying, and automation via the built-in scripting engine and REST API. Visualization tools like canvas, mind maps, and geo maps extend the ways users can interact with and explore their data.

Under the hood, the project leverages modern JavaScript tooling with TypeScript for type safety and Electron to bridge web technologies with native desktop capabilities. The synchronization is encrypted and designed to scale well, with the README citing usability and performance with over 100,000 notes.

Technical strengths and tradeoffs

Trilium Notes’ technical strength lies in its combination of a rich, desktop-like UI built on web technologies and a self-hosted backend that prioritizes data privacy and control. The choice of Electron and TypeScript allows for rapid development and a consistent UX across platforms while still delivering a performant app.

The codebase is surprisingly clean for a large-scale TypeScript project, with clear separation between core functionalities like note editing, synchronization, and API handling. The scripting engine and REST API stand out as features that allow deep customization and automation. This means users can script workflows, create custom views, or integrate Trilium with other systems programmatically.

The synchronization mechanism emphasizes security with strong encryption and supports offline-first usage. This is an important tradeoff: while relying on self-hosted servers requires more setup and maintenance than cloud alternatives, it gives users full ownership of their data and control over synchronization policies.

Visualization options such as mind maps and canvas views are well-integrated, providing users with flexible ways to explore complex note hierarchies. However, these features come with a learning curve, and the interface can feel dense for newcomers.

Overall, the project balances complexity and power, making it well suited to technically inclined users or those who want a deeply customizable note-taking platform. The tradeoff is that casual users might find the setup and feature set more involved than simpler note apps.

Quick start

Windows / MacOS

Download the binary release for your platform from the latest release page, unzip the package and run the trilium executable.

Linux

If your distribution is listed in the table below, use your distribution’s package.

You may also download the binary release for your platform from the latest release page, unzip the package and run the trilium executable.

TriliumNext is also provided as a Flatpak, but not yet published on FlatHub.

Browser (any OS)

If you use a server installation (see below), you can directly access the web interface (which is almost identical to the desktop app).

Currently only the latest versions of Chrome & Firefox are supported (and tested).

Mobile

To use TriliumNext on a mobile device, you can use a mobile web browser to access the mobile interface of a server installation (see below).

See issue https://github.com/TriliumNext/Trilium/issues/4962 for more information on mobile app support.

If you prefer a native Android app, you can use TriliumDroid. Report bugs and missing features at their repository. Note: It is best to disable automatic updates on your server installation (see below) when using TriliumDroid since the sync version must match between Trilium and TriliumDroid.

Server

To install TriliumNext on your own server (including via Docker from Dockerhub) follow the server installation docs.

Building the Executable

Download the repository, install dependencies using pnpm and then build the desktop app for Windows:

git clone https://github.com/TriliumNext/Trilium.git
cd Trilium
pnpm install
pnpm run --filter desktop electron-forge:make --arch=x64 --platform=win32

For more details, see the development docs.

Verdict

Trilium Notes is a solid choice for users who want a powerful, hierarchical note-taking system with deep customization and self-hosted synchronization. Its rich editor, scripting engine, and visualization tools make it particularly suited for developers, researchers, and knowledge workers comfortable with some setup and learning curve.

The tradeoff is that it may feel heavyweight for users looking for a simpler, out-of-the-box note app with minimal configuration. The reliance on Electron means a larger footprint compared to native apps, and self-hosting requires some infrastructure knowledge.

For anyone building a personal knowledge base that scales beyond tens of thousands of notes and wants full control over their data and automation, Trilium Notes is worth exploring.


→ GitHub Repo: TriliumNext/Trilium ⭐ 35,741 · TypeScript