obsidian sync but free

one shot · their word

obsidian sync but instead pushes changes to a github repo

built with OpenClaude · Claude Sonnet 4.5 · by devlynps · Aug 28, 2026

screenshot of obsidian sync but free
repo ↗demos open in a new tab · never embedded here
the prompt · exactly as sent
### System Prompt & Build Specifications: Obsidian Auto-Sync System

* **Core Mission**
* Build a headless auto-sync system for a local Obsidian vault directory using Git and remote hosting (private GitHub repository).
* Prioritize data preservation, silent background operation, and non-destructive automated conflict resolution.


* **Repository Initialization**
* Initialize a new Git repository inside the local Obsidian vault directory.
* Initialize a default `.gitignore` immediately:
```gitignore
.obsidian/workspace*
.obsidian/cache
.trash/
.DS_Store
*.tmp
.env

```


* Set up remote authentication targeting a private GitHub repository using the native system Git credential helper or a Personal Access Token (PAT) stored in a local `.env` file.


* **Watcher Component (Node.js)**
* Implement a background watcher process using Node.js, `chokidar`, and `simple-git`.
* **File System Monitoring**: Monitor all creation, modification, and deletion events within the vault root (excluding pattern matches in `.gitignore`).
* **Debounce Logic**: Debounce commits by **30 seconds** after the *last* detected file change before triggering auto-commit and push actions.
* **Commit Messaging**: Auto-generate commits with timestamps using the format: `vaultsync: auto-commit YYYY-MM-DD HH:mm:ss`.


* **Pull & Sync Strategy**
* **Schedule**: Execute a `git pull --rebase` on initial startup and every **5 minutes** on a recurring timer.
* **Conflict Handling (Data Preservation First)**:
* Intercept rebase/merge conflicts automatically during the pull sequence.
* Never discard local changes or overwrite incoming remote changes.
* In a conflict scenario, preserve the local version as the primary file name (`<filename>.md`).
* Extract the incoming/remote version and write it as `<filename>.conflict-YYYY-MM-DD.md`.
* Abort/resolve the Git merge state cleanly and write a detailed log entry to `~/.vaultsync/sync.log`.




* **CLI Utility (`vaultsync`)**
* Provide a CLI command (`vaultsync status`) executable from the terminal.
* **Status Output Requirements**:
* Print time elapsed since the last successful push and pull.
* Scan the vault and list any unresolved `<filename>.conflict-*.md` files.
* Display current repository working tree cleanliness (`git status --short`).




* **Documentation Requirements (`README.md`)**
* **Second Machine Setup**: Step-by-step instructions for cloning the private GitHub repo on a new desktop, setting up credentials, and launching the sync service.
* **Mobile Integration**: Workflow guidelines for pointing mobile Git clients (Working Copy on iOS, MGit on Android) at the same remote repository.
* **Conflict Convention**: Documentation explaining how incoming conflicts are renamed (`<filename>.conflict-YYYY-MM-DD.md`) and how to manually resolve them in Obsidian.

$ open in your agent (prompt prefilled, you press enter) or copy it raw · free forever

where it broke

nothing yet

the facts

goesone shot · self-declared

built withOpenClaude · Claude Sonnet 4.5

listedAug 28, 2026

chatno chat link on file · OpenClaude can show one

this is what the maker told us. we check that the link loads. that's all.

something off about this build? tell us →

$five vibe-coding tips + what died. thursdays.