My girlfriend is also my cofounder. We run an AI music label together, 50/50. We don’t even live in the same place yet — which makes a shared knowledge base less of a convenience and more of a requirement.
Every guide I read about shared Obsidian vaults was written for engineering teams. None of them addressed the actual hard part: the same vault has to hold a client invoice, a vacation itinerary, and a sketch from her separate creative practice that has nothing to do with music.
The boundary isn’t “work vs personal.” It’s tangled.
We’ve been running everything through one vault for a couple of months. Self-hosted sync on a cheap VPS. A Telegram bot that swallows voice notes on the go and drops them straight into the inbox. One Claude account between us. A six-zone folder structure that does most of the work of keeping the company and the relationship from blurring into each other.
It’s been weeks, not years, and it already changed how we work.
Why most shared-vault advice doesn’t fit a couple
Team setups assume people leave the office. There’s a clean break between work files and personal files because work lives behind corp SSO and personal doesn’t. Two people in a relationship who also run the same business don’t have that line. The same Claude session that drafts a vendor contract at 2pm is going to plan our next trip at 9pm.
You can solve this by running multiple vaults — one for the business, one for me, one for her — and then suffering when [[wikilinks]] don’t cross vault boundaries. We tried it. The note about a contractor for the label wanted to link to a referral he gave her for one of her own projects, which lived in her personal vault. Links don’t reach. The graph dies.
One vault, six zones.
The architecture
Our Vault/
├── 00-inbox/ raw dump, split into mine/ and hers/
├── 01-business/ the label — strategy, clients, finance,
│ operations, content, product, meetings
├── 02-mine/ my stuff — startups, learning, personal
├── 03-hers/ her stuff — projects, learning, personal
├── 04-us/ shared-life — travel, home, health, events,
│ personal finance, goals
├── 05-resources/ tools, contacts, references, templates
└── CLAUDE.md system prompt for the shared AI
The rule is simple. 01-business/ is the company. 04-us/ is everything we share outside the company. 02-mine/ and 03-hers/ are private-but-visible — we don’t read each other’s notes by default, but we can.
The zones do almost all the cognitive work. When I’m about to write a note and I have to pick a folder, the folder forces me to answer: is this the label, is this our life, is this mine. That question used to require a conversation.
Why one vault, not three
Three vaults felt cleaner in theory. In practice, every cross-domain link broke.
The killer use case is the people graph. A sound engineer who works on label tracks also referred her to a supplier she used on one of her own projects. In a single vault, his contact card in 05-resources/contacts/ links to a meeting note in 01-business/, an introduction note in 04-us/, and a referral chain in 03-hers/projects/. In three vaults you’d have three of him and never see the pattern.
The graph is the product. Splitting the vault by ownership kills the graph.
The self-hosted sync stack
The whole system rests on one decision: markdown files on disk. Not a SaaS database. Not a proprietary format. Plain text files in folders, on hardware we control. The payoff is tool independence — Claude, Cursor, any future AI client, a plain text editor, even grep — they all work with the same files. The constraint is that you have to handle sync yourself.
iCloud creates (conflict) duplicates when both of us edit at the same time. Obsidian Sync is a monthly fee and the data sits on someone else’s servers. We already had a small VPS running Caddy and a few other containers. Adding CouchDB to it took fifteen minutes.
The container:
docker run -d --name obsidian-couchdb \
--restart unless-stopped \
-e COUCHDB_USER=user \
-e COUCHDB_PASSWORD=strong-password \
-v /opt/obsidian-sync/couchdb-data:/opt/couchdb/data \
-v /opt/obsidian-sync/couchdb-config/local.ini:/opt/couchdb/etc/local.d/local.ini \
-p 127.0.0.1:5984:5984 \
couchdb:3
Caddy proxies sync.ourdomain.org to the container. The Self-hosted LiveSync plugin in Obsidian talks to it over HTTPS. Everything is end-to-end encrypted before it leaves the device — CouchDB only sees encrypted blobs.
Adding her device to the loop was a one-step paste. The plugin exports a Setup URI containing the full config; I sent it over Telegram, she pasted it on her end, entered the encryption passphrase separately, and the second client was live. No re-typing.
Round-trip on a typed change is around one second. Conflict resolution is automatic via CouchDB’s replication protocol. The first sync of a large vault takes 10-30 minutes; after that, only deltas move.
The VPS was already running for other things. Marginal cost of adding sync: zero.
The Telegram inbox
The Obsidian mobile app is fine for reading but slow for capture. Opening it on the phone to write a one-line idea is friction the brain refuses to pay. Most ideas die in that gap.
The fix is a small Telegram bot running on the same VPS. You send it anything — text, voice memo, photo, link — and it drops a markdown file into 00-inbox/ with a timestamp filename and a sender tag (mine or hers) so the right person owns the followup. Voice messages get transcribed and saved as text alongside the audio.
A typical capture: walking somewhere, an idea hits, send a 30-second voice note to the bot. By the time I’m home there’s a transcribed markdown file in the vault, ready to be picked up by the next compile pass (see below).
The bot is the difference between “I had a thought” and “I lost a thought.” Mobile Obsidian on its own can’t bridge that gap. Telegram already lives in your hand.
The Sunday compile pass
Capture is half the loop. The other half is making sure none of it gets lost.
Once a week — usually Sunday — Claude runs through everything new in 00-inbox/: voice transcripts, half-formed notes, screenshots, scraps from the bot. For each item it figures out what the note is about, tags it, links it to related notes via [[wikilinks]], and files it into the right zone. Anything ambiguous stays in the inbox with a flag and a question for whichever of us dropped it in.
The inbox is split by sender — 00-inbox/mine/ and 00-inbox/hers/ — exactly for this pass. When Claude finds a task buried in a voice note, it already knows whose task it is before it asks.
Skip this loop for three weeks and the inbox stops being useful. Run it weekly and the vault grows itself.
CLAUDE.md is the most important file in the vault
The vault has a file called CLAUDE.md at its root. Every time either of us starts a Claude session with this folder attached, the model reads it first. It’s the shared brain.
A real extract:
## Who's talking
If unclear, ask: "Which of us is this?"
Hints:
- Tracks, code, servers, music production → Nik
- Design and creative practice → her
- Content, SMM, brand, merch, books → could be either
## Where things live
- Business decisions → 01-business/meetings/ with date
- Financial data → only 01-business/finance/
- Ideas without a home → 00-inbox/(mine or hers)/
- Anything about tracks and releases → 01-business/product/
## Don't
- Don't delete files without confirmation
- Don't move files between 02-mine/ and 03-hers/ without asking
- Don't write "AI slop" — we value specifics and hate fluff
The folder structure isn’t what makes the system work. What makes it work is that the model knows the structure and enforces it. When I dump a half-formed thought into a session, Claude sees the file is mine, files it under 00-inbox/mine/, tags it, links it to existing notes. When she asks for a draft of an Instagram post, Claude pulls our brand voice from 01-business/content/ instead of guessing.
There’s a small pattern in the extract worth pointing out: “If unclear, ask: which of us is this?” Most shared AI setups guess at context. Ours asks. When the author of a note is ambiguous, Claude disambiguates first and tags second. The cost is one extra question per ambiguous note. The benefit is that nothing gets misattributed — a draft that should go to my queue doesn’t land in hers, and vice versa.
This file is the difference between a shared folder and a shared knowledge system.
CLAUDE.md is also a negotiation playbook
The folder routing rules are obvious. They keep notes from landing in the wrong zone. The thing that earns CLAUDE.md its place at the root of the vault is a different section — the one about external correspondence.
When either of us asks Claude to draft a reply to a support ticket, a vendor email, a tax-agency letter, a distributor’s audit request — the model follows four rules baked into the file:
- Don’t admit a mistake nobody accused you of. If their email says “your listing was removed,” the reply doesn’t say “I understand my content violates policy.” That’s a written confession they’ll cite against you in appeals. Acknowledge only what they actually stated.
- One specific ask. Not three. Not “what should I do.” One. “Should I appeal with shortened titles, or unpublish and resubmit as new entries?” Without a single concrete ask, the email turns into a polite exchange that goes nowhere.
- Name the leverage. Whatever you actually have — a deadline you’ll hit, an alternative path you’ll take, a filing already in motion. Not a threat. A data point that changes their priority.
- Describe the fallback. What you’ll do if they don’t respond, or respond with the wrong answer. Plan B. Useful for you because you have one, and a signal to them that you’re not at their mercy.
And one explicit anti-pattern: don’t apologize for things that aren’t your fault. The AI default is to roll out a welcome mat before asking a question. Cut the mat. “Thank you for the response” is fine. “I apologize for my misunderstanding of the platform’s policies” is not — especially when the policies weren’t clearly stated in the first place.
We added this section after a stretch of support tickets where Claude was drafting helpful, polite, doomed emails. With the rules in CLAUDE.md, every external draft now has structural discipline before it has tone. What’s being shared between us isn’t just notes. It’s negotiation posture.
What it actually unlocks
A few real things from the last week.
I had a call with a vendor about renegotiating terms. Claude read the meeting notes folder, pulled the relevant cost context from 01-business/finance/, drafted the followup email, and added the followup tasks to 01-business/operations/ tagged @nik so the right person owns each one. Four minutes from “we just hung up” to “everything is captured.”
She was scoping one of her own projects and needed a supplier. She asked Claude to find supplier contacts. The model searched 05-resources/contacts/, found two we’d dropped in weeks ago in unrelated contexts, and surfaced them with the original notes about why we trusted them.
We were planning a trip. Claude pulled budget caps from 04-us/finance-personal/, hotel preferences from past trips in 04-us/travel/, and a list of cities from a note she’d written in 03-hers/personal/ that I’d never seen. Trip draft in fifteen minutes.
None of this is magic. It’s what happens when one model has continuous context across everything you’ve ever bothered to write down.
What I’d do differently
Don’t code in your vault folder. I assumed LiveSync only syncs markdown. It doesn’t — it syncs everything in the folder. I tried to start a small dev project in the same directory at one point; npm install dropped hundreds of megabytes of node_modules, downloaded SDKs and binaries piled up, the sync choked, the database corrupted, and we had to wipe and re-pair both clients from scratch. Code lives in a separate ~/Code/ repo now. The vault is for notes only. If you have to put binaries in there, exclude them in the LiveSync settings before you commit.
Mobile Obsidian is slow on first open. The Telegram bot covers most of the mobile use case (capture); the app is for reading on the go, and we accept the lag.
Two people editing the same file in the same minute occasionally produces a conflict. CouchDB resolves it, but you have to check that the right version won. Solution: don’t edit the same file at the same time. Talk first.
Set up automated backups on day one, not three weeks in. Nothing went wrong in those first weeks, but if CouchDB had corrupted itself or the disk had died, there was no rollback. Now a nightly tar of /opt/obsidian-sync/couchdb-data ships to an external box.
Carve out the 04-us/ folder earlier. We didn’t realize how much shared-life content was getting dumped into the business folder by accident — travel research ended up next to vendor diligence — until the pile got big enough to be annoying.
The template
A clean version of this lives on GitHub. Empty vault skeleton (six zones, README files, .gitkeep markers), a CLAUDE.md template you can adapt to your own business, the full self-hosted LiveSync install guide for Hetzner + Caddy + CouchDB, and the Obsidian plugin we actually use (Self-hosted LiveSync — that’s it for now).
github.com/nikmcfly/shared-vault-template
Clone it, point Obsidian at it, you’re 80% of the way there. Not on git? Download the zip.
PRs welcome — especially if you’ve solved the mobile capture problem on Android.
One vault. Six zones. Your move.
The boring lesson: most “team Obsidian” advice doesn’t survive contact with two people whose lives overlap as much as ours do. The structure has to do work that a social contract used to do.
The interesting lesson: once the structure is right and the AI knows the structure, you stop being the bottleneck. Claude can write the meeting note, find the supplier, draft the post, plan the trip. You become an editor of your own life instead of the secretary of it.
We’re a couple. We’re cofounders. Our vault knows the difference.
Yours can too.