This is the single source of truth for setting up (or recovering) the personal memory system on a new machine. It is written to be driven interactively by an AI agent: work through it top to bottom, ask the user before each step, check what already exists, and only do the work that is actually needed.
There is no install script. The agent performs the setup by following these steps.
- Go step by step. Before each step, ask the user whether the prerequisite is already in place (e.g. "Is Obsidian installed?", "Is Node.js installed?").
- If a prerequisite exists, skip to verification. If not, help install it.
- Let the user choose install locations (PATHs). Do not hardcode paths. Record the user's choices and reuse them in later steps (especially the vault path and the two local MCP directories).
- Never overwrite an existing
~/.copilot/copilot-instructions.md,mcp-config.json, or skills without backing up first and confirming with the user. - Never copy secrets, tokens, or local session state.
Collect these values up front and reuse them:
| Variable | Meaning | Example |
|---|---|---|
VAULT_PATH |
Where the Obsidian vault lives | C:\Users\<user>\Repos\ObsidianVaultMemory |
PERSOMEMORY_REPO |
Where this repo is checked out | C:\Users\<user>\Repos\PersoMemory |
SC_MCP_DIR |
Smart Connections MCP install dir | C:\Users\<user>\smart-connections-mcp |
LIFECYCLE_MCP_DIR |
Lifecycle MCP install dir | C:\Users\<user>\persomemory-lifecycle-mcp |
COPILOT_DIR |
Copilot CLI config dir | ~/.copilot |
This repo ships no hardcoded user paths. Several files contain placeholder tokens that must be replaced with the user's chosen paths when the files are copied into place:
| Token | Replace with | Appears in |
|---|---|---|
<VAULT_PATH> |
the user's VAULT_PATH |
config/hooks/persomemory-session*.json, skills/memory-*/SKILL.md, scripts/run-evening-sweep.sh, scripts/validate-memory-vault.sh |
<PERSOMEMORY_REPO> |
the user's PERSOMEMORY_REPO |
docs/scheduling.md (cron examples) |
The agent substitutes these tokens after copying a file to its install location (skills,
hooks), or when invoking a script (pass the real path as an env var / argument instead of
relying on the placeholder default). Use the OS-appropriate path style: Windows uses
backslashes (escaped in JSON, e.g. C:\\Users\\<user>\\Repos\\ObsidianVaultMemory);
Linux/macOS/WSL use forward slashes.
Example substitution after copying the skills (PowerShell):
Get-ChildItem $HOME\.copilot\skills\memory-* -Recurse -Filter SKILL.md |
ForEach-Object {
(Get-Content $_.FullName -Raw).Replace('<VAULT_PATH>', $VaultPath) |
Set-Content $_.FullName
}Example substitution (bash):
grep -rl '<VAULT_PATH>' ~/.copilot/skills/memory-* ~/.copilot/hooks |
xargs sed -i "s|<VAULT_PATH>|${VAULT_PATH}|g"- Obsidian vault (
ObsidianVaultMemory) — durable memory content. Git-backed. - Obsidian Smart Connections community plugin — generates the
.smart-env/semantic index. - Four memory skills in
~/.copilot/skills/memory-*. - MCP servers in
~/.copilot/mcp-config.json:workiq,workiq-teams,mcpvault,smart-connections,persomemory-lifecycle. - Two local MCP projects:
smart-connections-mcp(cloned/built) andpersomemory-lifecycle-mcp(copied frommcp/lifecycle/). - Copilot CLI session hooks in
~/.copilot/hooks/. - Scheduled evening sweep.
Ask the user which of these exist; install what is missing.
- Node.js (for
npx, mcpvault, the local MCP builds). Verify:node --version. - git. Verify:
git --version. - GitHub Copilot CLI. Verify:
copilot --version. - Obsidian desktop app.
- Microsoft 365 Copilot license (enables WorkIQ MCP and Teams MCP). Tenant admin may need to approve WorkIQ consent.
Ask the user where they want the vault (VAULT_PATH).
- Clone the vault repo into the chosen location:
git clone https://github.com/FlorianPydde/ObsidianVaultMemory.git "<VAULT_PATH>" - If recovering, pull latest instead of cloning.
- Confirm the six top-level folders exist:
evidence/,outcomes/,execution/,reusable/,views/,governance/.
- Open the vault in Obsidian (
Open folder as vault->VAULT_PATH). - In
Settings -> Community plugins, install and enable Smart Connections. - Let it index. Confirm a
.smart-env/directory appears in the vault.
Semantic search returns useful results only after this indexing has happened. The MCP bridge (Step 4) reads this index; without it, semantic queries return nothing.
Copy the four skill folders from this repo into the Copilot skills directory:
cp -r skills/memory-router skills/memory-brief skills/memory-sweep skills/memory-maintenance \
~/.copilot/skills/Windows PowerShell:
Copy-Item -Recurse -Force skills\memory-router,skills\memory-brief,skills\memory-sweep,skills\memory-maintenance $HOME\.copilot\skills\Then remove any obsolete persomemory* skill folders from ~/.copilot/skills/ if present.
Substitute the <VAULT_PATH> placeholder in the copied skill files (see "Path
placeholders" above) so each skill's Memory Store section points at the real vault.
Verify each skill has a SKILL.md with a matching name: field and no remaining
<VAULT_PATH> token.
Ask the user for SC_MCP_DIR and LIFECYCLE_MCP_DIR.
Smart Connections MCP (clone + build):
git clone https://github.com/msdanyg/smart-connections-mcp.git "<SC_MCP_DIR>"
cd "<SC_MCP_DIR>" && npm install && npm run buildLifecycle MCP (copy from this repo + install):
cp -r mcp/lifecycle/. "<LIFECYCLE_MCP_DIR>/"
cd "<LIFECYCLE_MCP_DIR>" && npm installIf the file exists, back it up and merge rather than overwrite. Use this template,
substituting VAULT_PATH, SC_MCP_DIR, and LIFECYCLE_MCP_DIR with the user's chosen
paths (use the path style for the OS — Windows uses escaped backslashes in JSON):
{
"mcpServers": {
"workiq": {
"command": "npx",
"args": ["-y", "@microsoft/workiq@latest", "mcp"]
},
"workiq-teams": {
"type": "http",
"url": "https://agent365.svc.cloud.microsoft/agents/tenants/72f988bf-86f1-41af-91ab-2d7cd011db47/servers/mcp_TeamsServer"
},
"mcpvault": {
"command": "npx",
"args": ["@bitbonsai/mcpvault@latest", "<VAULT_PATH>"]
},
"smart-connections": {
"command": "node",
"args": ["<SC_MCP_DIR>/dist/index.js"],
"env": { "SMART_VAULT_PATH": "<VAULT_PATH>" }
},
"persomemory-lifecycle": {
"command": "node",
"args": ["<LIFECYCLE_MCP_DIR>/index.js"],
"env": { "VAULT_PATH": "<VAULT_PATH>" }
}
}
}Hooks queue pointer-only conversation review breadcrumbs and inject a pointer-only startup
reminder. They capture the session evidence the sweep reconciles against open loops — see docs/hooks.md.
Install the variant for the current OS into ~/.copilot/hooks/ (the runtime filename is
persomemory-session.json on every OS):
- Linux/macOS: copy
config/hooks/persomemory-session.jsonand the threeconfig/hooks/scripts/*.shfiles. - Windows: copy
config/hooks/persomemory-session.windows.jsonaspersomemory-session.json, plus the threeconfig/hooks/scripts/*.ps1files.
Replace the <VAULT_PATH> placeholder in the copied hook JSON (the
PERSOMEMORY_VAULT_PATH env value) with the user's VAULT_PATH, using the OS-appropriate
path style (escaped backslashes in the Windows JSON).
See docs/scheduling.md. The scripts/run-evening-sweep.sh helper runs /memory-sweep
with narrow tool permissions and writes approval-gated decisions to
governance/approvals/YYYY-MM-DD.md. Provide the vault path by exporting
VAULT_PATH=<VAULT_PATH> before running (preferred over relying on the placeholder
default), and substitute <PERSOMEMORY_REPO> in any cron entry. Add a cron entry for
unattended nightly runs.
- Vault structure and frontmatter schema (pass the real vault path as the argument):
./scripts/validate-memory-vault.sh "<VAULT_PATH>" - Confirm the local MCP build artifacts exist:
<SC_MCP_DIR>/dist/index.js<LIFECYCLE_MCP_DIR>/index.js
- Confirm
.smart-env/exists in the vault (Step 2). - Start Copilot CLI and confirm
workiq,mcpvault,smart-connections, andpersomemory-lifecycleare available. - Behavioural checks:
- Ask for a recall on a known project; confirm
memory-routerretrieves only relevant context. - Ask "What should I focus on today?"; confirm
memory-briefhandles broad day-level attention. - Ask "I am working on . What should I focus on today?"; confirm
memory-routerhandles scoped attention. - Run a daily sweep only after WorkIQ authentication is confirmed.
- Ask for a recall on a known project; confirm