Trilium suits a knowledge base that outgrows folders
Trilium stores notes in an arbitrarily deep tree, but it does not force each note to live in one place. Cloning can place the same note under several branches, while attributes support queries, organization, and scripts. That combination is useful for research material that belongs to a person, project, and topic at once. Text, code, canvas, mind map, relation map, geo map, and file notes all sit inside the same database. The README says the interface and performance can handle more than 100,000 notes, although that is the project's claim rather than our benchmark.
The application is unusually adjustable. Full-text search, hoisting, revisions, custom widgets, themes, public note sharing, a web clipper, and ETAPI automation cover much more than plain writing. A self-hosted server supplies browser access and synchronization, with OpenID and TOTP available for login. Trilium now also has authenticated MCP access, according to the v0.105.0 release notes. That breadth is the reason to pick it, but it also means a database can accumulate scripts, themes, attachments, and behaviors that require maintenance.
What happened when we ran it
Our sandbox cloned commit e6c7286 and counted 5,717 files, about 544,622 source lines, and a 121.6 MB checkout. pnpm installation succeeded in 60 seconds. The resulting dependency footprint was 1,783 MB, which is large for someone who only wants to take notes but understandable for a monorepo that ships desktop, server, documentation, and shared packages. The repository had 18 CI workflow files and a Compose file, but no Dockerfile at its root.
The harness did not find a root build script or root test target, so it skipped both steps. That result does not say the project cannot build or has no tests; it says the generic root commands our lab looks for were absent. The README gives narrower commands instead: start the server with pnpm run server:start, edit documentation through its own workspace command, or build the Windows desktop application with an Electron Forge filter. Contributors need to follow those project-specific paths rather than expect one root command to verify everything.
Releases are simpler than the 1,783 MB source tree
Most readers should install a packaged release. Windows and macOS users can download the current archive, Linux users have distribution packages and release binaries, and server operators get a documented container route. That is a much cleaner entry than the source checkout our lab installed. The project also publishes nightly builds, but labels the latest normal release as the stable choice. Source installation belongs to contributors or operators who need a custom build, not to someone evaluating the note model over a weekend.
A server still creates real work. Persistent storage and backups need deliberate paths, clients must match the server's sync version, and public sharing changes the security boundary. Phone access is primarily the mobile web interface of that server. The README links to community Android and iOS clients, but those are separate projects with their own update and compatibility concerns. Browser support is also narrow on paper: only the latest Chrome and Firefox versions are supported and tested.
Version 0.105.0 makes maintenance less improvised
The August 19, 2026 release adds space analysis, cleanup, image compression, encrypted compressed backups, and an actual restore flow. Those are practical features for a database intended to live for years. A content manager can list scripts, themes, and widgets and disable them without deletion, which gives users a way to isolate odd behavior. The same release moves LLM actions into the editor and accepts GitHub Copilot as a provider, but an external model account remains optional rather than a requirement for ordinary notes.
That release also carries migration warnings. Existing MCP clients need authentication reconfigured, general HTML in text notes is now disabled by default, and some div handling changed. ARM64 Docker users face a more specific host requirement after the image moved to Debian 13: older libseccomp support may not recognize clone3, causing startup failure. The notes describe a security-profile workaround, yet updating Docker alone does not fix the linked host library. Read those warnings before replacing a working instance.
Active development brings fixes and fresh regressions
The repository was pushed on August 25, 2026, six days after v0.105.0, and its open count of 690 combines issues and pull requests. Recent reports cover cross-origin OIDC logout, saved-search behavior, search parsing, tablet menus, and editor interactions. This is active maintenance, not a quiet archive, but a large issue and PR queue means upgrades deserve a backup and a short trial against the workflows you rely on. The release's new restore checks and rollback behavior make that caution easier to practice.
Trilium is a strong choice for one technical owner who wants a knowledge base to become personal infrastructure. It is less convincing as a frictionless shared workspace or a mobile-first notebook. Download the release, import a representative set of notes, and test search, sync, backup restore, and any community phone client before committing the main database. Contributors should budget for the 1,783 MB installed workspace and learn its filtered commands instead of judging the project by the missing root targets alone.

