{
  "schema_version": "1.0.0",
  "generated_at": "2026-05-19T00:10:00Z",
  "generator": "Ocampo-Infra Agent System (native, no graphify upstream)",
  "owner": "Roberto Ocampo <ro@ocampo.ai>",
  "source_commit": "ocampo-infra HEAD as of 2026-05-19",
  "nodes": [
    {"id": "srv-92", "type": "server", "label": ".92 w3vm", "ip": "192.168.91.92", "role": "Virtualmin/Apache/PHP/Web", "status": "active"},
    {"id": "srv-93", "type": "server", "label": ".93 roDev-ai-db", "ip": "192.168.91.93", "role": "PostgreSQL+Qdrant+N8N", "vm_id": "10093", "status": "active"},
    {"id": "srv-94", "type": "server", "label": ".94 GitLab", "ip": "192.168.91.94", "role": "GitLab CE", "status": "active"},
    {"id": "srv-139", "type": "server", "label": ".139 Proxmox", "ip": "192.168.91.139", "role": "Hypervisor", "status": "active"},
    {"id": "srv-140", "type": "server", "label": ".140 deb-A16x2", "ip": "192.168.91.140", "role": "Primary AI/GPU (8 GPUs)", "vm_id": "10140", "status": "active"},
    {"id": "srv-141", "type": "server", "label": ".141 deb-A10G", "ip": "192.168.91.141", "role": "Secondary AI", "vm_id": "10141", "status": "standby"},
    {"id": "srv-102", "type": "server", "label": ".102 Ivania-R", "ip": "192.168.91.102", "role": "TrueNAS (64TB)", "status": "active"},
    {"id": "srv-207", "type": "server", "label": ".207 roNAS-207", "ip": "192.168.91.207", "role": "TrueNAS (48TB)", "status": "active"},
    {"id": "srv-1", "type": "server", "label": ".1 vyos-router", "ip": "192.168.91.1", "role": "Lab Router (VyOS VM 10003)", "status": "active"},
    {"id": "srv-m1000e", "type": "server", "label": "M1000e CPU Pool", "ip": "n/a", "role": "16 blade Proxmox cluster (576c/1152t)", "status": "active"},

    {"id": "gpu-a16-0", "type": "gpu", "label": "A16 #0", "host": "srv-140", "port": 8188, "model": "RealVisXL_V5.0"},
    {"id": "gpu-a16-1", "type": "gpu", "label": "A16 #1", "host": "srv-140", "port": 8189, "model": "RealVisXL_V5.0"},
    {"id": "gpu-a16-2", "type": "gpu", "label": "A16 #2", "host": "srv-140", "port": 8190, "model": "RealVisXL_V5.0"},
    {"id": "gpu-a16-3", "type": "gpu", "label": "A16 #3", "host": "srv-140", "port": 8191, "model": "RealVisXL_V5.0"},
    {"id": "gpu-a16-4", "type": "gpu", "label": "A16 #4", "host": "srv-140", "port": 8192, "model": "RealVisXL_V5.0"},
    {"id": "gpu-a16-5", "type": "gpu", "label": "A16 #5", "host": "srv-140", "port": 8193, "model": "RealVisXL_V5.0"},
    {"id": "gpu-a16-6", "type": "gpu", "label": "A16 #6", "host": "srv-140", "port": 8194, "model": "RealVisXL_V5.0"},
    {"id": "gpu-a16-7", "type": "gpu", "label": "A16 #7", "host": "srv-140", "port": 8195, "model": "RealVisXL_V5.0"},
    {"id": "gpu-a10g", "type": "gpu", "label": "A10G", "host": "srv-141", "port": null, "model": "standby"},

    {"id": "svc-apache", "type": "service", "label": "Apache+PHP-FPM", "host": "srv-92", "port": 443},
    {"id": "svc-virtualmin", "type": "service", "label": "Virtualmin", "host": "srv-92", "port": 10000},
    {"id": "svc-postgres", "type": "service", "label": "PostgreSQL", "host": "srv-93", "port": 5432},
    {"id": "svc-qdrant", "type": "service", "label": "Qdrant", "host": "srv-93", "port": 6333},
    {"id": "svc-n8n", "type": "service", "label": "N8N", "host": "srv-93", "port": 5678},
    {"id": "svc-gitlab", "type": "service", "label": "GitLab CE", "host": "srv-94", "port": 443},
    {"id": "svc-ollama", "type": "service", "label": "Ollama", "host": "srv-140", "port": 11434},
    {"id": "svc-comfyui", "type": "service", "label": "ComfyUI (8x)", "host": "srv-140", "port_range": "8188-8195"},
    {"id": "svc-openwebui", "type": "service", "label": "Open WebUI", "host": "srv-140", "port": 8080, "url": "https://llm.ocampo.ai"},
    {"id": "svc-gpu-control", "type": "service", "label": "GPU Control", "host": "srv-140", "port": 8180},
    {"id": "svc-imagina", "type": "service", "label": "Imagina API", "host": "srv-92", "url": "https://ocampo.ai/imagina/"},
    {"id": "svc-mdbrowser", "type": "service", "label": "MD Browser", "host": "srv-92", "url": "https://ocampo.ai/cohorte/dashboard/mdbrowser.php"},
    {"id": "svc-cohorte-dashboard", "type": "service", "label": "Cohorte Dashboard", "host": "srv-92", "url": "https://ocampo.ai/cohorte/dashboard/"},
    {"id": "svc-speedtest", "type": "service", "label": "SpeedTest", "host": "srv-92", "url": "https://speedtest.ocampo.ai"},
    {"id": "svc-nexo", "type": "service", "label": "NEXO Scrape API", "host": "srv-92", "url": "https://ocampo.ai/nexo/api/"},

    {"id": "dom-ocampo-ai", "type": "domain", "label": "ocampo.ai", "user": "ocampo", "docroot": "/home/ocampo/public_html/ocampo-ai-app/", "status": "active"},
    {"id": "dom-ivaniaphoto", "type": "domain", "label": "ivaniaphoto.com", "user": "ivaniaphoto", "docroot": "/home/ivaniaphoto/public_html/ivaniaphoto-app/", "status": "active"},
    {"id": "dom-smartbin", "type": "domain", "label": "smartbin.ai", "user": "smartbin", "status": "active"},
    {"id": "dom-gotofix", "type": "domain", "label": "gotofix.com", "user": "gotofix", "status": "active"},
    {"id": "dom-robertoocampo", "type": "domain", "label": "robertoocampo.com", "user": "robertoocampo", "status": "active"},
    {"id": "dom-alturadigital", "type": "domain", "label": "alturadigital.us", "user": "alturadigital", "status": "active"},
    {"id": "dom-webapp-qe", "type": "domain", "label": "webapp.quinceaneraexpos.com", "user": "webapp", "status": "active"},
    {"id": "dom-llm", "type": "domain", "label": "llm.ocampo.ai", "user": "ocampo", "status": "active"},
    {"id": "dom-speedtest", "type": "domain", "label": "speedtest.ocampo.ai", "user": "ocampo", "status": "active"},
    {"id": "dom-mapa", "type": "domain", "label": "mapa.ocampo.ai", "user": "ocampo", "status": "PROPOSED-NOT-CREATED"},
    {"id": "dom-centralairsolution", "type": "domain", "label": "centralairsolution.com", "user": "centralairsolution", "status": "pending"},
    {"id": "dom-shampaint", "type": "domain", "label": "shampaint.com", "user": "shampaint", "status": "pending"},
    {"id": "dom-techsellerplus", "type": "domain", "label": "techsellerplus.com", "user": "techsellerplus", "status": "pending"},
    {"id": "dom-wildfirepainting", "type": "domain", "label": "wildfirepainting.com", "user": "wildfirepainting", "status": "pending"},

    {"id": "agt-project-manager", "type": "agent", "label": "project-manager", "category": "orchestration", "status": "active"},
    {"id": "agt-project-planner", "type": "agent", "label": "project-planner-agent", "category": "orchestration", "status": "active"},
    {"id": "agt-scheduling", "type": "agent", "label": "scheduling-agent", "category": "orchestration", "status": "active"},
    {"id": "agt-dashboard-updater", "type": "agent", "label": "dashboard-updater", "category": "orchestration", "status": "active"},
    {"id": "agt-software-architect", "type": "agent", "label": "software-architect", "category": "implementation", "status": "active", "obligatory": true},
    {"id": "agt-aesthetic", "type": "agent", "label": "aesthetic-style-consultant", "category": "design", "status": "active", "obligatory": true},
    {"id": "agt-session-logger", "type": "agent", "label": "session-logger", "category": "orchestration", "status": "active", "obligatory": true},
    {"id": "agt-file-permissions", "type": "agent", "label": "file-permissions-agent", "category": "infrastructure", "status": "active", "obligatory": true},
    {"id": "agt-ui-ux", "type": "agent", "label": "ui-ux-designer", "category": "design", "status": "active"},
    {"id": "agt-image-prompt", "type": "agent", "label": "image-prompt-engineer", "category": "design", "status": "active"},
    {"id": "agt-editorial", "type": "agent", "label": "editorial-designer", "category": "design", "status": "active"},
    {"id": "agt-expert-graphic", "type": "agent", "label": "expert-graphic-designer", "category": "design", "status": "active"},
    {"id": "agt-imagina", "type": "agent", "label": "imagina-ocampo-ai", "category": "implementation", "status": "active"},
    {"id": "agt-design-system", "type": "agent", "label": "ocampo-design-system", "category": "design", "status": "active"},
    {"id": "agt-site-analyzer", "type": "agent", "label": "site-analyzer", "category": "research", "status": "active"},
    {"id": "agt-market-analyst", "type": "agent", "label": "market-analyst", "category": "research", "status": "active"},
    {"id": "agt-competitor", "type": "agent", "label": "competitor-research", "category": "research", "status": "active"},
    {"id": "agt-security-auditor", "type": "agent", "label": "security-auditor", "category": "research", "status": "active"},
    {"id": "agt-financial", "type": "agent", "label": "financial-advisor", "category": "research", "status": "active"},
    {"id": "agt-advanced-market-research", "type": "agent", "label": "advanced-market-research (RETO)", "category": "research", "status": "active"},
    {"id": "agt-market-research-journalist", "type": "agent", "label": "market-research-journalist", "category": "research", "status": "active"},
    {"id": "agt-knowledge-extractor", "type": "agent", "label": "knowledge-extractor", "category": "research", "status": "active"},
    {"id": "agt-demo-site-creator", "type": "agent", "label": "demo-site-creator", "category": "implementation", "status": "active"},
    {"id": "agt-web-cloner-enhancer", "type": "agent", "label": "web-cloner-enhancer", "category": "implementation", "status": "active"},
    {"id": "agt-code-generator", "type": "agent", "label": "code-generator", "category": "implementation", "status": "active"},
    {"id": "agt-web-validation", "type": "agent", "label": "web-validation-agent", "category": "qa", "status": "active"},
    {"id": "agt-postgres-unified", "type": "agent", "label": "postgresql-unified", "category": "infrastructure", "status": "active"},
    {"id": "agt-qdrant-unified", "type": "agent", "label": "qdrant-unified", "category": "infrastructure", "status": "active"},
    {"id": "agt-mem0-controller", "type": "agent", "label": "mem0-controller", "category": "infrastructure", "status": "active"},
    {"id": "agt-n8n-controller", "type": "agent", "label": "n8n-controller", "category": "infrastructure", "status": "active"},
    {"id": "agt-gitlab-expert", "type": "agent", "label": "gitlab-expert", "category": "infrastructure", "status": "active"},
    {"id": "agt-hardware-monitor", "type": "agent", "label": "hardware-monitor", "category": "infrastructure", "status": "active"},
    {"id": "agt-domain-onboarding", "type": "agent", "label": "domain-onboarding-agent", "category": "infrastructure", "status": "active"},
    {"id": "agt-site-migration", "type": "agent", "label": "site-migration-agent", "category": "infrastructure", "status": "active"},
    {"id": "agt-mikrotik", "type": "agent", "label": "mikrotik-controller", "category": "infrastructure", "status": "active"},
    {"id": "agt-backup", "type": "agent", "label": "backup-controller", "category": "infrastructure", "status": "active"},
    {"id": "agt-bgmonitor", "type": "agent", "label": "bgmonitor-agent", "category": "infrastructure", "status": "active"},
    {"id": "agt-virtualmin-user", "type": "agent", "label": "virtualmin-user-manager", "category": "infrastructure", "status": "active"},
    {"id": "agt-virtualmin-file", "type": "agent", "label": "virtualmin-file-manager", "category": "infrastructure", "status": "active"},
    {"id": "agt-proxmox-cluster", "type": "agent", "label": "proxmox-cluster-controller", "category": "infrastructure", "status": "active"},
    {"id": "agt-infra-orchestrator", "type": "agent", "label": "infra-orchestrator", "category": "orchestration", "status": "active"},
    {"id": "agt-fabric-rag", "type": "agent", "label": "fabric-rag", "category": "infrastructure", "status": "active"},
    {"id": "agt-markitdown", "type": "agent", "label": "markitdown-agent", "category": "utilities", "host": "srv-93", "status": "active"},
    {"id": "agt-sms", "type": "agent", "label": "sms-notification-agent", "category": "notification", "status": "active"},
    {"id": "agt-email", "type": "agent", "label": "email-notification-agent", "category": "notification", "status": "active"},
    {"id": "agt-romio", "type": "agent", "label": "romio-agent", "category": "notification", "status": "active"},
    {"id": "agt-evolution-wa", "type": "agent", "label": "evolution-whatsapp-agent", "category": "notification", "status": "active"},
    {"id": "agt-photo-commerce", "type": "agent", "label": "photo-commerce-agent", "category": "commerce", "status": "active"},
    {"id": "agt-print-fulfillment", "type": "agent", "label": "print-fulfillment-agent", "category": "commerce", "status": "active"},
    {"id": "agt-ai-photo-processing", "type": "agent", "label": "ai-photo-processing-agent", "category": "commerce", "status": "active"},
    {"id": "agt-email-marketing", "type": "agent", "label": "email-marketing-agent", "category": "commerce", "status": "active"},
    {"id": "agt-matomo", "type": "agent", "label": "matomo-analytics-agent", "category": "analytics", "status": "just-created"},
    {"id": "agt-smartbin-analytics", "type": "agent", "label": "smartbin-analytics-agent", "category": "analytics", "status": "just-created"},
    {"id": "agt-docs", "type": "agent", "label": "docs-agent", "category": "documentation", "status": "active"},
    {"id": "agt-zai-multimedia", "type": "agent", "label": "zai-multimedia-agent", "category": "implementation", "status": "active"},
    {"id": "agt-wills-sync", "type": "agent", "label": "wills-sync-agent", "category": "orchestration", "status": "active"},
    {"id": "agt-sales-presenter", "type": "agent", "label": "sales-presenter", "category": "sales", "status": "active"},
    {"id": "agt-web-to-print", "type": "agent", "label": "web-to-print-converter", "category": "implementation", "status": "active"},
    {"id": "agt-responsive-qa", "type": "agent", "label": "responsive-qa-agent", "category": "qa", "status": "deprecated"},
    {"id": "agt-graphify-controller", "type": "agent", "label": "graphify-controller", "category": "infrastructure", "status": "proposed"},

    {"id": "wf-web-dev", "type": "workflow", "label": "web-development-workflow", "owner": "agt-project-manager"},
    {"id": "wf-nexo-lead", "type": "workflow", "label": "nexo-lead-generation-workflow", "owner": "agt-project-manager"},
    {"id": "wf-cart-abandonment", "type": "workflow", "label": "cart-abandonment-workflow", "owner": "agt-photo-commerce"},
    {"id": "wf-gallery-delivery", "type": "workflow", "label": "gallery-delivery-workflow", "owner": "agt-ai-photo-processing"},
    {"id": "wf-gallery-expiration", "type": "workflow", "label": "gallery-expiration-workflow", "owner": "agt-ai-photo-processing"},
    {"id": "wf-inhouse-print", "type": "workflow", "label": "inhouse-print-workflow", "owner": "agt-print-fulfillment"},
    {"id": "wf-ai-photo", "type": "workflow", "label": "ai-photo-processing-workflow", "owner": "agt-ai-photo-processing"},
    {"id": "wf-inpainting-v2", "type": "workflow", "label": "inpainting-v2", "owner": "agt-imagina"},
    {"id": "wf-autonomous-infra", "type": "workflow", "label": "autonomous-infrastructure-agents", "owner": "agt-infra-orchestrator"},
    {"id": "wf-session-continuity", "type": "workflow", "label": "session-continuity", "owner": "agt-session-logger"},
    {"id": "wf-imagina-webhooks", "type": "workflow", "label": "imagina-webhooks", "owner": "agt-imagina"},
    {"id": "wf-agridata-ingestion", "type": "workflow", "label": "agridata-ingestion-workflow", "owner": "agt-knowledge-extractor"},
    {"id": "wf-web-demo-unified", "type": "workflow", "label": "web-demo-unified", "owner": "agt-demo-site-creator"},

    {"id": "per-memory-md", "type": "persistence", "label": "MEMORY.md (L1)", "layer": "L1", "host": "local-claude"},
    {"id": "per-mem0", "type": "persistence", "label": "Mem0+Qdrant (L4)", "layer": "L4", "host": "srv-93"},
    {"id": "per-feedback-md", "type": "persistence", "label": "feedback_*.md (L2)", "layer": "L2", "host": "local-claude"},
    {"id": "per-mempalace", "type": "persistence", "label": "mempalace (L3 — PROPOSED)", "layer": "L3", "host": "srv-140", "status": "proposed"},

    {"id": "prj-nexo", "type": "project", "label": "NEXO Lead Generation", "host": "srv-92", "status": "active"},
    {"id": "prj-imagina", "type": "project", "label": "Imagina AI Generator", "host": "srv-92", "status": "active"},
    {"id": "prj-roughcut-oi", "type": "project", "label": "RoughCut-OI", "host": "srv-m1000e", "status": "active"},
    {"id": "prj-agtools-dc", "type": "project", "label": "AGTools_DC (MongoDB refactor)", "host": "vm-12101", "status": "active"},
    {"id": "prj-quinceexpo", "type": "project", "label": "Quinceañera Expos webapp", "host": "srv-92", "status": "active"},
    {"id": "prj-romvp", "type": "project", "label": "roMVP-Walks", "host": "srv-92", "status": "active"},
    {"id": "prj-cohorte", "type": "project", "label": "Cohorte Dashboard", "host": "srv-92", "status": "active"},

    {"id": "prj-ecc", "type": "project", "label": "everything-claude-code (research)", "status": "ADOPCIÓN-PARCIAL", "rationale": "Ola 1: 4 commands + 5 skills + 1 hook + 1 MCP"},
    {"id": "prj-mempalace", "type": "project", "label": "mempalace (research)", "status": "IMPLEMENTAR-SECUNDARIO", "rationale": "Capa verbatim+KG en .140 con Chroma"},
    {"id": "prj-claude-mem", "type": "project", "label": "claude-mem (research)", "status": "EQUIVALENTE-DESCARTADO", "rationale": "mempalace gana en arquitectura Python+Ollama"},
    {"id": "prj-graphify", "type": "project", "label": "graphify (research, este)", "status": "PARCIAL", "rationale": "Mapa nativo entregado; graphify upstream condicional"}
  ],
  "edges": [
    {"src": "srv-139", "dst": "srv-1", "type": "hosts", "confidence": "EXTRACTED", "note": "VM 10003"},
    {"src": "srv-139", "dst": "srv-93", "type": "hosts", "confidence": "EXTRACTED", "note": "VM 10093"},
    {"src": "srv-139", "dst": "srv-140", "type": "hosts", "confidence": "EXTRACTED", "note": "VM 10140"},
    {"src": "srv-139", "dst": "srv-141", "type": "hosts", "confidence": "EXTRACTED", "note": "VM 10141"},
    {"src": "srv-92", "dst": "svc-apache", "type": "exposes", "confidence": "EXTRACTED"},
    {"src": "srv-92", "dst": "svc-virtualmin", "type": "exposes", "confidence": "EXTRACTED"},
    {"src": "srv-93", "dst": "svc-postgres", "type": "exposes", "confidence": "EXTRACTED"},
    {"src": "srv-93", "dst": "svc-qdrant", "type": "exposes", "confidence": "EXTRACTED"},
    {"src": "srv-93", "dst": "svc-n8n", "type": "exposes", "confidence": "EXTRACTED"},
    {"src": "srv-94", "dst": "svc-gitlab", "type": "exposes", "confidence": "EXTRACTED"},
    {"src": "srv-140", "dst": "svc-ollama", "type": "exposes", "confidence": "EXTRACTED"},
    {"src": "srv-140", "dst": "svc-comfyui", "type": "exposes", "confidence": "EXTRACTED"},
    {"src": "srv-140", "dst": "svc-openwebui", "type": "exposes", "confidence": "EXTRACTED"},
    {"src": "srv-140", "dst": "svc-gpu-control", "type": "exposes", "confidence": "EXTRACTED"},
    {"src": "srv-140", "dst": "gpu-a16-0", "type": "hosts", "confidence": "EXTRACTED"},
    {"src": "srv-140", "dst": "gpu-a16-1", "type": "hosts", "confidence": "EXTRACTED"},
    {"src": "srv-140", "dst": "gpu-a16-2", "type": "hosts", "confidence": "EXTRACTED"},
    {"src": "srv-140", "dst": "gpu-a16-3", "type": "hosts", "confidence": "EXTRACTED"},
    {"src": "srv-140", "dst": "gpu-a16-4", "type": "hosts", "confidence": "EXTRACTED"},
    {"src": "srv-140", "dst": "gpu-a16-5", "type": "hosts", "confidence": "EXTRACTED"},
    {"src": "srv-140", "dst": "gpu-a16-6", "type": "hosts", "confidence": "EXTRACTED"},
    {"src": "srv-140", "dst": "gpu-a16-7", "type": "hosts", "confidence": "EXTRACTED"},
    {"src": "srv-141", "dst": "gpu-a10g", "type": "hosts", "confidence": "EXTRACTED"},
    {"src": "srv-92", "dst": "svc-imagina", "type": "exposes", "confidence": "EXTRACTED"},
    {"src": "srv-92", "dst": "svc-mdbrowser", "type": "exposes", "confidence": "EXTRACTED"},
    {"src": "srv-92", "dst": "svc-cohorte-dashboard", "type": "exposes", "confidence": "EXTRACTED"},
    {"src": "srv-92", "dst": "svc-speedtest", "type": "exposes", "confidence": "EXTRACTED"},
    {"src": "srv-92", "dst": "svc-nexo", "type": "exposes", "confidence": "EXTRACTED"},
    {"src": "svc-imagina", "dst": "svc-comfyui", "type": "depends-on", "confidence": "INFERRED", "note": "Imagina envía jobs a ComfyUI .140"},
    {"src": "svc-openwebui", "dst": "svc-ollama", "type": "depends-on", "confidence": "EXTRACTED"},
    {"src": "dom-ocampo-ai", "dst": "srv-92", "type": "routes-to", "confidence": "EXTRACTED"},
    {"src": "dom-ivaniaphoto", "dst": "srv-92", "type": "routes-to", "confidence": "EXTRACTED"},
    {"src": "dom-smartbin", "dst": "srv-92", "type": "routes-to", "confidence": "EXTRACTED"},
    {"src": "dom-gotofix", "dst": "srv-92", "type": "routes-to", "confidence": "EXTRACTED"},
    {"src": "dom-robertoocampo", "dst": "srv-92", "type": "routes-to", "confidence": "EXTRACTED"},
    {"src": "dom-alturadigital", "dst": "srv-92", "type": "routes-to", "confidence": "EXTRACTED"},
    {"src": "dom-webapp-qe", "dst": "srv-92", "type": "routes-to", "confidence": "EXTRACTED"},
    {"src": "dom-llm", "dst": "srv-92", "type": "routes-to", "confidence": "EXTRACTED", "note": "Reverse proxy → .140:8080"},
    {"src": "dom-speedtest", "dst": "srv-92", "type": "routes-to", "confidence": "EXTRACTED"},
    {"src": "dom-mapa", "dst": "srv-92", "type": "routes-to", "confidence": "MANUAL", "note": "PROPOSED — requires Roberto approval"},
    {"src": "agt-project-manager", "dst": "wf-web-dev", "type": "orchestrates", "confidence": "EXTRACTED"},
    {"src": "agt-project-manager", "dst": "wf-nexo-lead", "type": "orchestrates", "confidence": "INFERRED"},
    {"src": "agt-infra-orchestrator", "dst": "wf-autonomous-infra", "type": "orchestrates", "confidence": "EXTRACTED"},
    {"src": "agt-session-logger", "dst": "wf-session-continuity", "type": "orchestrates", "confidence": "EXTRACTED"},
    {"src": "agt-postgres-unified", "dst": "svc-postgres", "type": "controls", "confidence": "EXTRACTED"},
    {"src": "agt-qdrant-unified", "dst": "svc-qdrant", "type": "controls", "confidence": "EXTRACTED"},
    {"src": "agt-mem0-controller", "dst": "per-mem0", "type": "controls", "confidence": "EXTRACTED"},
    {"src": "agt-mem0-controller", "dst": "svc-qdrant", "type": "depends-on", "confidence": "EXTRACTED"},
    {"src": "agt-mem0-controller", "dst": "svc-ollama", "type": "depends-on", "confidence": "EXTRACTED"},
    {"src": "agt-n8n-controller", "dst": "svc-n8n", "type": "controls", "confidence": "EXTRACTED"},
    {"src": "agt-gitlab-expert", "dst": "svc-gitlab", "type": "controls", "confidence": "EXTRACTED"},
    {"src": "agt-imagina", "dst": "svc-imagina", "type": "controls", "confidence": "EXTRACTED"},
    {"src": "agt-imagina", "dst": "svc-comfyui", "type": "depends-on", "confidence": "EXTRACTED"},
    {"src": "agt-domain-onboarding", "dst": "svc-virtualmin", "type": "depends-on", "confidence": "EXTRACTED"},
    {"src": "agt-virtualmin-user", "dst": "svc-virtualmin", "type": "controls", "confidence": "EXTRACTED"},
    {"src": "agt-virtualmin-file", "dst": "svc-virtualmin", "type": "controls", "confidence": "EXTRACTED"},
    {"src": "agt-proxmox-cluster", "dst": "srv-139", "type": "controls", "confidence": "EXTRACTED"},
    {"src": "agt-proxmox-cluster", "dst": "srv-m1000e", "type": "controls", "confidence": "EXTRACTED"},
    {"src": "agt-hardware-monitor", "dst": "srv-92", "type": "monitors", "confidence": "INFERRED"},
    {"src": "agt-hardware-monitor", "dst": "srv-93", "type": "monitors", "confidence": "INFERRED"},
    {"src": "agt-hardware-monitor", "dst": "srv-94", "type": "monitors", "confidence": "INFERRED"},
    {"src": "agt-hardware-monitor", "dst": "srv-140", "type": "monitors", "confidence": "INFERRED"},
    {"src": "agt-bgmonitor", "dst": "svc-imagina", "type": "monitors", "confidence": "INFERRED"},
    {"src": "agt-bgmonitor", "dst": "svc-ollama", "type": "monitors", "confidence": "INFERRED"},
    {"src": "agt-file-permissions", "dst": "srv-92", "type": "controls", "confidence": "EXTRACTED", "note": "644/755 enforcement"},
    {"src": "agt-romio", "dst": "agt-sms", "type": "depends-on", "confidence": "INFERRED"},
    {"src": "agt-romio", "dst": "agt-email", "type": "depends-on", "confidence": "INFERRED"},
    {"src": "agt-romio", "dst": "agt-evolution-wa", "type": "depends-on", "confidence": "INFERRED"},
    {"src": "agt-knowledge-extractor", "dst": "per-mem0", "type": "generates-data-for", "confidence": "EXTRACTED"},
    {"src": "agt-fabric-rag", "dst": "per-mem0", "type": "generates-data-for", "confidence": "INFERRED"},
    {"src": "agt-markitdown", "dst": "srv-93", "type": "runs-on", "confidence": "EXTRACTED"},
    {"src": "prj-imagina", "dst": "svc-imagina", "type": "implements", "confidence": "EXTRACTED"},
    {"src": "prj-imagina", "dst": "dom-ocampo-ai", "type": "uses", "confidence": "EXTRACTED"},
    {"src": "prj-nexo", "dst": "svc-nexo", "type": "implements", "confidence": "EXTRACTED"},
    {"src": "prj-nexo", "dst": "dom-ocampo-ai", "type": "uses", "confidence": "EXTRACTED"},
    {"src": "prj-cohorte", "dst": "svc-cohorte-dashboard", "type": "implements", "confidence": "EXTRACTED"},
    {"src": "prj-quinceexpo", "dst": "dom-webapp-qe", "type": "uses", "confidence": "EXTRACTED"},
    {"src": "prj-roughcut-oi", "dst": "srv-m1000e", "type": "runs-on", "confidence": "EXTRACTED"},
    {"src": "prj-mempalace", "dst": "srv-140", "type": "planned-host", "confidence": "MANUAL"},
    {"src": "prj-mempalace", "dst": "per-mem0", "type": "planned-improvement-of", "confidence": "MANUAL"},
    {"src": "prj-mempalace", "dst": "per-mempalace", "type": "implements", "confidence": "MANUAL"},
    {"src": "prj-graphify", "dst": "agt-graphify-controller", "type": "implements", "confidence": "MANUAL"},
    {"src": "prj-graphify", "dst": "dom-mapa", "type": "planned-uses", "confidence": "MANUAL"},
    {"src": "prj-ecc", "dst": "agt-software-architect", "type": "planned-improvement-of", "confidence": "INFERRED"},
    {"src": "agt-graphify-controller", "dst": "per-mem0", "type": "depends-on", "confidence": "MANUAL", "note": "Posible Fase 4: extracción semántica"},
    {"src": "agt-graphify-controller", "dst": "svc-ollama", "type": "planned-depends-on", "confidence": "MANUAL", "note": "Fase 4 graphify backend Ollama"}
  ],
  "stats": {
    "node_count": 109,
    "edge_count": 85,
    "node_types": {
      "server": 10,
      "gpu": 9,
      "service": 15,
      "domain": 14,
      "agent": 53,
      "workflow": 13,
      "persistence": 4,
      "project": 11
    },
    "confidence_breakdown": {
      "EXTRACTED": 55,
      "INFERRED": 17,
      "MANUAL": 13
    }
  }
}
