Obsidian vault & memory
Watari has six layers of memory. Your Obsidian vault is the big one — its long-term, read (and optionally write) knowledge base. Here's how to connect it and switch on every memory capability.
The six layers
| Layer | What it is | Enable |
|---|---|---|
| L1 learned facts | durable one-line facts it saves about you | on by default (JARVIS_MEMORY_ENABLED=true) |
| L2 journal | a daily journal written at session end | on by default |
| L3 Obsidian vault | your notes — searched & read every session | JARVIS_VAULT_PATH (below) |
| L4 hot cache | Redis cache so lookups survive restarts | JARVIS_REDIS_URL (optional) |
| L5 semantic recall | recall by meaning, not just keywords | pip install sentence-transformers |
| Working | this conversation; restart-durable, idle-reset | always on |
1 · Connect your Obsidian vault (L3)
Point Watari at the folder of Markdown notes you want it to read. In .env:
JARVIS_VAULT_PATH=C:\Users\you\Documents\Obsidian Vault # Windows
# JARVIS_VAULT_PATH=/home/you/obsidian-vault # Linux/MacIt's validated at startup (Watari warns loudly if the path isn't readable). Any folder of .md files works — it doesn't have to be Obsidian. Tuning knobs: JARVIS_VAULT_SEARCH_MAX_RESULTS (default 6) and JARVIS_VAULT_READ_MAX_CHARS (default 4000).
Reading is on as soon as the path is set. Try it by voice: “search my vault for the rabbit-farm note and read me the summary.” Tools: search_vault(query), read_vault_note(path).
2 · Enable WRITING to the vault
Writing is off by default on purpose: if your vault is a one-way sync target (e.g. a local mirror of a server-authoritative vault), local edits get clobbered. Turn it on only on the host that owns the vault:
JARVIS_VAULT_WRITABLE=trueThen write_vault(path, text) can save notes (path-scoped, no traversal). On the host that owns the vault this is safe; on a mirror, leave it false and let the authoritative host write.
3 · Learned facts & journal (L1 / L2)
These are Watari's own memory, stored as Markdown under memory/learned/ and memory/journal/ (gitignored). They're on by default. Tools you can use by voice:
remember(text, tags)— “remember that I keep rabbits at the farm.” It also saves durable facts on its own.recall(query)— “what do you know about my farm?”forget(query)— drop a stored fact.read_journal()— “what did we do yesterday?”
The most recent learned facts are injected into the system prompt at startup (capped by JARVIS_MEMORY_DIGEST_MAX, default 12); recall reaches older ones. A background self-improvement pass quietly extracts durable facts after every few turns (JARVIS_SELF_IMPROVE_ENABLED).
4 · Recall by meaning (L5, optional)
uv pip install sentence-transformers # ~90 MB model downloads on first useWith it installed, recall matches on meaning (“my bunnies” → your rabbit-farm note), not just keywords. It's a graceful no-op until installed (JARVIS_MEMORY_SEMANTIC_ENABLED=true by default).
5 · Cache across restarts (L4, optional)
JARVIS_REDIS_URL=redis://localhost:6379/0Backs the hot cache with Redis so cached lookups survive a restart. Leave it blank and the cache falls back to in-process (no failure).
JARVIS_VAULT_WRITABLE=false) so a sync never clobbers an edit.See also Architecture → Memory for how the layers compose, and Integrations for every other tool.