{
	"nodes":[
		{"id":"n1","type":"text","x":80,"y":80,"width":220,"height":100,"text":"Will\n\nHuman operator\nUses Discord, Telegram, Obsidian"},
		{"id":"n2","type":"text","x":420,"y":60,"width":260,"height":120,"text":"OpenClaw VM\n\nRuntime\nWorkspace memory\nScripts\nSessions"},
		{"id":"n3","type":"text","x":780,"y":40,"width":300,"height":220,"text":"Host services\n192.168.153.130\n\nSearXNG :18803\nBrave MCP :18802\nn8n-agent :18808\nwhisper.cpp :18801\nKokoro :18805\nOllama :18807\nllama.cpp Gemma :18806\nObsidian API :27123"},
		{"id":"n4","type":"text","x":1130,"y":80,"width":240,"height":100,"text":"External services\n\nGoogle Workspace\nInternet services\nDiscord\nTelegram"},
		{"id":"n5","type":"text","x":760,"y":340,"width":260,"height":120,"text":"Storage and infra\n\nMinIO 192.168.153.253:9000\nGitea over Tailscale\nPi Kubernetes cluster\nnamespace: swarm"},
		{"id":"n6","type":"text","x":1080,"y":340,"width":240,"height":100,"text":"Shared knowledge layer\n\nObsidian shared vault\nwill/will-shared-zap"}
	],
	"edges":[
		{"id":"e1","fromNode":"n1","toNode":"n2","label":"interacts with","fromSide":"right","toSide":"left"},
		{"id":"e2","fromNode":"n2","toNode":"n3","label":"calls local services","fromSide":"right","toSide":"left"},
		{"id":"e3","fromNode":"n2","toNode":"n4","label":"connects to","fromSide":"right","toSide":"left"},
		{"id":"e4","fromNode":"n2","toNode":"n5","label":"backs up / deploys / syncs","fromSide":"bottom","toSide":"top"},
		{"id":"e5","fromNode":"n3","toNode":"n6","label":"Obsidian API serves","fromSide":"bottom","toSide":"top"},
		{"id":"e6","fromNode":"n1","toNode":"n6","label":"reads and edits","fromSide":"right","toSide":"left"}
	]
}