Iteration 3 · Automate the writes
Nightly sync + ad-hoc session-close tasks
Built two scheduled jobs. A nightly sync at 10pm runs
memory maintenance, pruning stale entries, promoting
decisions from chatter to durable. A session-close task
(manual trigger) writes the daily note and updates the
relevant project file. Both write directly to the vault.
Iteration 4 · Mission Control dashboard
Replace the old HTML view with DataviewJS
The original dashboard was a separate HTML file that had
to be regenerated. Replaced with DataviewJS inside Obsidian,
it queries the YAML frontmatter on every project note
live. Adding a project just means dropping a new note;
the dashboard picks it up immediately.
Iteration 5 · Local LLM layer
Ollama + LibreChat for everyday chat
LibreChat on the Mac Mini in Docker as the main local
chat UI (port 3080). Ollama for inference. OpenRouter for
cloud routing. Default workhorse: Claude Sonnet 4.6 in
paid contexts; Gemini Flash Lite as the budget cloud
model; llama3.2:latest as the safest local
fallback.
Hiccups (and what I learned)
Hiccup #1 · Three folders, three drifts
The pre-vault era had separate context/, memory/, projects/ trees. Each tool bootstrapped from a different one. Decisions landed in one place but were referenced from another.
Collapsed everything to the Obsidian Vault. Source of truth hierarchy is now explicit: latest user instruction → System.md → Memory.md → project note. No ambiguity.
Hiccup #2 · Cowork and Claude Code can't see each other's transcripts
Nightly Cowork sync at 2:01 AM ET writes to the daily note, but it has no visibility into Claude Code sessions running on my Mac. Whole sessions of work were missing from the daily log.
Added a Claude Code session-close playbook (CC-Session-Close.md), Claude Code writes its own section to the daily note before exiting. Triggered by the user saying "session close" / "wrap up this session". The vault then has both perspectives.
Hiccup #3 · Scheduled tasks need pre-approved tool permissions
The first scheduled run of each automation hit a permission prompt that no human was there to answer, so the agent stalled.
Run each scheduled task manually once before letting it auto-fire, so tool approvals are pre-cached. Boring fix, but it's the lesson: anything that runs unattended must be exercised attended first.
Hiccup #4 · Claude Desktop projects don't sync between machines
Each machine maintains its own project list inside Claude Desktop. There's no cross-machine sync. I assumed otherwise and lost a project's worth of state.
Wrote a sync script (sync_openclaw_workspace.py) that mirrors the real source, the vault, into both machines' Claude Projects folders. The vault wins; the local Claude Desktop view follows.
Hiccup #5 · Context window blowouts
Long Claude Code sessions used to OOM the context window, I'd lose the thread and have to start over.
Hard rule baked into the operating contract: when conversation context exceeds ~150K tokens, consolidate state into the vault BEFORE continuing. Compaction loses context; the vault preserves it. Memory-writes are now treated as save-points.
Tools used
Obsidian + Dataview
canonical store + query
Claude Code
primary build agent
Cowork
remote / nightly agent
Codex CLI
terminal-side coding
OpenClaw
automation runtime
LibreChat
local chat UI (Docker)
OpenRouter
cloud model routing
Google Drive
cross-machine sync
macOS LaunchAgents
scheduled tasks
MCP Servers
Google Workspace integration
Markdown + YAML
durable state format
Roadmap
-
NEXT
Update LibreChat system prompt to vault paths.
It still points at the old folder structure, the last lingering reference to the pre-vault world.
-
NEXT
Run each scheduled task manually once.
Pre-approve tool permissions so unattended cron runs don't stall on prompts.
-
v2
Mac Mini becomes primary automation host.
Move OpenClaw, scheduled tasks, and the chat layer entirely onto the always-on Mini. MacBook becomes the developer surface, not the ops surface.
-
v2
Specialized agents on top of the executive loop.
One strong executive loop is the foundation. Layer specialized agents (research, writing, finance) only after the loop is solid, not before.
-
LATER
Move secrets out of synced .env files.
Convenient but not ideal long-term. 1Password CLI or macOS keychain.
-
LATER
Claude + Databricks MCP integration.
Researching: which Databricks workflows are worth exposing through MCP, and what the ROI vs. just running queries directly looks like.
← Back to all projects