Evaluate Logseq (DB version) as a Trilium replacement #81
Labels
No labels
host:electra
host:fleet
host:lyra
host:vega
host:vega
phase:cutover
phase:deploy
phase:mcp
phase:module
phase:packaging
phase:prep
phase:validation
project:attic-postgres-lyra-rollout
project:auto-update-reliability
project:declarative-purity-cleanup
project:external-review
project:host-facts-refactor
project:lyra-nixos-deploy
project:lyra-service-stack-migration
project:nebula-mesh-network
project:security-hardening
project:service-stack-migration
project:vega-sillytavern-cutover
service:auto-update
service:mem0
service:sillytavern
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
nimmo/nixos-config#81
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
Investigate Logseq's database version as a
potential replacement for Trilium as the personal knowledge base / note store.
Why
Trilium currently serves as the local note store, but Logseq's DB edition
looks promising on the dimensions that matter most here. This is exploratory —
no commitment to migrate yet.
Must-haves (evaluation criteria)
synchronisation/backend infrastructure myself (no mandatory third-party
cloud). Confirm what the DB version ships for sync and whether it can be
self-hosted.
the AI workflow (OpenCode / Paseo / agents). At minimum it needs an API
(HTTP/GraphQL/local file or DB access) that scripts or agents can talk to
programmatically to read and write notes.
Nice-to-have
critical for the decision, but worth a quick spike to gauge effort and note
fidelity (attributes, hierarchy, attachments).
Open questions
else) and does that change self-hosting or backup story vs Trilium's SQLite?
building? What does the API surface actually expose?
self-hosting simplicity?
Decision criteria
Adopt only if (1) sync can be fully self-hosted and (2) there is a credible
MCP/API path for agents. Migration of existing Trilium notes is a secondary
concern.
Research findings
I did an initial reconnaissance pass — here's what I found about the evaluation criteria.
MCP server situation ✅ (with caveat)
Two MCP servers exist:
dailydaniel/logseq-mcp (Python, PyPI
mcp-server-logseq, 38★) — the serious one. Supports both stdio and Streamable HTTP transports, so it can run as a daemon like the current Trilium MCP. Has namespace-scoped writes, audit trail in the daily journal, and configurable verified Datalog queries. Caveat: README explicitly says it targets the file/Markdown version — "the newer DB version changed the underlying schema; some methods may behave differently there."joelhooks/logseq-mcp-tools (TypeScript, 70★) — simpler, also talks to Logseq's local HTTP API. Less featureful, more of a POC.
Both talk to Logseq's local HTTP API (port 12315) — they don't have direct data-layer access. Need a running Logseq instance (desktop or headless) with the API enabled.
The Streamable HTTP support matters: with it, we can run the MCP on Lyra (or both Lyra + Vega) and proxy over Nebula like the current Trilium setup. If DB version breaks the MCP, building or forking a compatible one is the critical path.
Desktop app in nixpkgs ✅
logseqversion 0.10.15 exists in nixpkgs. But: that's the classic file-based version. The DB version (2.0.1 beta) shipped July 13, 2026 and isn't in nixpkgs yet. Classic version is on Electron 27 (outdated/insecure — needs overriding per NixOS Wiki).Self-hosted sync for DB version ✅ exists, with friction
Logseq 2.0 ships a
deps/db-syncNode adapter that can be self-hosted. Docker wrapper at yshalsager/logseq-selfhost (56★, AGPL-3.0, active). Custom sync server URL support was merged in PR #12459.Friction points:
What this means for the evaluation
The must-haves are partially satisfied:
The nice-to-have (export path) and open questions are unchanged.
Recommended checklist additions
dailydaniel/logseq-mcpagainst Logseq 2.0 DB — spin up a DB graph, enable HTTP API, point the MCP at it, see what breaks.