skip to content

compare / logseq

tnotes vs Logseq

Outliner-style knowledge base with daily journals, block references and a plugin API; file graphs are Markdown or Org files, the newer DB graphs are SQLite.

tnotes

terminal app · macOS, Linux · MIT · free · v1.3.0

Logseq

desktop app · Linux, macOS, Windows (Electron); iOS, Android; web app for DB graphs · AGPL-3.0 · Free. Logseq Sync (beta) requires an Open Collective contribution ($5 or $15/month).

Logseq is an outliner: every line is a block with a bullet, blocks nest, and any block can be referenced from anywhere by its ((uuid)). Pages are Markdown or Org files in a graph directory (pages/, journals/, assets/, logseq/config.edn), and the app rebuilds a Datascript database from them on load. Linked References under each page, #tag as a page reference, key:: value properties on any block, and Datalog queries are what people stay for.

The project is mid-transition. The “DB version” replaces file graphs with a SQLite database, adds a real-time collaboration sync (RTC, alpha), a new mobile app, and a Node CLI (logseq graph list, logseq list page --output json, logseq sync start). The README calls the DB version beta and warns that data loss is possible. File graphs still work in the stable release, and the file-graph documentation at docs.logseq.com is the part that matters for a plain-text workflow.

tnotes is the opposite shape: no outliner, no block identities, no queries. A note is a Markdown file whose first line is its title; links resolve by title; the TUI and the tnotes CLI are the whole interface. If your notes are Logseq-shaped (bullets everywhere, block refs, properties) tnotes will show them but not understand them. If they are documents with headings and [[links]], both tools read the same files.

Feature comparison

FeaturetnotesLogseq
Storage format✓ plain .md files, folders are directories~ file graphs: .md/.org in pages/ and journals/; DB graphs (beta): SQLite
Runs in the terminal✓ TUI (ratatui) plus a headless CLI✗ Electron desktop app; the new Node CLI targets DB graphs only
[[Wikilinks]]✓ [[Title]] with completion; rewritten on rename✓ [[page]] with autocompletion; ((uuid)) block refs
Backlinks✓ overlay + backlinks in JSON✓ Linked References and Unlinked References per page
#tags✓ #tag and nested #work/project, parsed from text✓ #tag is a page reference; tags:: page property
Headless CLI✓ ls, search, cat, new, append, write, trash, restore~ logseq CLI (Node) for DB graphs: list, query, sync; nothing for file graphs
JSON output for scripts / agents✓ --json on every command~ CLI --output json, DB graphs only
Live reload on external edits✓ file watcher; dirty tabs keep their text~ desktop watches the graph; a conflicting external edit prompts to reload
Vim keys✓ vim or emacs keys (edtui)~ custom :shortcuts in config.edn; community vim-shortcuts plugin
Mouse support✓ click, double-click, right-click menus, drag✓ GUI: drag blocks, sidebar, whiteboards
Sync~ any file sync: git, Syncthing, iCloud, Dropbox~ any file sync for file graphs; Logseq Sync (paid beta, E2EE); RTC alpha for DB graphs
Encryption~ encrypt the folder: FileVault, gocryptfs~ Logseq Sync encrypts with age; local graph is plain files
Mobile app✗ files sync to any mobile Markdown editor✓ iOS and Android; DB-graph mobile app in alpha
Plugins✗✓ plugin API, marketplace, themes
Open source✓ MIT, Rust✓ AGPL-3.0, ClojureScript

✓ yes · ~ partial or via the file system · ✗ no

Choose Logseq if

  • You think in outlines and block references, not documents. Nothing in tnotes addresses a block.
  • Daily journals, TODO/DONE task states, scheduled and deadline dates, and Datalog queries over properties are the workflow.
  • You want a plugin ecosystem, PDF annotation, whiteboards, and mobile apps that read the same graph.
  • Logseq Sync’s end-to-end encryption (file names included) fits your threat model better than syncing a folder yourself.

Choose tnotes if

  • You want notes that any Markdown tool reads without an outliner’s - on every line and id:: lines under referenced blocks.
  • You need a headless interface today: tnotes ls --json, search, cat, new, append, write work on a plain folder, not a DB graph, and a running TUI picks the changes up.
  • You work over SSH or in a terminal multiplexer and want the notes app in the same window as the shell.
  • A single static binary (Homebrew, cargo, or a tarball) instead of an Electron app; no beta storage format to migrate through.

Using Logseq and tnotes together

A Logseq file graph is a directory of Markdown, so it can be a tnotes root. pages/ and journals/ show up as folders; assets/ has no .md files and is empty in the tree.

tnotes ~/graphs/work                  # add the graph as a root
tnotes ls --folder work/journals --json | jq '.[0]'
tnotes search "retro" --dir ~/graphs/work

What tnotes does with Logseq’s conventions:

DB graphs are SQLite and have no .md files on disk; there is nothing for tnotes to open. Use logseq graph export --type edn for those, or keep a file graph.

FAQ

? Can I open a Logseq graph in a terminal?

Logseq has no TUI. Its Node CLI (logseq) works only against DB graphs (SQLite). For a file graph, point a terminal Markdown tool at the directory: tnotes ~/graphs/work lists pages/ and journals/ as folders and searches their text. Outliner semantics (block refs, properties, queries) are not interpreted.

? Does Logseq store notes as Markdown files?

File graphs do: one .md (or .org) per page under pages/, one per day under journals/, plus logseq/config.edn. Every block is a - bullet and Logseq adds id:: and other key:: value property lines as needed. DB graphs, the beta default in the DB version, store the graph in SQLite; export to EDN or SQLite with the CLI.

? Is Logseq Sync end-to-end encrypted?

Yes. Per the Logseq docs, each synced graph is encrypted with a password using age; file contents and file names are encrypted before they reach AWS. It is a beta feature available to active Open Collective contributors, and Logseq advises against combining it with iCloud, Syncthing or Dropbox on the same graph.

Sources

Logseq facts checked on 2026-09-22 against: