kavinsood/yaos

A zero-terminal, real-time sync engine powered by your own Cloudflare Worker.

TypeScript

1,054

518 commits

updated Oct 8, 2026

See the code

README

YAOS

Deploy to Cloudflare

A zero-terminal, real-time sync engine for Obsidian, powered by your own Cloudflare Worker.

Your notes sync live across devices, with CRDT merge semantics instead of conflicted-copy workflows, delayed file sync, or database-heavy hosted services.

YAOS syncing a note across desktop and mobile in real time

No terminal, no .env files, no database setup required.

License: 0-BSD

How it compares

YAOS chooses live Markdown CRDT sync on infrastructure you deploy in your Cloudflare account. That gives fast cross-device editing, with explicit limits around durability receipts, attachments, empty folders, and non-Markdown plugin files.

ConflictsReal-timeDeploymentNo terminalFree
iCloud / DropboxConflicted copiesNoNoYesYes
Obsidian SyncRareDelayedNoYes$96/yr
Git / LiveSyncManualVariesSelf-hosted / self-deployedNoYes
Relay / ScreengardenNoYesNoYesFreemium
YAOSCRDT mergeYesSelf-deployed CloudflareYes$0

YAOS uses Yjs CRDTs to keep one live vault state moving across devices instead of asking them to take polite turns uploading files and hoping nothing collides.

If you want the official, fully managed experience, pay for Obsidian Sync and support the team. If you want a fast, self-deployed, local-first alternative on your own Cloudflare account, welcome to YAOS!

Get started

YAOS has two parts: an Obsidian plugin and a small Cloudflare server you deploy to your own account. The Worker setup page walks you through the remaining steps, so you don't need to memorize this.

Watch the setup walkthrough

1. Deploy your server Click Deploy to Cloudflare above. Cloudflare creates a Worker in your account.

2. Claim your server Open the Worker URL. Click Claim to lock the server to you and generate your setup token.

3. Install the plugin Install YAOS from the Obsidian Marketplace.

4. Connect your vault From the claim page, open the setup link or scan the QR code. YAOS fills in the connection details automatically.

That's it. Your vault is syncing.

Attachments and snapshots

Text sync works out of the box. To sync images, PDFs, and other attachments, add a Cloudflare R2 bucket — it takes about a minute.

Watch the R2 setup video

R2 also enables daily automatic snapshots and on-demand point-in-time backups. You can browse snapshots, diff against current state, and selectively restore individual files. If you skip R2, text sync still works — you just won't have attachment sync or snapshots.

Works with AI agents

Because Obsidian vaults are just local Markdown files, YAOS plays unusually well with scripts, CLI tools, and AI agents that edit files directly on disk. The CRDT state stays aligned with the filesystem, so changes from any source — git, shell scripts, agents writing to disk — propagate cleanly across devices instead of falling back to conflicted-copy workflows.

If you're building agentic workflows on top of Obsidian vaults, YAOS gives you the sync infrastructure so you don't have to wire up your own.

Troubleshooting

"Unauthorized" errors: Token mismatch between plugin and server. Check both match exactly.

"R2 not configured": The server doesn't have a YAOS_BUCKET binding yet. See the R2 setup video.

Cloudflare deploy/dashboard issues: If build queue or dashboard behavior is flaky, see operations, including the wrangler.toml R2-binding fallback.

Sync stops on mobile: Use "Reconnect to sync server" command. Check you have network connectivity.

Files not syncing: Check exclude patterns. Files over max size are skipped. Use debug logging to see what's happening, and then raise an issue on GitHub.

Diagnostics: Use Show sync debug info for local inspection. Safe diagnostics exports redact server URL, vault ID, device name, and vault paths.

License

0-BSD

cloudflare-workers
crdt
obsidian
obsidian-plugin
real-time
self-hosted
sync
yjs

kavinsood/yaos

A zero-terminal, real-time sync engine powered by your own Cloudflare Worker.

TypeScript

1,054

