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.
Related Articles
- Syncthing: secure, decentralized continuous file synchronization in Go — Syncthing is an open-source Go tool for continuous, secure, decentralized file synchronization across devices, emphasizi
- OpenAI Codex CLI: local-first AI coding assistant with ChatGPT integration — OpenAI Codex CLI brings AI coding assistance local to your terminal, integrating with ChatGPT plans for powerful hybrid
- Pathway LLM App: unified pipelines for scalable retrieval-augmented generation and AI search — Pathway LLM App provides integrated pipelines for scalable RAG and AI search, combining vector and full-text indexing wi
- Browser Harness: a self-healing LLM agent for browser automation via Chrome DevTools — Browser Harness enables LLMs to automate browsers by dynamically generating helper functions using the Chrome DevTools P
- Hatchet: durable background task orchestration with Go and Postgres — Hatchet offers a durable, fault-tolerant background task and workflow engine built with Go and Postgres. It supports com
→ GitHub Repo: TriliumNext/Trilium ⭐ 35,741 · TypeScript