I Built My Own Obsidian Cloud

July 6, 2025

I use Obsidian for notes.

The app is great. It's fast. It works offline. Everything lives in markdown files on my machine.

There's one problem. Obsidian Sync costs $7 a month.

Not a lot. Not nothing.

So I built my own cloud layer.

The stack

Three pieces:

  • Cloudflare Workers — the API, the auth, the logic.
  • Cloudflare D1 — SQLite-backed storage for the files.
  • React — the frontend. Just one static page.

The whole thing runs on a free Cloudflare tier. No servers. No Docker. No systemd services watching it.

Hono handles the routing. Better Auth handles the login. The Workers runtime handles the rest.

What it does

It's not a toy. It does the things I need:

  • Markdown editing with a proper editor.
  • File explorer — create, rename, delete, move files around.
  • Wikilinks — the [[Note Name]] links resolve. Backlinks show up too.
  • Full-text search across all vault files.
  • Graph view — a visual map of how my notes connect.

And then there's the planet view. Every note becomes a sphere floating in space. The bigger the note, the bigger the sphere. Related notes cluster together. It's WebGL. It looks like you're floating through your own constellation of thoughts.

The skills sync

Here's the part I'm proud of.

My Hermes Agent profiles have a shared skills repo. It's a Git repo with markdown files — instructions, procedures, workflows.

I built a sync button. One click and every skills file from that repo appears in my vault. Tagged as source: skills so they never get deleted by mistake. The next sync prunes anything that vanished upstream.

It means I can read my own automation documentation in the same app I write notes in.

The database

Simple schema. Four tables.

Files store the content. Paths are unique. Each row carries a source field — user for hand-written notes, skills for mirrored files.

A sync_state table tracks the last skills sync. Vaults and settings tables exist for now. They're ready when I need them.

Why bother

Obsidian Sync works fine. I'm not saying it's bad.

But building this taught me something. The Cloudflare Workers + D1 combo is fast. Really fast. The cold start is negligible because it's serverless edge, not a VM somewhere.

And the cost is zero. Not $7. Not $10. Free.

I could've paid $84 this year for Obsidian Sync. Instead I spent an afternoon building something that works better for my workflow.

What's next

The frontend is clean. The aged-plaster theme looks like an actual notebook, not a developer tool.

I want to add real-time collaboration next. Two people editing the same note. CRDT-based conflict resolution. That's a different project entirely.

But the foundation is there.


This is not affiliated with Obsidian. It's my own thing. The code lives at obsidian.robbie.digital.

Robbie Cook

Robbie Cook

Related posts