518 commits

updated Oct 8, 2026

See the code

README

YAOS

Deploy to Cloudflare

A zero-terminal, real-time sync engine for Obsidian, powered by your own Cloudflare Worker.

Your notes sync live across devices, with CRDT merge semantics instead of conflicted-copy workflows, delayed file sync, or database-heavy hosted services.

YAOS syncing a note across desktop and mobile in real time

No terminal, no .env files, no database setup required.

License: 0-BSD

How it compares

YAOS chooses live Markdown CRDT sync on infrastructure you deploy in your Cloudflare account. That gives fast cross-device editing, with explicit limits around durability receipts, attachments, empty folders, and non-Markdown plugin files.

ConflictsReal-timeDeploymentNo terminalFree
iCloud / DropboxConflicted copiesNoNoYesYes
Obsidian SyncRareDelayedNoYes$96/yr
Git / LiveSyncManualVariesSelf-hosted / self-deployedNoYes
Relay / ScreengardenNoYesNoYesFreemium
YAOSCRDT mergeYesSelf-deployed CloudflareYes$0

YAOS uses Yjs CRDTs to keep one live vault state moving across devices instead of asking them to take polite turns uploading files and hoping nothing collides.

If you want the official, fully managed experience, pay for Obsidian Sync and support the team. If you want a fast, self-deployed, local-first alternative on your own Cloudflare account, welcome to YAOS!

Get started

YAOS has two parts: an Obsidian plugin and a small Cloudflare server you deploy to your own account. The Worker setup page walks you through the remaining steps, so you don't need to memorize this.

Watch the setup walkthrough

1. Deploy your server Click Deploy to Cloudflare above. Cloudflare creates a Worker in your account.

2. Claim your server Open the Worker URL. Click Claim to lock the server to you and generate your setup token.

3. Install the plugin Install YAOS from the Obsidian Marketplace.

4. Connect your vault From the claim page, open the setup link or scan the QR code. YAOS fills in the connection details automatically.

That's it. Your vault is syncing.

Attachments and snapshots

Text sync works out of the box. To sync images, PDFs, and other attachments, add a Cloudflare R2 bucket — it takes about a minute.

Watch the R2 setup video

R2 also enables daily automatic snapshots and on-demand point-in-time backups. You can browse snapshots, diff against current state, and selectively restore individual files. If you skip R2, text sync still works — you just won't have attachment sync or snapshots.

Works with AI agents

Because Obsidian vaults are just local Markdown files, YAOS plays unusually well with scripts, CLI tools, and AI agents that edit files directly on disk. The CRDT state stays aligned with the filesystem, so changes from any source — git, shell scripts, agents writing to disk — propagate cleanly across devices instead of falling back to conflicted-copy workflows.

If you're building agentic workflows on top of Obsidian vaults, YAOS gives you the sync infrastructure so you don't have to wire up your own.

Troubleshooting

"Unauthorized" errors: Token mismatch between plugin and server. Check both match exactly.

"R2 not configured": The server doesn't have a YAOS_BUCKET binding yet. See the R2 setup video.

Cloudflare deploy/dashboard issues: If build queue or dashboard behavior is flaky, see operations, including the wrangler.toml R2-binding fallback.

Sync stops on mobile: Use "Reconnect to sync server" command. Check you have network connectivity.

Files not syncing: Check exclude patterns. Files over max size are skipped. Use debug logging to see what's happening, and then raise an issue on GitHub.

Diagnostics: Use Show sync debug info for local inspection. Safe diagnostics exports redact server URL, vault ID, device name, and vault paths.

License

0-BSD

cloudflare-workers
crdt
obsidian
obsidian-plugin
real-time
self-hosted
sync
yjs

Significant stargazers

Kurt Valcorza

16 followers · starred Apr 2026

azu

2,858 followers · starred May 2026

Dillon Mulroy

2,672 followers · starred Mar 2026

Ikiru Yoshizaki

365 followers · starred May 2026