Tienson Qin 917309113f feat: sync checksum 17 tuntia sitten
..
.carve cd7c1ef50e enhance(dev): add linters for db-sync 1 kuukausi sitten
.clj-condo cd7c1ef50e enhance(dev): add linters for db-sync 1 kuukausi sitten
src 917309113f feat: sync checksum 13 tuntia sitten
test 917309113f feat: sync checksum 13 tuntia sitten
worker b8d7483a81 add scripts to manage graphs 13 tuntia sitten
README.md b8d7483a81 add scripts to manage graphs 13 tuntia sitten
bb.edn cd7c1ef50e enhance(dev): add linters for db-sync 1 kuukausi sitten
deps.edn 83a716f907 chore: bump datascript 5 päivää sitten
package.json b8d7483a81 add scripts to manage graphs 13 tuntia sitten
shadow-cljs.edn 5f2ec2ff71 fix: no log for sync server 2 viikkoa sitten
start.sh 084b5193c3 fix: sync doesn't work on node adapter 1 kuukausi sitten
yarn.lock 7a915a31b1 remove static auth because signin/up doesn't support custom login 1 kuukausi sitten

README.md

Logseq DB Sync (deps/db-sync)

This package contains the DB sync server code and tests used by Logseq. It includes the Cloudflare Worker implementation and a Node.js adapter for self-hosting.

Requirements

  • Node.js (see repo root for required version)
  • Clojure (for shadow-cljs builds)

Build and Test

Cloudflare Worker

cd deps/db-sync
yarn watch

# open another terminal
cd deps/db-sync/worker
wrangler dev

D1 Schema (Worker)

The worker no longer initializes schema at request time. Apply the D1 schema via migrations during deployment/CI.

cd deps/db-sync/worker
wrangler d1 migrations apply logseq-sync-graph-meta-staging --env staging
wrangler d1 migrations apply logseq-sync-graphs-prod --env prod

For local development, run wrangler d1 migrations apply DB --local.

Production Graph Lookup

Show the graphs available to a production user by username or user id:

cd deps/db-sync
yarn show-graphs-for-user --username alice
yarn show-graphs-for-user --user-id us-east-1:example-user-id

The script uses worker/wrangler.toml, runs against the remote D1 binding DB, defaults to --env prod, and prints JSON when --json is added.

Delete the graphs owned by a production user after an explicit confirmation:

cd deps/db-sync
yarn delete-graphs-for-user --username alice
yarn delete-graphs-for-user --user-id us-east-1:example-user-id

The delete script shows the owned graphs first and requires typing DELETE before it calls the worker delete endpoint for each graph. Set DB_SYNC_BASE_URL and DB_SYNC_ADMIN_TOKEN or pass --base-url and --admin-token when running it.

Node.js Adapter (self-hosted)

Build the adapter:

cd deps/db-sync
npm run build:node-adapter

Run the adapter with Cognito auth:

DB_SYNC_PORT=8787 \
COGNITO_ISSUER=https://cognito-idp.us-east-1.amazonaws.com/us-east-1_dtagLnju8 \
COGNITO_CLIENT_ID=69cs1lgme7p8kbgld8n5kseii6 \
COGNITO_JWKS_URL=https://cognito-idp.us-east-1.amazonaws.com/us-east-1_dtagLnju8/.well-known/jwks.json \
node worker/dist/node-adapter.js

Tests

Run db-sync tests (includes Node adapter tests):

cd deps/db-sync
npm run test:node-adapter

Environment Variables

Variable Purpose
DB_SYNC_PORT HTTP server port
DB_SYNC_BASE_URL External base URL for asset links
DB_SYNC_ADMIN_TOKEN Admin-only token for operator graph deletion endpoints
DB_SYNC_DATA_DIR Data directory for sqlite + assets
DB_SYNC_STORAGE_DRIVER Storage backend selection (sqlite)
DB_SYNC_ASSETS_DRIVER Assets backend selection (filesystem)
SENTRY_DSN Sentry DSN
SENTRY_RELEASE Release identifier for Sentry events and sourcemaps
SENTRY_ENVIRONMENT Sentry environment name (prod, staging, etc.)
SENTRY_TRACES_SAMPLE_RATE Traces sample rate (0.0 - 1.0)
COGNITO_ISSUER Cognito issuer URL
COGNITO_CLIENT_ID Cognito client id
COGNITO_JWKS_URL Cognito JWKS URL

Notes

  • Protocol definitions live in docs/agent-guide/db-sync/protocol.md.
  • DB sync implementation guide is in docs/agent-guide/db-sync/db-sync-guide.md.