Instant resume
"Where did we leave off?" is answered from what's already in context, in a single call to the model.
Open-source plugin for Claude Code & Cowork
Every project gets a memory vault in plain Markdown. When a session starts, the context is already there: what the project is, what was decided and what comes next. No re-explaining, no rereading your code. Works in Claude Code and in Claude Cowork.
Using Claude Cowork? There's a version for it$ claude
SessionStart vault loaded · CLAUDE.md + session from Sep 23, 6:40 PM
› where did we leave off?
We stopped at checkout. Card payments work; the discount code field still needs validation in src/checkout/form.tsx. We decided to keep Stripe for payments (decisions/0004).
Why it exists
How it works
In Claude Code, hooks do this. In Cowork, a skill loads and saves the same memory: see how.
The vault's CLAUDE.md loads with the project, and the hook adds the last session summary.
Specs, decisions and older sessions only enter the context when the task needs them.
Before compaction, the conversation is archived. Afterwards, the project context comes back.
Saves the conversation to daily/ and commits only the vault, if you use git. Never pushes.
obsidian-vault/ lives next to your code. Claude reads and writes it; you can browse it in Obsidian, or never open it at all.
obsidian-vault/ ├── CLAUDE.md # project context ├── _index.md # generated index ├── 00-inbox.md # quick captures ├── daily/23-09-2026/ │ ├── session-18h40.md │ └── transcript-*.md # kept out of git ├── specs/ plans/ processes/ ├── decisions/ # 0001-*.md … └── bugs/ retro/
What you get
"Where did we leave off?" is answered from what's already in context, in a single call to the model.
Only CLAUDE.md and the last session load at the start, a few KB. Everything else stays on disk until it's useful.
Every session is saved with its commands and replies, at compaction and at the end.
Numbered decision records and a "do not" list stop settled questions from being reopened.
Local commits of the vault only. Before each commit, the plugin scans for keys and tokens and blocks the commit if it finds any.
Registers and opens the vault in Obsidian, with daily notes and templates set up. Or just use the Markdown.
Benchmark
Measured on real projects
Source: Claude Code usage logs (the usage field) from new sessions opened with "where did we leave off?". The context size is the same before and after the answer.
Estimate · resuming a project
Per resume: ~506k input tokens, ~8 file reads and ~1.5 min, measured on a project with 74 KB of code and docs. Bigger projects save more. Much of that input comes from the prompt cache, which costs less but still counts toward your plan's usage limits.
Install
Add the marketplace
/plugin marketplace add marcuswmc/obsidian-memory-pluginInstall the plugin
/plugin install obsidian-memory@obsidian-memoryCreate the vault in your project
/obsidian-memory:vault initClaude asks whether you want to version the vault with git and use Obsidian. Both are optional.
| macOS · Linux | Windows | |
|---|---|---|
| Claude Code | Required | Required |
| Python 3.8+ | Required | Required |
| git | Optional | Git for Windows |
| Obsidian | Optional | Optional |
On Windows, Git Bash (included with Git for Windows) runs the hooks. To check everything, run /obsidian-memory:vault doctor: it installs whatever is missing, always with your approval.
Also in Claude Cowork
Cowork gets its own companion plugin, Obsidian Memory for Cowork. It reads and writes the same obsidian-vault/, so a project can move between Claude Code and Cowork without losing its place.
Add the marketplace in Cowork's plugin settings
marcuswmc/obsidian-memory-pluginInstall Obsidian Memory for Cowork
Not the Claude Code one: that plugin relies on hooks, which Cowork doesn't run.
Start a session on a project folder
If the folder already has obsidian-vault/, Claude resumes from it. If it doesn't, ask Claude to "create the project memory".
skill obsidian-memory-cowork:vault
read obsidian-vault/CLAUDE.md · daily/23-09-2026/session-18h40.md
› where did we leave off?
Checkout: card payments work, the discount code field still needs validation. Next up: the orders page.
› save the session
✓ daily/24-09-2026/session-17h05.md · Europe/Lisbon
When the folder has a vault, Claude loads the skill and reads CLAUDE.md and the last session before answering.
Cowork has no end-of-session hook, so Claude writes the session note while it works, and wraps up when you say "save the session".
Cowork may run on a remote machine in UTC. Notes use the time zone stored in the vault; Claude Code records it for you, or Claude asks once.
No hooks, no Python and no git. If git is on for the vault, the next save in Claude Code commits what Cowork wrote.
| Claude Code | Claude Cowork | |
|---|---|---|
| Plugin | obsidian-memory | obsidian-memory-cowork |
| Loads the memory | Automatically, through a hook | Through the skill, when the folder has a vault |
| Archives the conversation | Yes, at compaction and at session end | Session notes written as you go |
| Git and Obsidian | Optional, set at init | Doesn't run git or open Obsidian |
| Same vault | Yes: obsidian-vault/, same format, same notes | |
If Claude doesn't pick up the memory on its own in Cowork, ask "where did we leave off?" or run /obsidian-memory-cowork:vault.
Everyday use
vault saveWrites today's summary, updates the project's current state and commits the vault.
decisions/Creates a numbered decision record with the context and the reason, and adds it to the project's key decisions.
vault statusShows the state of the vault, git, Obsidian, the last session and any alerts.
vault doctorChecks Python, git, Obsidian and Git Bash, and offers to install what's missing after you approve.
Also: vault open opens the vault in Obsidian, and "where did we leave off?" works in any new session.
Open source
MIT license: free to use, adapt and redistribute. Read every line before you install.
If Obsidian Memory saves you time and tokens, leave a star on GitHub. It helps other developers find the project.
No server, no account and no telemetry. The vault is Markdown on your disk.
Commits include only the vault. What you staged stays as it is, and nothing is ever pushed.
Python's standard library, a bash launcher and the hooks. Easy to audit.
No vault is created without init. Installing or restarting anything always asks first.
Questions
No. The vault is a folder of Markdown that Claude reads and writes. Obsidian is only for browsing the notes yourself, if you want to.
No. Archived conversations stay out of git. If you turn git on, only the vault notes are committed, locally and never pushed.
Yes, with the companion plugin Obsidian Memory for Cowork, from the same marketplace. It uses the same vault, so you can switch between Claude Code and Cowork on the same project. See how to add it.
Yes. Run init in the project folder: Claude explores the code and fills in CLAUDE.md with the context.
Nothing happens. The hooks only act on projects that have a vault, and the plugin never creates one on its own.
The language of your conversation. Dates use the dd-mm-yyyy format.
No. It's an independent open-source project. It works with Claude Code and stores notes in a format Obsidian can open.