Encrypted git sync for Logseq. One keystroke to commit & push.
Search "GitSeq" in the Logseq plugin marketplace (Plugins > Marketplace) and click Install.
Manual install (from source)
git clone https://github.com/pihalf/gitseq.git
cd logseq-plugin-git-sync
npm install && npx vite buildIn Logseq: Settings > Advanced > Developer mode (on) → Plugins > Load unpacked → select the dist/ folder.
Before using gitseq, your Logseq graph needs to be a git repo with a remote:
cd ~/Documents/my-graph
git init && git branch -M main
git add -A && git commit -m "Initial commit"
gh repo create my-graph --private --source=. --pushSee the full setup guide below for .gitignore templates and encryption.
Press Cmd+S (macOS) / Ctrl+S (Windows/Linux) to:
- Flush pending Logseq edits to disk
git add -Agit commitgit push
On startup, gitseq also commits any dirty files and pulls remote changes.
| Dot color | Meaning |
|---|---|
| Green | Clean — in sync with remote |
| Yellow | Uncommitted local changes |
| Red | Error — check dev console (Cmd+Option+I) |
| Blue (spinning) | Sync in progress |
Cmd+Shift+P and search for:
- gitseq: Sync Now — full sync (same as Cmd+S)
- gitseq: Pull — pull only
- gitseq: Push — add, commit, push (no pull)
- gitseq: Show Status — refresh the toolbar indicator
Plugins > gitseq > Settings:
| Setting | Default | Description |
|---|---|---|
| Sync Mode | manual |
manual (Cmd+S only) or periodic (auto-sync on timer) |
| Periodic Interval | 15 | Minutes between auto-syncs |
| Commit Message | sync: {{date}} |
{{date}} is replaced with ISO timestamp |
| Pull on Startup | true | Pull when Logseq opens |
| Sync on Close | true | Full sync before Logseq closes |
- Open Logseq → create a new graph
- Initialize git and push:
cd ~/Documents/my-graph
git init && git branch -M main- Create
.gitignore:
.DS_Store
Thumbs.db
.logseq/
.obsidian/
logseq/bak/
logseq/.recycle/
.Trash/- Commit and create a private remote:
git add -A && git commit -m "Initial commit"
gh repo create my-graph --private --source=. --push- Install gitseq from the marketplace. Done.
Encrypt journals, pages, and assets on GitHub while keeping them plaintext locally:
brew install git-crypt # macOS
git-crypt initCreate .gitattributes:
journals/** filter=git-crypt diff=git-crypt
pages/** filter=git-crypt diff=git-crypt
assets/** filter=git-crypt diff=git-cryptExport and back up your key:
git-crypt export-key ~/.git-crypt-my-graph.keyStore the key in a password manager. Without it, your encrypted files are unrecoverable.
git clone git@github.com:youruser/my-graph.git ~/Documents/my-graph
# If encrypted:
git-crypt unlock ~/.git-crypt-my-graph.keyOpen the graph in Logseq. Install gitseq. Done.
A Rust CLI for syncing outside Logseq (terminal, cron, automation):
cd cli && cargo build --release
./target/release/logseq-sync ~/Documents/my-graph # sync once
./target/release/logseq-sync ~/Documents/my-graph --status # check status
./target/release/logseq-sync ~/Documents/my-graph --watch # watch mode"You do not have the initial commit yet" — Logseq's internal git is pointing elsewhere. Make sure your graph folder has .git with at least one commit.
Authentication failures — Logseq's sandbox may not inherit your SSH agent. Verify with ssh-add -l or configure git config --global credential.helper osxkeychain.
Cmd+S doesn't work — another plugin may have claimed it. Use Cmd+Shift+P → "gitseq: Sync Now".
MIT
