A privacy-first, open-source platform for knowledge management and collaboration. Download link: http://github.com/logseq/logseq/releases. roadmap: http://trello.com/b/8txSM12G/roadmap
  • Clojure 71.1%
  • OCaml 10.3%
  • JavaScript 7.9%
  • CSS 3.7%
  • Swift 1.5%
  • Other 5.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Tienson Qin f11f5f81ee
Some checks failed
build-android.yml / enhance(rtc): support E2EE graphs in semantic API and PATs (#13671) (push) Failing after 0s
Build and Sync Plugin Docs / build-and-sync-docs (push) Has been skipped
CI / test (ubuntu-22.04) (push) Waiting to run
CI / CLI E2E tests (push) Waiting to run
CI / Spell Check with Typos (push) Waiting to run
CI / lint (push) Waiting to run
CLI sync stress / CLI sync/offline stress (push) Waiting to run
Clojure E2E / Build (push) Waiting to run
Clojure E2E / Test commands (push) Blocked by required conditions
Clojure E2E / Test editor (push) Blocked by required conditions
Clojure E2E / Test graph-properties (push) Blocked by required conditions
Clojure E2E / Test outliner-rtc (push) Blocked by required conditions
Clojure E2E / Test remaining (push) Blocked by required conditions
Clojure E2E / Mark success (push) Blocked by required conditions
Clojure RTC E2E / Build (push) Waiting to run
Clojure RTC E2E / Test run-rtc-extra-part2-test (push) Blocked by required conditions
Clojure RTC E2E / Test run-rtc-extra-test (push) Blocked by required conditions
logseq/cli CI / release (push) Has been skipped
CI / db-graph-test (ubuntu-latest) (push) Failing after 7s
logseq/cli CI / test (push) Failing after 4s
logseq/db-sync CI / test (push) Failing after 4s
logseq/db-sync CI / lint (push) Failing after 3s
logseq/outliner CI / test (push) Failing after 4s
logseq/outliner CI / lint (push) Failing after 3s
enhance(rtc): support E2EE graphs in semantic API and PATs (#13671)
* enhance(rtc): support E2EE graphs in semantic API and PATs

PATs can now be created for E2EE-encrypted graphs and the semantic API
serves them end to end:

- Edge helpers: GET /e2ee/public-keys, POST /e2ee/encrypt and
  POST /e2ee/decrypt so agents don't reimplement transit+AES-GCM.
- Encrypt accepts either a caller-supplied AES key (canonical
  [iv ciphertext] package) or no key, producing an RSA-envelope
  package with an ephemeral AES key wrapped to every member's RSA
  public key — agents need no secrets to write.
- A graph-scoped PAT may GET /e2ee/graphs/:id/aes-key for its own
  graph to bootstrap decryption (also exposes a base64 form of the
  wrapped key); all other /e2ee index routes stay 403 for PATs.
- Writes to E2EE graphs must submit encrypted packages: title/body
  fields that are not valid ciphertext return 400. Reads return
  ciphertext unchanged.
- Page create skips title validation and namespace splitting for
  encrypted titles, and [[ref]] extraction is skipped on E2EE
  graphs since titles are opaque.
- listGraphs/graphGet expose graph-e2ee? instead of filtering
  E2EE graphs out.
- Client-side decrypt understands RSA-envelope packages by
  unwrapping with the user's RSA private key.
- Settings > Encryption shows the public key and reveals the
  private key only after password verification; the PAT graph
  picker lists E2EE graphs with an (E2EE) label.

* fix(rtc): pass index e2ee flag to DO and harden semantic input validation

The DO-side e2ee write gate relied solely on the graph DB's
:logseq.kv/graph-rtc-e2ee? kv, which is only populated at RTC upload.
Freshly created encrypted graphs (index flag already set) therefore
accepted plaintext writes and ciphertext titles hit page-name
validation. The edge now forwards the authoritative index flag as a
graph-e2ee search param and the DO gates on kv-or-param.

Also fixes malformed inputs returning 500 instead of 400:
malformed JSON bodies (body-clj swallows parse errors so existing
missing-field checks fire), non-string titles (seq throws on numbers),
and non-sequential blocks/entries collections. Blocks title collection
no longer misuses concat as a transducer.

* enhance(rtc): serve semantic api on local node adapter

Routes /openapi.json and /api/* through the same worker dispatch in
the local node adapter, with a LOGSEQ_SYNC_DO stand-in that forwards
to the local graph context and unlimited rate limiters, so the
semantic REST API can be exercised end-to-end against a local server.

* fix(rtc): clean up lint warnings in e2ee helpers

* fix(rtc): decode transit private key before password reveal

reveal-private-key! passed the raw transit string to
e2ee-password-to-decrypt-private-key, so <decrypt-private-key's
vector? assertion threw a non-decrypt-private-key error that the
dialog's catch ignored — revealing the key silently failed for every
password. Decode it the same way the public key already is.

* enhance(rtc): describe E2EE ops in MCP tool descriptors

* enhance(rtc): expose semantic API ops as individual MCP tools

* fix(rtc): accept ciphertext titles in semantic API update ops

Encrypted titles are opaque ciphertext packages: skip page-title and
property-name validation on e2ee graphs for pages-update, tags-update,
properties-create and properties-update. Without this, valid encrypted
writes 500'd on title characters like '/'.

* docs(rtc): add logseq-rest-api skill

Covers PAT auth, op request shapes, the E2EE ciphertext-title flow
(encrypt helper, AES key unwrap, decrypt), and the empirically-verified
list of ops that are unusable or degraded on E2EE graphs.

* docs(rtc): clarify e2ee references limitation in rest api skill

* fix(rtc): preserve graph encryption in semantic API

Use canonical graph AES packages, preserve separately encrypted names,
and validate encrypted asset streams before creating graph records.
Guard plaintext MCP file tools and add encrypted write/download coverage.

* fix(rtc): reject oversized encrypted streams early

Bound ciphertext chunks by the declared plaintext size before the
fixed-length upload stream can overflow. Exercise encrypted uploads
with a fixed-length stream and verify invalid-size cleanup.

* fix(rtc): drain streamed asset bodies in the local node bucket

R2's put consumes the upload ReadableStream, which pulls the
encrypted-package and fixed-length transform chains to completion.
The filesystem bucket wrapped the stream object itself as bytes,
leaving the pipe promises unsettled and hanging uploads locally
with zero-byte files. Drain web streams to bytes before writing.

* fix(rtc): pass ASSET_LINK_SECRET through to the local node adapter

The local adapter's env-object only forwarded a fixed set of bindings, so asset link signing (getAsset downloads) always failed with "missing ASSET_LINK_SECRET" when running the node adapter locally.

* fix(rtc): complete local encrypted asset handling

Stream asset bodies into atomic filesystem uploads, clean up failed streams, and validate signed downloads in the Node adapter. Document task dates as Unix millisecond timestamps and cover filesystem and HTTP behavior with regression tests.
2026-10-11 15:53:12 +08:00
.agents/skills enhance(rtc): support E2EE graphs in semantic API and PATs (#13671) 2026-10-11 15:53:12 +08:00
.carve chore: prune carve ignore list 2026-09-08 15:40:23 +08:00
.claude enhance(dev): enable claude to read project skills 2026-05-16 17:32:49 -04:00
.clj-kondo refactor: migrate frontend state to rfx 2026-06-03 13:07:58 +08:00
.github enhance(rtc): run clj-e2e RTC tests against local db-sync server 2026-10-08 23:40:11 +08:00
.lsp deprecated block-ref (#12627) 2026-05-14 13:21:22 +08:00
.spec-dev-tool/guides perf(views): speed up db table scrolling and clipped cells (#13226) 2026-09-16 21:04:11 +08:00
android chore: bump version to 2.0.2 2026-10-02 22:29:34 +08:00
assets fix(mobile): add splash screen pic for dark theme 2025-08-16 21:07:23 +08:00
bin chore: update logseq-i18n-lint binaries to 8b4f9304ecff 2026-05-08 10:27:09 +00:00
cli chore(cli): point opam pins at logseq org forks on main 2026-09-24 05:06:59 -07:00
cli-e2e fix(cli): tolerate workers exiting mid-health-check during retirement (#13413) 2026-09-25 00:26:48 +08:00
clj-e2e fix: seed remote graph and e2ee keys for local sync server 2026-10-08 23:40:11 +08:00
deps enhance(rtc): support E2EE graphs in semantic API and PATs (#13671) 2026-10-11 15:53:12 +08:00
dist 036-db-worker-node-ncc-bundling 2026-03-12 15:12:33 +08:00
docs enhance(rtc): add graph-scoped personal access tokens (#13019) 2026-10-10 23:10:40 +08:00
externs fix(mobile): can't copy to clipboard 2025-08-20 03:35:00 +08:00
fastlane/metadata/android/en-US fix: add icon for fastlane metadata 2024-06-23 22:23:10 +08:00
icons Update splash screen 2025-07-10 16:28:05 +08:00
ios fastlane tweaks 2026-10-03 19:28:15 +08:00
libs fix: store plugin integer number properties as values (#13488) 2026-09-30 19:27:13 +08:00
prompts add logseq-i18n skill and polish docs 2026-04-15 22:14:06 +08:00
public refactor: replace Rum with HSX (#12748) 2026-06-02 08:52:37 +08:00
resources chore: bump version to 2.0.2 2026-10-02 22:29:34 +08:00
scripts Merge pull request #13456 from logseq/devin/1790424401-sync-timestamp-validate 2026-10-07 19:23:45 +08:00
sidecar chore: remove embedding progress log 2026-06-06 22:10:11 +08:00
src enhance(rtc): support E2EE graphs in semantic API and PATs (#13671) 2026-10-11 15:53:12 +08:00
.cljfmt.edn Merge branch 'master' into feat/hnswlib+transformer-js 2025-07-11 18:15:33 +08:00
.editorconfig Migrate from yarn to pnpm (#12529) 2026-04-24 23:40:25 +08:00
.gitattributes Fix issues related to importing file to db (#12353) 2026-01-30 17:36:12 +08:00
.gitignore fastlane tweaks 2026-10-03 19:28:15 +08:00
.i18n-lint.toml refactor: complete incremental block reactivity 2026-07-21 21:19:23 +08:00
.npmrc Migrate from yarn to pnpm (#12529) 2026-04-24 23:40:25 +08:00
.prettierrc.js Fix issues related to importing file to db (#12353) 2026-01-30 17:36:12 +08:00
.projectile fix: :block/name shouldn't be updated for custom date formatter 2026-04-29 16:44:22 +08:00
.stylelintrc.json refactor: add stylelint processor 2020-12-07 12:37:20 +08:00
AGENTS.md enhance: simplify agent-guide docs 2026-08-24 15:14:12 +08:00
bb.edn chore: remove old cli (#12739) 2026-05-28 20:16:13 +08:00
capacitor.config.ts fix(android): respect status bar safe area 2026-08-26 02:51:32 -07:00
CODE_OF_CONDUCT.md Minor typo fixes and grammar improvements 2024-01-30 16:16:40 -05:00
CODEBASE_OVERVIEW.md refactor: migrate to base ui 2026-06-02 15:57:54 +08:00
CONTRIBUTING.md fix: point issues to db-test repo 2026-08-18 00:18:10 +08:00
deps.edn chore: bump hsx 2026-06-10 18:15:56 +08:00
Dockerfile Migrate from yarn to pnpm (#12529) 2026-04-24 23:40:25 +08:00
externs.js fix(pdf): add extern hints for pdfjs apis 2025-12-15 18:05:32 +08:00
gulpfile.js chore: cleanup packages/ui from gulpfile 2026-08-12 13:21:36 +08:00
LICENSE.md fix(license): add exceptions for epl libraries 2020-11-03 23:46:52 +08:00
package.json feat(test): build db-worker-node for tests 2026-09-16 21:23:46 +08:00
pnpm-lock.yaml fix(graph): coordinate deletion with worker shutdown 2026-09-16 21:23:43 +08:00
pnpm-workspace.yaml fix: support pnpm 11 installs 2026-07-01 04:24:14 +08:00
postcss.config.js fix: stabilize worker-backed editor rendering 2026-07-23 15:15:47 +08:00
README.md Update web app to https://app.logseq.com 2026-07-15 17:20:59 +08:00
shadow-cljs.edn fix: configure mobile HTTPS dev server 2026-08-31 21:59:00 +08:00
tailwind.all.css fix: stabilize popup interactions 2026-06-05 09:58:52 +08:00
tailwind.config.js refactor: migrate to base ui 2026-06-02 15:57:54 +08:00
tailwind.mobile.css fix: ios mobile fonts 2026-06-11 12:31:15 +08:00
typos.toml Merge branch 'master' into refactor/state 2026-06-19 09:44:43 +08:00
webpack.config.js remove vector embeddings 2026-04-02 18:51:29 +08:00

Logseq

A privacy-first, open-source platform for knowledge management and collaboration



Download Logseq

forum chat on Discord follow on Twitter

latest release version

Table of Contents

🚀 Database Version

The Database version (DB version) of Logseq introduces DB graphs. See this page to get an overview of the main features for DB graphs. If you are an existing user, see changes with the DB version. The DB version has its own new mobile app (on iOS, with Android coming soon)! To participate in the mobile app alpha, please complete this brief form. The DB version also has a new sync approach, RTC (Real Time Collaboration)! You can use it to sync graphs between multiple devices or collaborate with others. To participate in the RTC alpha, please fill out this form.

The DB version is in beta status while the new mobile app and RTC is in alpha. This means that data loss is possible so we recommend automated backups or regular SQLite DB backups. We recommend you create a dedicated test graph and choose one project that’s not crucial for you.

To get started with the DB version:

  • To try the latest web version, go to https://app.logseq.com/.
  • To try the latest desktop version, go to https://github.com/logseq/logseq/releases/tag/nightly and download the artifact for your operating system.
  • To try the latest by building from the source code
    • Use test/db for stable releases. Fewer bugs and slower updates. Update frequency: days or weeks.
    • Use master for the latest updates as they are developed. Expect more bugs and faster changes. Update frequency: hours or days.
  • To report bugs, please file them at https://github.com/logseq/db-test/issues.
  • For feature or enhancement requests, please file them on Discord on the #db-feedback channel.
  • For discussions:
    • General ==> see the #db-chat channel in Discord.
    • Sync and RTC ==> see the #sync-test channel in Discord.
    • Mobile ==> see the #mobile-test channel in Discord.

🤔 Why Logseq?

Logseq is a knowledge management and collaboration platform. It focuses on privacy, longevity, and user control. Logseq offers a range of powerful tools for knowledge management, collaboration, PDF annotation, and task management with support for multiple file formats, including Markdown and Org-mode, and various features for organizing and structuring your notes.

In addition to its core features, Logseq has a growing ecosystem of plugins and themes that enable a wide range of workflows and customization options. Mobile apps are also available, providing access to most of the features of the desktop application. Whether you're a student, a professional, or anyone who values a clear and organized approach to managing your ideas and notes, Logseq is an excellent choice for anyone looking to improve their productivity and streamline their workflow.

logseq-demo

Download Logseq

👀 How can I use it?

To start using Logseq, follow these simple steps:

  1. Download the latest version of Logseq
  2. Install Logseq on your device and launch the application
  3. Start writing ✍️

That's it! You can now enjoy the benefits of using Logseq to streamline your workflow, manage your projects, and stay on top of your goals. Have fun! 🎉

Linux users: Use the automated installer script for the best experience:

# Download and run the installer
curl -fsSL https://raw.githubusercontent.com/logseq/logseq/master/scripts/install-linux.sh | bash

# Or install a specific version
curl -fsSL https://raw.githubusercontent.com/logseq/logseq/master/scripts/install-linux.sh | bash -s -- 0.10.14

# For user-specific installation (no root required)
curl -fsSL https://raw.githubusercontent.com/logseq/logseq/master/scripts/install-linux.sh | bash -s -- --user

📚 Learn more

🫶 Support Logseq Development

If you find Logseq useful and want to help us keep the project growing, please consider supporting our contributors on Open Collective. Your support shows our contributors that their efforts are appreciated and motivates them to continue their excellent work. Every contribution, no matter how small, helps us keep improving Logseq.

💡 Feature requests

We value your input on improving Logseq and making it more useful for you. If you have any ideas or feature requests, please share them in the Logseq Forum: Feature Requests section.

Your feedback helps us understand our users' needs and prioritize the features that matter most to you. We appreciate your time and effort in sharing your thoughts with us.

We appreciate your support, and we look forward to hearing your ideas!

🔌 Plugin API

Logseq provides a plugin API that enables developers to create custom plugins and extend the functionality of Logseq. The plugin API documentation is available at plugins-doc.logseq.com, where you can find everything needed to get started with plugin development.

We value your feedback and suggestions on how to improve our documentation. Please do not hesitate to contact us with any comments or questions. Your input helps us to provide a better experience for our users and developers.

Thank you for using Logseq, and we look forward to seeing what you create with our plugin API!

🌟 Contributing to Logseq

To start contributing to Logseq, please read CONTRIBUTING.md. There are ways to contribute with code and without code. We welcome all contributions, big or small, and we appreciate your time and effort in helping us improve Logseq. We look forward to your contributions 🚀

🛠️ Setting Up a Development Environment

If you want to set up a development environment for the Logseq web or desktop app, please refer to the Develop Logseq guide for macOS/Linux users and the Develop Logseq on Windows guide for Windows users.

In addition to these guides, you can also find other helpful resources in the docs/ folder, such as the Guide for Contributing to Translations, the Docker Web App Guide and the mobile development guide

🧰 Logseq CLI (Node)

Logseq CLI documentation is maintained in docs/cli/logseq-cli.md.

✨ Inspiration

Logseq is inspired by several unique tools and projects, including Roam Research, Org Mode, TiddlyWiki, Workflowy, and Cuekeeper.

We owe a huge debt of gratitude to the developers and creators of these projects, and we hope that Logseq can continue to build on their innovative ideas and make them accessible to a broader audience.

Thank you to all those who inspire us, and we look forward to seeing what the Logseq community will create with this tool!

Logseq is also made possible by the following projects:

  • Clojure & ClojureScript - A dynamic, functional, general-purpose programming language
  • DataScript - An immutable database and Datalog query-engine for Clojure, ClojureScript and JS
  • OCaml & Angstrom, for the document parser mldoc
  • isomorphic-git - A pure JavaScript implementation of Git for NodeJS and web browsers
  • SCI - A Small Clojure Interpreter

🙏 Thank You

We want to express our sincere gratitude to our Open Collective sponsors, backers, and contributors. Your support and contributions allow us to continue developing and improving Logseq. Thank you for being a part of our community and helping us make Logseq the best it can be!

💎 Sponsors

[Become a sponsor]

🌟 Contributors

Logseq - Your joyful, private digital garden | Product Hunt