From 5e3cbdcf430b4c3a743b13578bbe72c371b653a7 Mon Sep 17 00:00:00 2001 From: Samuel James Date: Mon, 4 May 2026 11:14:35 +0000 Subject: [PATCH] Add Obsidian AI memory strategy --- obsidian-ai-memory-strategy.md | 217 +++++++++++++++++++++++++++++++++ 1 file changed, 217 insertions(+) create mode 100644 obsidian-ai-memory-strategy.md diff --git a/obsidian-ai-memory-strategy.md b/obsidian-ai-memory-strategy.md new file mode 100644 index 0000000..e2712a4 --- /dev/null +++ b/obsidian-ai-memory-strategy.md @@ -0,0 +1,217 @@ +# Obsidian as AI Memory — Strategy + +## Why Obsidian for AI Memory + +Obsidian is a local-first, markdown-based knowledge base. This makes it the ideal AI memory layer because: + +1. **Markdown is AI-native** — Every AI model reads/writes markdown natively. No format conversion needed. +2. **Local-first** — Your data stays on your infrastructure, not in someone else's cloud. +3. **Graph structure** — Obsidian's `[[wikilinks]]` create a knowledge graph that mirrors how AI context works — interconnected nodes of information. +4. **Git-syncable** — Vaults are just folders of `.md` files. Push to Forgejo for backup and versioning. +5. **Plugin ecosystem** — Community plugins for AI integration, templating, and automation. +6. **Searchable** — Full-text search + tags + frontmatter metadata = fast retrieval. + +## Architecture + +``` +┌─────────────────────────────────────────────┐ +│ Obsidian Vault │ +│ (Docker on casa / synced to Forgejo) │ +│ │ +│ 📁 Memory/ │ +│ ├── sessions/ ← AI conversation logs│ +│ ├── decisions/ ← Why we chose X │ +│ ├── infrastructure/ ← Network, servers │ +│ ├── agents/ ← Agent definitions │ +│ ├── runbooks/ ← How-to procedures │ +│ └── incidents/ ← What broke & fixes │ +│ │ +│ 📁 Projects/ │ +│ ├── oracle-dc-tech/ │ +│ ├── samjam-tech/ │ +│ └── homelab/ │ +│ │ +│ 📁 Templates/ │ +│ ├── session-log.md │ +│ ├── decision-record.md │ +│ ├── incident-report.md │ +│ └── agent-definition.md │ +│ │ +│ 📁 Daily/ ← Daily notes │ +│ └── 2026-05-04.md │ +└─────────────────────────────────────────────┘ + │ │ + ▼ ▼ + Forgejo Repo AI Agent reads + (git backup) (context injection) +``` + +## Memory Types + +### 1. Session Memory (Short-term) +**What**: Logs of AI conversations with key decisions and outcomes. +**When**: After each significant AI session. +**Format**: +```markdown +--- +date: 2026-05-04 +tags: [session, infrastructure, casaos] +agents: [kiro, harbor] +--- +# Session: Fix cloud connectivity + deploy code-server + +## Context +Cloud server unreachable from internet... + +## Decisions +- Fixed keepalived health check (ping -I flag broken) +- Changed cloud gateway to VIP 192.168.122.1 +- Deployed code-server on casa + +## Artifacts +- [[harbor]] agent created +- [[casa-app-workflow]] documented + +## Follow-up +- [ ] Make libvirt default network persistent +- [ ] Investigate casaos guest agent +``` + +### 2. Decision Records (Long-term) +**What**: Why a specific technical choice was made. +**Why**: So future-you (or future-AI) doesn't re-debate settled questions. +**Format**: +```markdown +--- +date: 2026-05-04 +tags: [decision, networking] +status: accepted +--- +# Decision: Use VIP as default gateway for all bridge hosts + +## Context +Cloud server was pointing at pre's base IP (.2) instead of VIP (.1). + +## Options +A. VIP (.1) — automatic failover ✅ +B. Direct (.2) — no failover +C. Dual routes — overcomplicated + +## Decision +Option A. VRRP exists for this exact purpose. +``` + +### 3. Infrastructure Memory +**What**: Current state of all systems, IPs, services, configs. +**Why**: Single source of truth that AI can reference. +**Maps to**: Your existing `steering/infrastructure.md` but richer with Obsidian links. + +### 4. Agent Memory +**What**: Agent definitions, capabilities, deployment history. +**Why**: Agents can reference their own history and learn from past deployments. +**Maps to**: `agents/harbor/` etc. + +### 5. Incident Memory +**What**: What broke, root cause, fix applied. +**Why**: Pattern recognition — if the same symptom appears, AI finds the prior fix. +**Format**: +```markdown +--- +date: 2026-05-04 +tags: [incident, networking, dns] +severity: high +systems: [cloud, pre, netbird] +--- +# Incident: Cloud server unreachable from internet + +## Symptoms +- NetBird disconnected on cloud +- DNS resolution failing +- Incoming traffic dead + +## Root Cause Chain +1. Pre's ping binary changed from iputils to inetutils (no -I flag) +2. Keepalived health check always failing → VIP never assigned +3. Cloud DNS stub resolver (127.0.0.53) broken +4. NetBird can't resolve management server → tunnel down + +## Fix +- Removed -I flag from check_internet.sh +- Changed cloud gateway to VIP +- Pointed resolv.conf at 127.0.0.54 +- Restarted NetBird + +## Prevention +- Monitor keepalived VIP assignment +- Alert on NetBird peer count drops +``` + +## Implementation Plan + +### Phase 1: Deploy Obsidian (Week 1) +1. Deploy `linuxserver/obsidian` Docker container on casa via Harbor workflow + - Or use **Obsidian Livesync** (CouchDB-based) for multi-device sync + - Or simply use a git-synced vault folder +2. Create vault structure (Memory/, Projects/, Templates/, Daily/) +3. Migrate existing steering docs into vault +4. Set up Forgejo repo `sam/vault` for git backup + +### Phase 2: AI Integration (Week 2) +1. **Kiro steering files** → symlink or copy from vault + - `.kiro/steering/*.md` can be generated from vault content +2. **Session logging** → After each AI session, save a session note +3. **Context injection** → Before starting work, AI reads relevant vault notes +4. **Harbor manifest** → Lives in vault, updated after each deployment + +### Phase 3: Automation (Week 3) +1. **Git auto-sync** — Cron job or Obsidian Git plugin pushes to Forgejo daily +2. **Template automation** — Templater plugin auto-fills dates, tags +3. **AI search** — Use Obsidian's Smart Connections plugin or similar for semantic search across notes +4. **Cross-reference** — Link incidents to infrastructure notes, decisions to sessions + +## Key Plugins + +| Plugin | Purpose | +|---|---| +| **Obsidian Git** | Auto-commit and push to Forgejo | +| **Templater** | Auto-fill templates for sessions, incidents | +| **Dataview** | Query notes like a database (list all incidents, open follow-ups) | +| **Smart Connections** | AI-powered semantic search across vault | +| **Kanban** | Track follow-up tasks from sessions | + +## Sync Strategy + +``` +Obsidian (casa Docker) ←→ Forgejo (sam/vault) + ↕ ↕ + Local editing Backup + versioning + (browser via NPM) (git history) + ↕ + AI reads vault + (steering files / context injection) +``` + +**Option A: Git-based** (simplest) +- Vault lives at `/DATA/AppData/obsidian/vault/` +- Cron or Obsidian Git plugin pushes to `sam/vault` on Forgejo +- Other machines clone the repo + +**Option B: Livesync** (real-time) +- Deploy CouchDB alongside Obsidian +- Real-time sync between devices +- Still git-backup to Forgejo periodically + +**Recommendation**: Start with Option A. Git sync is simple, reliable, and you already have Forgejo. Add Livesync later if you need real-time multi-device editing. + +## What Goes Where + +| Content | Vault Location | AI Access | +|---|---|---| +| Server IPs, configs | `Memory/infrastructure/` | Steering files | +| Agent definitions | `Memory/agents/` | Agent context | +| Deployment history | `Memory/agents/harbor/manifest.md` | Harbor workflow | +| Session logs | `Memory/sessions/` | On-demand lookup | +| Decisions | `Memory/decisions/` | On-demand lookup | +| Incidents | `Memory/incidents/` | Pattern matching | +| Daily notes | `Daily/` | Recent context | +| Project docs | `Projects/` | Project-specific |