{
	"nodes":[
		{"id":"title","type":"text","x":80,"y":30,"width":620,"height":90,"text":"Infrastructure Architecture - Master View\n\nVisual overview of Will's assistant stack, control plane, service layer, storage, and external integrations"},
		{"id":"group-left","type":"text","x":60,"y":150,"width":620,"height":520,"text":"","color":"4"},
		{"id":"group-center","type":"text","x":720,"y":150,"width":720,"height":520,"text":"","color":"5"},
		{"id":"group-right","type":"text","x":1480,"y":150,"width":360,"height":520,"text":"","color":"1"},
		{"id":"human","type":"text","x":100,"y":200,"width":220,"height":110,"text":"Will\n\nHuman operator\nDiscord, Telegram, Obsidian","color":"4"},
		{"id":"channels","type":"text","x":380,"y":190,"width":240,"height":130,"text":"Interaction channels\n\nDiscord\nTelegram\nWeb chat","color":"2"},
		{"id":"guide","type":"text","x":100,"y":390,"width":520,"height":210,"text":"Reading guide\n\nLeft: people and entry points\nCenter: assistant control plane and local capabilities\nRight: external systems and deployment targets\nBottom-center: storage and durable state","color":"4"},
		{"id":"vm","type":"text","x":780,"y":190,"width":260,"height":170,"text":"OpenClaw VM\n\nRuntime\nSession routing\nMemory search\nCron\nWorkspace scripts","color":"5"},
		{"id":"host","type":"text","x":1080,"y":170,"width":300,"height":240,"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","color":"3"},
		{"id":"storage","type":"text","x":880,"y":470,"width":500,"height":150,"text":"Storage and durable state\n\nMinIO 192.168.153.253:9000   |   Bucket: zap   |   Gitea: will/swarm-zap.git\nShared Obsidian vault: will/will-shared-zap","color":"6"},
		{"id":"external","type":"text","x":1520,"y":200,"width":280,"height":170,"text":"External systems\n\nGoogle Workspace\nInternet services\nDiscord network\nTelegram network\nTailscale","color":"1"},
		{"id":"k8s","type":"text","x":1520,"y":450,"width":280,"height":120,"text":"Kubernetes\n\nPi cluster\nNamespace: swarm","color":"0"}
	],
	"edges":[
		{"id":"e1","fromNode":"human","toNode":"channels","label":"uses","fromSide":"right","toSide":"left"},
		{"id":"e2","fromNode":"channels","toNode":"vm","label":"messages","fromSide":"right","toSide":"left"},
		{"id":"e3","fromNode":"vm","toNode":"host","label":"local services","fromSide":"right","toSide":"left"},
		{"id":"e4","fromNode":"vm","toNode":"storage","label":"writes state","fromSide":"bottom","toSide":"top"},
		{"id":"e5","fromNode":"vm","toNode":"external","label":"APIs and networks","fromSide":"right","toSide":"left"},
		{"id":"e6","fromNode":"vm","toNode":"k8s","label":"deploy target","fromSide":"right","toSide":"left"},
		{"id":"e7","fromNode":"host","toNode":"storage","label":"vault and backups","fromSide":"bottom","toSide":"top"}
	]
}