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:    |       |    Search Twitter for discussion