NanoClaw
NanoClaw — Personal Claude Assistant (second brain for a diplomat)
NanoClaw — Personal Claude Assistant A self-hosted, compounding-memory AI assistant running on a Raspberry Pi.
This system does three things
Extract — pull discrete facts, insights, and style preferences from raw documents (speeches, articles, conversations) into a graph database
Synthesise — compile those facts into human-readable wiki pages organised by entity, concept, and timeline.
Recall — on every agent invocation, run a semantic query against the graph using the user's message as input. Relevant entries are injected as context before the agent responds.
Layer 1 — Raw Sources
Archival files, never modified after storage:
Layer 2 — mnemon Knowledge Graph
A SQLite-backed graph database where each entry has: content, category, importance score, tags, timestamp, and graph edges to related entries. Queried semantically via local vector embeddings (Ollama + nomic-embed-text).
Two stores:
Global — shared knowledge across all groups; read-only for non-main agents
Local — per-group memory, writable only by that group's agent
Layer 3 — Wiki Pages
Synthesised markdown files compiled from mnemon facts.
full narrative pages with cross-references, organised into entities/, concepts/, and timelines/ subdirectories. Browsable in Obsidian on macOS and iOS.
Technology Stack
Claude Agent SDK
Baileys WhatsApp Web protocol
mnemon Custom CLI knowledge graph tool (SQLite + graph traversal
Ollama + nomic-embed-text Local vector embeddings for semantic recall — runs on Pi, no cloud calls whisper.cpp Local voice transcription — converts voice notes to text on-device
Security Design
Containers never see raw API keys. An HTTP proxy (OneCLI) intercepts container HTTPS traffic and injects credentials at request time.
Interesting Design Decisions
Why Docker containers per group, not one process? Isolation. Each group gets a clean environment, its own filesystem, and its own Claude session
Why iCloud + rsync for Obsidian sync, not git? iOS git clients (obsidian-git, isomorphic-git) have unreliable auth and clone failures in practice
A Mac Mini acts as the bridge (always on, same LAN as the Pi).
Why mnemon + wiki pages, not just RAG? RAG retrieves text chunks; mnemon stores synthesised facts as discrete nodes.
The wiki pattern is inspired by Andrej Karpathy's LLM Wiki concept
Why local embeddings? The knowledge base contains personal and policy-sensitive content. Running nomic-embed-text locally on the Pi means no document content leaves the network. The 274MB model runs fast enough on the Pi 5 for this use case.
Actively running on a Raspberry Pi 5 (aarch64) as a personal assistant.
Obsidian integration: Wiki pages sync to an Obsidian vault on macOS/iOS via iCloud + rsync bridge. Web clips from the Obsidian mobile app flow in the other direction — clip → iCloud → Pi → ingest pipeline.
Edited: | Tweet this! | Search Twitter for discussion

Made with flux.garden