π΄ Step 1: Subscribe to @SeeStack on YouTube for weekly AI agent tools, custom Claude mods, and Obsidian templates!
A local-first, persistent context, agent workflow, and session-recovery system for Claude Code powered by Obsidian and the native Obsidian CLI.
Tip
If this setup saves you time and context, please consider giving it a β on GitHub! It helps more developers discover the architecture and keeps active maintenance going.
Every Claude Code session starts completely blind:
- Terminal Amnesia: Every time you launch a new terminal, your AI assistant has zero recollection of previous conversations.
- Trapped Decisions: Architectural patterns, completed milestones, and blockers vanish into conversation history or hidden dotfiles.
- Context Burn: You waste time and tokens re-explaining project architecture, rules, and setup before getting any real coding done.
Claude Obsidian Memory turns an Obsidian vault into a real-time, persistent second brain for Claude Code.
- Plain Markdown Vault: All memory, custom commands, and skills live inside your Obsidian vault as plain Markdown files.
- Symlink Pipeline: Symbolic links seamlessly connect your vault (
Agents/Commands,Agents/Skills, andAuto-memory) directly to~/.claude/. - Native Obsidian CLI: Claude Code invokes the built-in macOS Obsidian CLI binary to inspect, search, and append session logs directly into your knowledge graph.
- Autonomous Execution: Pre-configured permission rules (
Bash(obsidian *)) allow Claude Code to execute vault commands autonomously without prompting you on every line. - Zero Amnesia Session Recovery: Days or weeks later, Claude scans your
Year / Month / Dayjournal structure, reconstructs unfinished work, and picks up right where you left off.
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CLAUDE CODE β
βββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β TERMINAL β
βββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββ
β Reads & Writes via Symlinks & CLI
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β OBSIDIAN VAULT β
β β
β βββ Agents/ β
β β βββ Commands/ (Custom slash commands) β
β β βββ Skills/ (Reusable agent recipes) β
β β βββ Scripts/ (Deterministic bash automations) β
β β βββ Config/ (Auto-memory & settings.json) β
β βββ Journal/ (Year / Month / Day hierarchy) β
β βββ Templates/ (Daily note markdown scaffolds) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
Real-time connections between Claude agents, skills, commands, and daily sessions.
|
Automated Year/Month/Day note scaffolds updated autonomously via Obsidian CLI.
|
Watch the complete, end-to-end setup and the 23-day memory test on YouTube:
To enable fully autonomous, bi-directional memory between Claude Code and Obsidian, three core components must be configured:
- Obsidian CLI: Enables command-line reads, appends, and search inside your vault.
- Claude Code Permissions: Grants autonomous execution permission (
Bash(obsidian *)) to eliminate approval prompts. - Symlink Wiring: Connects vault commands, skills, and memory paths to
~/.claude/.
Run the included automated setup script from the root of this repo:
# Clone the repository
git clone https://github.com/see-stack/claude-obsidian-memory.git
cd claude-obsidian-memory
# Run setup (detects Obsidian, configures symlinks & permissions)
./scripts/setup.shThe script will:
- Symlink the macOS Obsidian binary to
~/.local/bin/obsidian. - Symlink
Agents/Commandsto~/.claude/commands. - Symlink
Agents/Skillsto~/.claude/skills. - Inject
"Bash(obsidian *)"into~/.claude/settings.json. - Set
autoMemoryDirectoryto your vault'sAuto-memorypath.
If you prefer to configure everything manually, follow the steps below:
Obsidian includes a built-in command-line binary inside the application bundle at /Applications/Obsidian.app/Contents/MacOS/obsidian.
To make it accessible system-wide from any terminal:
# Link to your user local bin
mkdir -p ~/.local/bin
ln -sf /Applications/Obsidian.app/Contents/MacOS/obsidian ~/.local/bin/obsidian
# Verify the CLI works
obsidian version
obsidian help(Ensure ~/.local/bin is in your PATH. If not, add export PATH="$HOME/.local/bin:$PATH" to your ~/.zshrc or ~/.bashrc).
obsidian append path="<file>" content="<text>"β Appends timestamped dev logs without altering the rest of your note.obsidian read path="<file>"β Reads file contents directly from the vault.obsidian search query="<text>"β Performs rapid full-text vault search.obsidian tasks dailyβ Queries pending and completed tasks from daily notes.obsidian open file="<file>"β Opens the note inside the Obsidian GUI.
By default, Claude Code pauses execution and prompts for user confirmation every time a shell command is run. For background memory queries and logging, this breaks the agentic workflow.
Add "Bash(obsidian *)" to the permissions.allow array in ~/.claude/settings.json:
{
"permissions": {
"allow": [
"Bash(obsidian *)",
"Bash(ls *)",
"Bash(find *)",
"Bash(mkdir *)"
]
}
}Tip
The wildcard pattern "Bash(obsidian *)" allows Claude Code to execute obsidian append, obsidian read, obsidian search, and all other vault operations autonomously without interrupting your flow.
Bridge your Obsidian vault to Claude Code's global configuration directory (~/.claude):
# 1. Ensure Claude config directory exists
mkdir -p ~/.claude
# 2. Symlink custom slash commands (/daily-journal, etc.)
ln -sf "/path/to/AI-Knowledge-Base/Agents/Commands" ~/.claude/commands
# 3. Symlink reusable agent skills (recipes with multi-step workflows)
ln -sf "/path/to/AI-Knowledge-Base/Agents/Skills" ~/.claude/skillsConfigure Claude Code to store persistent memories directly inside your vault rather than hidden local state:
In ~/.claude/settings.json:
{
"autoMemoryDirectory": "/path/to/AI-Knowledge-Base/Agents/Config/Auto-memory"
}Now, anything Claude commits to memory automatically becomes a note inside your Obsidian vault that you can view, edit, link, and graph.
- Open Obsidian Settings β Core Plugins β Enable Daily Notes and Templates.
- Under Templates settings:
- Set Template folder location to
Templates.
- Set Template folder location to
- Under Daily Notes settings:
- Set Date format to
YYYY/MM/DD. - Set New file location to
Journal. - Set Template file location to
Templates/Daily.
- Set Date format to
claude/memory
Claude Code will confirm it is reading and writing to your Obsidian vault's Auto-memory directory.
/daily-journal Implemented authentication hooks and fixed token refresh bug
What happens automatically:
daily-journal.shexecutes deterministically, creating today's note (Journal/YYYY/MM/DD.md) linked into the parent month and year notes.- The
daily-journalskill triggersobsidian appendto log timestamped entries under## Dev / Logs. - Updated tasks and files are recorded and cross-linked into your Obsidian knowledge graph.
Close the terminal. Days or weeks later, open a fresh terminal in any project and prompt:
What did we work on in our last session, and what tasks are still pending?
Claude will inspect your Obsidian vault, scan the latest journal entries, reconstruct your last state, and report the pending tasks with complete clarity.
claude-obsidian-memory/
βββ assets/
β βββ architecture-diagram.png # System architecture flow diagram
β βββ obsidian-vault-demo.gif # Live Obsidian vault navigation demo
β βββ obsidian-graph-view.gif # Interactive knowledge graph animation
βββ scripts/
β βββ setup.sh # 1-command automated configuration script
βββ AI-Knowledge-Base/ # Ready-to-use Obsidian Vault template
β βββ Agents/
β β βββ Commands/ # Custom Claude Code slash commands (.md)
β β β βββ Daily-Journal.md # /daily-journal slash command definition
β β βββ Skills/ # Reusable agent workflows
β β β βββ daily-journal/ # Structured skill recipe (SKILL.md)
β β βββ Scripts/
β β β βββ daily-journal.sh # Deterministic bash linking & note scaffold
β β βββ Config/
β β βββ Auto-memory/ # Claude Code auto-memory destination
β β βββ settings.json # Symlinked Claude settings
β β βββ settings.example.json # Template settings reference
β βββ Journal/ # Auto-maintained Year / Month / Day hierarchy
β βββ Templates/
β β βββ Daily.md # Daily journal scaffold
β β βββ Month.md # Month overview scaffold
β β βββ Year.md # Year overview scaffold
β βββ CLAUDE.md # Project-level agent instructions
β βββ Agents.md # Vault agent root index
βββ README.md # Project documentation
- 100% Local-First: No external cloud services or databases required. All memories, notes, and session logs reside on your physical machine in open Markdown.
- Secret Protection: Keep API tokens,
.envfiles, and credentials out of your vault notes. Never commit keys to Git.
- Website: seestack.dev β Real AI workflows, tools, and developer setups.
- YouTube: @SeeStack β Step-by-step video tutorials and system breakdowns.
- GitHub Organization: @see-stack
- X: @seestackx β Rapid tooling drops and architecture notes.
- Bluesky: @seestack.bsky.social
- Instagram: @see.stack β Fast tips and agent demos.
If this system helped you build autonomous agent workflows, give it a star! It lets us know what tools to build next.
This project is licensed under the MIT License.


