README file from
GithubGinkgo Backup for Obsidian
A time machine for your Obsidian vault — instant push, version diff, and one-click restore, powered by the Ginkgo Backup desktop engine.
Overview
Ever rewritten a paragraph and wished you could get the original back? Or merged a note by mistake and lost half your work?
Ginkgo Backup captures every save into a versioned timeline, so any previous state is one click away — diff it, preview it, restore it, all without leaving Obsidian.

Why Ginkgo Backup?
- No Git knowledge required — No commits, branches, or push/pull. Just save, and it's backed up.
- No cloud subscription — The backup engine runs locally on your machine. Your data never leaves your control.
- Diff any two versions — Pick any two points in history and see exactly what changed, line by line.
- Visual calendar timeline — Jump to any day with a date picker, not a scroll through commit logs.
- Instant push on save — Every save is captured within seconds, not on a schedule.
Quick Start
-
Install Ginkgo Backup — Download from ginkgobackup.com, launch it, and copy the API token from Settings → API.
-
Enable the plugin — In Obsidian, open Settings → Community plugins, install this plugin, and enable it.
-
Follow the setup guide — On first launch the plugin shows a 4-step welcome modal. Paste your API token and click Test connection.

-
Configure the backup source — Run the command
Ginkgo: Configure sourceand pick the repository for this vault. Done — your notes are now versioned.
Tip: set a Vault identifier (e.g. your machine name) in settings when the same vault is synced across multiple devices. This keeps per-device hash caches isolated.
Features
-
Instant Push on Save — Every save is captured within seconds. Identical content is skipped, so only real changes are stored.
-
Scheduled Full Backup — Optionally back up the entire vault (including images and attachments) on a timer.
-
Visual Timeline — A sidebar calendar lets you jump to any day and browse that day's snapshots with file counts, sizes, and change badges (
+added,~modified). -
Version History & Diff — Right-click any file to see its full history. Pick any two versions and see exactly what changed, line by line.
-
One-Click Restore — Preview a version before restoring. Your current content is saved automatically first, so an accidental restore never destroys unsaved work.

-
Connection Auto-Recovery — Network drops are retried automatically; pending pushes flush the moment the link comes back. The status bar shows live connection state at a glance.

-
Secure by Default — HTTPS is enforced for non-local hosts; the API token travels in a request header, never in the URL.
-
Bilingual UI — English and 简体中文, with automatic locale detection.
Timeline & History
Timeline view — Open via the ribbon icon (hard-drive) or the Ginkgo: Open timeline command. A calendar lets you pick any date; the list below shows that day's snapshots with a summary header (snapshot count, total new bytes, last backup time). Click any snapshot card to drill into its file list.

File history modal — Right-click any file in the file explorer or editor and choose Ginkgo → File history. Browse every version, diff any two (LCS line-level, with context-only mode for large files), or diff a version against the current content. Hit Restore to preview and confirm.
Requirements
- Obsidian 1.0+ (desktop)
- Ginkgo Backup desktop app (macOS / Windows / Linux) — the backup engine that powers this plugin
Settings

Connection
| Setting | Default | Description |
|---|---|---|
| API host | 127.0.0.1 |
Ginkgo Backup server address (IP, domain, or full URL) |
| API port | 9275 |
Server port (1–65535) |
| API token | — | Authentication token from Ginkgo Backup Settings → API |
| Vault identifier | — | Unique name for this vault on this device (recommended for multi-device setups) |
| Source ID | 0 |
Auto-detected; can be set manually if needed |
Backup Strategy
| Setting | Default | Description |
|---|---|---|
| Push on save | on |
Instantly push text files to staging on save |
| Push debounce delay | 30000 ms |
Wait time before pushing after a save (5000–120000 ms) |
| Scheduled full backup | off |
Run a full vault backup on a timer |
| Full backup interval | 60 min |
Interval between scheduled full backups (5–1440 min) |
Filters & Display
| Setting | Default | Description |
|---|---|---|
| Watch extensions | md, canvas, base, json, css |
File types monitored for instant push |
| Exclude paths | .obsidian, .trash, .DS_Store |
Path prefixes excluded from backup (one per line) |
| Large file threshold | 5 MB |
Files above this size are skipped by instant push |
| Show status bar | on |
Show the live backup status bar item |
| Status refresh interval | 60 s |
How often to poll the server for status (10–300 s) |
Interface
| Setting | Default | Description |
|---|---|---|
| Language | auto |
auto follows navigator.language; force zh-CN or en |
Security
- HTTPS enforced off-host — When the API host is a public domain or IP (not
localhost/127.0.0.1/ RFC 1918 private ranges), HTTPS is used automatically. Loopback and private-LAN hosts may still use HTTP. Explicithttp(s)://prefixes in the host field are always honored. - Token in header — The API token is sent via the
X-Ginkgo-Tokenrequest header, never as a URL query parameter, so it cannot leak through server logs or referrers. - Content hashing — File de-duplication uses the Web Crypto API (
crypto.subtle.digest("SHA-256")); no file content is hashed by hand-rolled code. - No telemetry — The plugin makes no outbound requests except to your configured Ginkgo Backup server.
Internationalization
The UI ships with English and 简体中文. Set Language to auto (default) to follow your browser/OS locale, or pin it explicitly. Missing keys fall back to English, then to the key itself.
Manual Installation
If the plugin is not yet available in the community browser, or you want to test a pre-release build:
- Download
main.js,manifest.json, andstyles.cssfrom the latest GitHub Release. - In your vault, navigate to
.obsidian/plugins/(create thepluginsfolder if it doesn't exist). - Create a subfolder named
ginkgo-backup. - Copy the three downloaded files into
.obsidian/plugins/ginkgo-backup/. - In Obsidian, open Settings → Community plugins, click the reload icon, then enable Ginkgo Backup.
Disclosures
- Network use — This plugin communicates with the Ginkgo Backup desktop app running on your machine (default
127.0.0.1:9275). No data is sent to remote servers. - Free vs paid — The Ginkgo Backup desktop app is free for local backups, restore, encryption, and mesh networking. Cloud backup and Notion backup require a paid license. The Obsidian plugin works fully with the free version.
FAQ
Does this work on mobile? The plugin runs on desktop only — full backups require the desktop engine to scan your vault directory. If you sync your vault across devices (iCloud, Dropbox, Syncthing, etc.), mobile edits are automatically backed up once they sync to a desktop running Ginkgo Backup.
Why do I need a separate desktop app? The plugin is a lightweight frontend; the actual backup engine (snapshot storage, deduplication, scheduling) runs as a standalone app. This keeps your vault history independent of Obsidian's lifecycle — your backups survive even if Obsidian is closed or the plugin is uninstalled.
Can I diff binary files like images?
No — instant push covers text files (md, canvas, base, json, css). Binary attachments are captured by full backups and can be restored, but not diffed line-by-line.
How far back can I go? The timeline loads up to 500 recent snapshots for calendar browsing. Older snapshots remain accessible through the Ginkgo Backup app directly.
Links
- Website: ginkgobackup.com
- Download Ginkgo Backup: ginkgobackup.com/#download
- Source code: github.com/ginkgobackup/obsidian-ginkgo-backup
- Changelog: CHANGELOG.md