Obsidian is a local-first Markdown editor built around a networked notes model. Most teams use it for personal knowledge management — but with the right setup, a shared Obsidian vault becomes a team knowledge base that is faster to write in than Notion, version-controlled via Git, and works offline by default.
This guide covers: shared vault setup, folder conventions for teams, note templates, linking strategy, and publishing internal docs.
Why Obsidian for a Team Vault
The case for Obsidian over a SaaS wiki:
- Markdown files are stored locally, version-controlled in Git, readable in any editor
- Backlinks and graph view surface connections between notes that SaaS tools bury in folders
- Works offline — remote workers in low-connectivity situations can still read and write
- No per-seat pricing — one Obsidian Sync subscription or a free Git sync covers the whole team
- Plugin ecosystem — Dataview, Templater, Tasks, and Excalidraw extend functionality without vendor lock-in
The trade-off: Obsidian requires more upfront configuration and more team discipline than a hosted wiki.
Vault Sync Options
Option 1: Git Sync (Free)
# Initial setup — one person creates the vault
mkdir ~/team-vault && cd ~/team-vault
git init
git remote add origin git@github.com:yourteam/team-vault.git
# .gitignore for Obsidian vault
cat > .gitignore << 'EOF'
.obsidian/workspace
.obsidian/workspace.json
.obsidian/plugins/
!.obsidian/plugins/list.json
.obsidian/cache
.trash/
*.bak
EOF
# Commit vault config (shared plugin list, themes, templates)
git add .obsidian/
git commit -m "init: team vault config"
git push -u origin main
Each team member clones the vault and installs the Obsidian Git plugin (community plugins). Configure auto-commit on vault close:
// .obsidian/plugins/obsidian-git/data.json
{
"commitMessage": "vault: auto-backup {{date}}",
"autoSaveInterval": 0,
"autoPullInterval": 10,
"pullBeforePush": true,
"syncMethod": "rebase"
}
Option 2: Obsidian Sync ($8/mo per user)
Obsidian Sync handles real-time collaboration and version history without Git. It end-to-end encrypts the vault. For non-technical team members (design, marketing), this is easier than Git.
Enable in Settings → Core plugins → Sync, then create a remote vault and share it with teammates via email invite.
Vault Folder Structure
team-vault/
├── 00-inbox/ # unprocessed notes dumped here
├── 01-meetings/ # meeting notes by date
├── 02-projects/ # one folder per project
│ ├── project-alpha/
│ └── project-beta/
├── 03-people/ # one note per team member (async context)
├── 04-decisions/ # ADRs and decision logs
├── 05-runbooks/ # operational procedures
├── 06-reference/ # glossary, standards, API docs
└── templates/ # Templater templates (not indexed)
The 00-inbox folder is critical. Notes dumped without structure go there, not scattered in the root. A weekly review process moves inbox notes to their correct location.
Templates with Templater
Install the Templater plugin (community). Templates trigger on new note creation.
<%* /* templates/meeting.md */ %>
---
date: <% tp.date.now("YYYY-MM-DD") %>
type: meeting
attendees: []
project:
---
# <% tp.file.title %>
## Agenda
-
## Notes
## Decisions
## Action Items
- [ ]
---
*Owner: <% tp.user.name %>*
<%* /* templates/decision.md */ %>
---
date: <% tp.date.now("YYYY-MM-DD") %>
type: decision
status: proposed
deciders: []
---
# ADR: <% tp.file.title %>
## Status
Proposed
## Context
What is the issue motivating this decision?
## Decision
What is the change we are making?
## Consequences
What becomes easier or harder after this decision?
<%* /* templates/runbook.md */ %>
---
date: <% tp.date.now("YYYY-MM-DD") %>
type: runbook
owner:
last-tested:
---
# <% tp.file.title %>
## Prerequisites
## Steps
1.
## Verification
## Rollback
Configure Templater to use these templates when creating notes in specific folders:
Settings → Templater → Folder Templates
01-meetings → templates/meeting.md
04-decisions → templates/decision.md
05-runbooks → templates/runbook.md
Backlinks and Linking Strategy
Obsidian’s power comes from [[wikilinks]]. Establish team conventions:
# In a meeting note — link to project and people
Discussed deployment timeline for [[project-alpha]] with [[jane-smith]] and [[mike-chen]].
# Decision references context
See [[ADR-012-database-choice]] for the original decision.
# Runbooks reference each other
After completing this runbook, follow [[deploy-rollback-procedure]].
Name files consistently so links work across notes:
# People notes: firstname-lastname.md
jane-smith.md
# Projects: project name kebab-case
project-alpha.md
# ADRs: numbered
ADR-012-database-choice.md
ADR-013-auth-provider.md
Dataview Queries
The Dataview plugin turns your vault into a queryable database. Add it to create automatic indexes.
<!-- In a "Projects Index" note -->
## Active Projects
```dataview
TABLE file.mtime AS "Last Updated", owner
FROM "02-projects"
WHERE status = "active"
SORT file.mtime DESC
Recent Decisions
TABLE date, status, deciders
FROM "04-decisions"
SORT date DESC
LIMIT 10
Runbooks Untested in 90 Days
TABLE last-tested, owner
FROM "05-runbooks"
WHERE date(last-tested) < date(today) - dur(90 days) OR !last-tested
These Dataview blocks update automatically as notes are created or modified. The runbook query flags procedures that have not been verified recently.
## Publish Internal Docs with Obsidian Publish
Obsidian Publish ($16/mo) renders selected vault pages as a website. Use it for docs you want accessible in a browser without Obsidian installed — onboarding docs, runbooks, API reference.
```bash
# Via CLI with obsidian-export (free alternative)
cargo install obsidian-export
# Export specific vault sections to static HTML
obsidian-export ~/team-vault/05-runbooks ./output/runbooks
# Or deploy the output to Netlify/Cloudflare Pages
Conflict Resolution with Git
When two people edit the same note simultaneously and both commit, Git will create a conflict:
# The conflict looks like this in the file:
<<<<<<< HEAD
The database decision was finalized on 2026-03-15.
=======
The database decision was finalized on 2026-03-14.
>>>>>>> origin/main
# Resolve by keeping the correct version
# Edit the file to remove conflict markers
# Then:
git add 04-decisions/ADR-012-database-choice.md
git commit -m "resolve: ADR-012 date conflict"
The Obsidian Git plugin’s sync command runs pull --rebase then push. Most single-note edits merge cleanly without conflicts.
Related Reading
- Obsidian vs Logseq for Developer Notes
- ADR Tools for Remote Engineering Teams
- How to Create Decision Log Documentation for Remote Teams
Built by theluckystrike — More at zovo.one