{
  "generatedAt": "2026-08-08T21:29:41.639Z",
  "summary": {
    "total": 47,
    "stay": 21,
    "already_remote": 16,
    "migrate_candidate": 1,
    "hybrid": 8,
    "unknown": 1
  },
  "apps": [
    {
      "id": "bridge-hub",
      "name": "Bridge Hub",
      "category": "Dev",
      "host": "127.0.0.1",
      "port": 8095,
      "path": "/hub",
      "target": "local",
      "parentAppId": null,
      "tray": null,
      "decision": "stay",
      "effort": "none",
      "reasons": [
        "Superficie del bridge o control plane que lee disco/IDE local"
      ]
    },
    {
      "id": "chat-mirror",
      "name": "Chat Mirror",
      "category": "Dev",
      "host": "127.0.0.1",
      "port": 8095,
      "path": "/mirror",
      "target": "local",
      "parentAppId": null,
      "tray": null,
      "decision": "stay",
      "effort": "none",
      "reasons": [
        "Superficie del bridge o control plane que lee disco/IDE local"
      ]
    },
    {
      "id": "codex-suite",
      "name": "Codex Suite",
      "category": "Dev",
      "host": "127.0.0.1",
      "port": 8095,
      "path": "/codex-suite",
      "target": "local",
      "parentAppId": "cursor-bridge",
      "tray": "CursorBridgeTray",
      "decision": "stay",
      "effort": "none",
      "reasons": [
        "Superficie del bridge o control plane que lee disco/IDE local"
      ]
    },
    {
      "id": "alimpiezas",
      "name": "ALimpiezas",
      "category": "Negocio",
      "host": "127.0.0.1",
      "port": 80,
      "path": "/ALimpiezas",
      "target": "local",
      "parentAppId": null,
      "tray": "ALimpiezasTray",
      "decision": "stay",
      "effort": "none",
      "reasons": [
        "App servida por XAMPP/Apache local (PHP/BD lab)"
      ]
    },
    {
      "id": "alimpiezas-ai",
      "name": "ALimpiezas IA",
      "category": "Negocio",
      "host": "127.0.0.1",
      "port": 8090,
      "path": "/docs",
      "target": "local",
      "parentAppId": "alimpiezas",
      "tray": "ALimpiezasTray",
      "decision": "migrate_candidate",
      "effort": "high",
      "reasons": [
        "Servicio IA/OCR: candidato a Docker en .16 si no depende de FS local XAMPP"
      ]
    },
    {
      "id": "royalbroker",
      "name": "Royal Broker",
      "category": "Trading",
      "host": "127.0.0.1",
      "port": 8086,
      "path": "/",
      "target": "local",
      "parentAppId": null,
      "tray": "RoyalBrokerTray",
      "decision": "stay",
      "effort": "none",
      "reasons": [
        "Stack trading/broker local; no es carga del lab IA"
      ]
    },
    {
      "id": "captajaus",
      "name": "CaptaJaus",
      "category": "Negocio",
      "host": "127.0.0.1",
      "port": 3000,
      "path": "/dashboard",
      "target": "local",
      "parentAppId": null,
      "tray": "CaptaJausTray",
      "decision": "hybrid",
      "effort": "high",
      "reasons": [
        "App Node de negocio (CaptaJaus) con BD/sesión local; workers IA ya pueden apuntar a supervisor .16"
      ]
    },
    {
      "id": "captajaus-ai",
      "name": "CaptaJaus IA",
      "category": "Negocio",
      "host": "127.0.0.1",
      "port": 3000,
      "path": "/dashboard/ai",
      "target": "local",
      "parentAppId": "captajaus",
      "tray": "CaptaJausTray",
      "decision": "hybrid",
      "effort": "high",
      "reasons": [
        "App Node de negocio (CaptaJaus) con BD/sesión local; workers IA ya pueden apuntar a supervisor .16"
      ]
    },
    {
      "id": "captajaus-ai-admin",
      "name": "CaptaJaus IA",
      "category": "Negocio",
      "host": "127.0.0.1",
      "port": 3000,
      "path": "/dashboard/ai-admin",
      "target": "local",
      "parentAppId": "captajaus",
      "tray": "CaptaJausTray",
      "decision": "hybrid",
      "effort": "high",
      "reasons": [
        "App Node de negocio (CaptaJaus) con BD/sesión local; workers IA ya pueden apuntar a supervisor .16"
      ]
    },
    {
      "id": "chatbot-ia",
      "name": "Chatbot IA",
      "category": "Negocio",
      "host": "127.0.0.1",
      "port": 80,
      "path": "/chatbot/chatbot-unified/panel/ai_assistant.php",
      "target": "local",
      "parentAppId": null,
      "tray": null,
      "decision": "hybrid",
      "effort": "medium",
      "reasons": [
        "App servida por XAMPP/Apache local (PHP/BD lab)",
        "Componente IA podría usar .16 como backend sin mover el front PHP"
      ]
    },
    {
      "id": "chatbot-panel",
      "name": "Chatbot Panel",
      "category": "Negocio",
      "host": "127.0.0.1",
      "port": 80,
      "path": "/chatbot/chatbot-unified/panel/dashboard.php",
      "target": "local",
      "parentAppId": "chatbot-ia",
      "tray": null,
      "decision": "stay",
      "effort": "none",
      "reasons": [
        "App servida por XAMPP/Apache local (PHP/BD lab)"
      ]
    },
    {
      "id": "panel-bots-royalbroker",
      "name": "Panel Bots RB",
      "category": "Trading",
      "host": "panel-bots.royalbroker.es",
      "port": 443,
      "path": "/",
      "target": "local",
      "parentAppId": null,
      "tray": null,
      "decision": "stay",
      "effort": "low",
      "reasons": [
        "Puerto web local típico XAMPP"
      ]
    },
    {
      "id": "crm-royalbroker",
      "name": "CRM Royal Broker",
      "category": "Negocio",
      "host": "crm.royalbroker.es",
      "port": 443,
      "path": "/",
      "target": "local",
      "parentAppId": null,
      "tray": null,
      "decision": "stay",
      "effort": "low",
      "reasons": [
        "Puerto web local típico XAMPP"
      ]
    },
    {
      "id": "alimpiezas-agent",
      "name": "ALimpiezas Agente",
      "category": "Negocio",
      "host": "127.0.0.1",
      "port": 80,
      "path": "/ALimpiezas/MobileAiAgent",
      "target": "local",
      "parentAppId": "alimpiezas",
      "tray": "ALimpiezasTray",
      "decision": "hybrid",
      "effort": "medium",
      "reasons": [
        "App servida por XAMPP/Apache local (PHP/BD lab)",
        "Componente IA podría usar .16 como backend sin mover el front PHP"
      ]
    },
    {
      "id": "xzonas",
      "name": "xzonasvalencia (lab)",
      "category": "Web",
      "host": "127.0.0.1",
      "port": 9080,
      "path": "/",
      "target": "local",
      "parentAppId": null,
      "tray": null,
      "decision": "hybrid",
      "effort": "medium",
      "reasons": [
        "App servida por XAMPP/Apache local (PHP/BD lab)",
        "Componente IA podría usar .16 como backend sin mover el front PHP"
      ]
    },
    {
      "id": "xzonas-lab-hacs",
      "name": "HACS Console",
      "category": "Web",
      "host": "127.0.0.1",
      "port": 9080,
      "path": "/ops/lab-ia-portal/xz-lab-console-9k2m/",
      "target": "local",
      "parentAppId": "xzonas",
      "tray": null,
      "decision": "hybrid",
      "effort": "medium",
      "reasons": [
        "App servida por XAMPP/Apache local (PHP/BD lab)",
        "Componente IA podría usar .16 como backend sin mover el front PHP"
      ]
    },
    {
      "id": "xzonas-lab-portal",
      "name": "xzonas Lab IA",
      "category": "Web",
      "host": "127.0.0.1",
      "port": 9080,
      "path": "/ops/lab-ia-portal/xz-lab-console-9k2m/login.php",
      "target": "local",
      "parentAppId": "xzonas",
      "tray": null,
      "decision": "hybrid",
      "effort": "medium",
      "reasons": [
        "App servida por XAMPP/Apache local (PHP/BD lab)",
        "Componente IA podría usar .16 como backend sin mover el front PHP"
      ]
    },
    {
      "id": "bridge-xzonassite",
      "name": "Bridge xzonas",
      "category": "Dev",
      "host": "127.0.0.1",
      "port": 8095,
      "path": "/?project=xzonassite&propose=1&continue=1",
      "target": "local",
      "parentAppId": "cursor-bridge",
      "tray": null,
      "decision": "stay",
      "effort": "none",
      "reasons": [
        "Superficie del bridge o control plane que lee disco/IDE local"
      ]
    },
    {
      "id": "bridge-captajaus",
      "name": "Bridge CaptaJaus",
      "category": "Dev",
      "host": "127.0.0.1",
      "port": 8095,
      "path": "/?project=captajaus&propose=1&continue=1&autosend=1",
      "target": "local",
      "parentAppId": "cursor-bridge",
      "tray": null,
      "decision": "stay",
      "effort": "none",
      "reasons": [
        "Superficie del bridge o control plane que lee disco/IDE local"
      ]
    },
    {
      "id": "bridge-alimpiezas",
      "name": "Bridge ALimpiezas",
      "category": "Dev",
      "host": "127.0.0.1",
      "port": 8095,
      "path": "/?project=alimpiezas&propose=1&continue=1",
      "target": "local",
      "parentAppId": "cursor-bridge",
      "tray": null,
      "decision": "stay",
      "effort": "none",
      "reasons": [
        "Superficie del bridge o control plane que lee disco/IDE local"
      ]
    },
    {
      "id": "bridge-chatbot",
      "name": "Bridge Chatbot",
      "category": "Dev",
      "host": "127.0.0.1",
      "port": 8095,
      "path": "/?project=chatbot&propose=1&continue=1",
      "target": "local",
      "parentAppId": "cursor-bridge",
      "tray": null,
      "decision": "stay",
      "effort": "none",
      "reasons": [
        "Superficie del bridge o control plane que lee disco/IDE local"
      ]
    },
    {
      "id": "bridge-panel-bots",
      "name": "Bridge Panel Bots",
      "category": "Dev",
      "host": "127.0.0.1",
      "port": 8095,
      "path": "/?project=panel-bots-royalbroker&propose=1&continue=1",
      "target": "local",
      "parentAppId": "cursor-bridge",
      "tray": null,
      "decision": "stay",
      "effort": "none",
      "reasons": [
        "Superficie del bridge o control plane que lee disco/IDE local"
      ]
    },
    {
      "id": "bridge-crm",
      "name": "Bridge CRM",
      "category": "Dev",
      "host": "127.0.0.1",
      "port": 8095,
      "path": "/?project=crm-royalbroker&propose=1&continue=1",
      "target": "local",
      "parentAppId": "cursor-bridge",
      "tray": null,
      "decision": "stay",
      "effort": "none",
      "reasons": [
        "Superficie del bridge o control plane que lee disco/IDE local"
      ]
    },
    {
      "id": "cursor-bridge",
      "name": "Cursor Bridge",
      "category": "Dev",
      "host": "127.0.0.1",
      "port": 8095,
      "path": "/",
      "target": "local",
      "parentAppId": null,
      "tray": "CursorBridgeTray",
      "decision": "stay",
      "effort": "none",
      "reasons": [
        "Superficie del bridge o control plane que lee disco/IDE local"
      ]
    },
    {
      "id": "mock-mission-control",
      "name": "Mission Control",
      "category": "IA Servidor",
      "host": "127.0.0.1",
      "port": 8095,
      "path": "/mock/",
      "target": "local",
      "parentAppId": "cursor-bridge",
      "tray": null,
      "decision": "stay",
      "effort": "none",
      "reasons": [
        "Superficie del bridge o control plane que lee disco/IDE local"
      ]
    },
    {
      "id": "equipitello-ide-local",
      "name": "Equipitello IDE",
      "category": "Dev",
      "host": "127.0.0.1",
      "port": 4180,
      "path": "/",
      "target": "local",
      "parentAppId": "cursor-bridge",
      "tray": null,
      "decision": "unknown",
      "effort": "needs_review",
      "reasons": [
        "Host local sin señal clara de runtime migrable"
      ]
    },
    {
      "id": "supervisor-mc-premium",
      "name": "MC Premium",
      "category": "IA Servidor",
      "host": "127.0.0.1",
      "port": 8787,
      "path": "/mc",
      "target": "remote-ai",
      "parentAppId": "ia-multiagent",
      "tray": null,
      "decision": "already_remote",
      "effort": "none",
      "reasons": [
        "Marcada target=remote-ai (destino servidor IA)"
      ]
    },
    {
      "id": "equipitello-ide-server",
      "name": "Equipitello IDE (.16)",
      "category": "IA Servidor",
      "host": "127.0.0.1",
      "port": 4180,
      "path": "/",
      "target": "remote-ai",
      "parentAppId": "ia-multiagent",
      "tray": null,
      "decision": "already_remote",
      "effort": "none",
      "reasons": [
        "Marcada target=remote-ai (destino servidor IA)"
      ]
    },
    {
      "id": "equipitello-tools",
      "name": "EQUIPITELLO Tools",
      "category": "Sistema",
      "host": "127.0.0.1",
      "port": 8095,
      "path": "/equipitello-tools",
      "target": "local",
      "parentAppId": "cursor-bridge",
      "tray": "CursorBridgeTray",
      "decision": "stay",
      "effort": "none",
      "reasons": [
        "Superficie del bridge o control plane que lee disco/IDE local"
      ]
    },
    {
      "id": "mcp-lab",
      "name": "MCP Lab",
      "category": "Sistema",
      "host": "127.0.0.1",
      "port": 8095,
      "path": "/mcp-lab",
      "target": "local",
      "parentAppId": "cursor-bridge",
      "tray": "CursorBridgeTray",
      "decision": "stay",
      "effort": "none",
      "reasons": [
        "Superficie del bridge o control plane que lee disco/IDE local"
      ]
    },
    {
      "id": "ia-ops-center",
      "name": "IA Ops Center",
      "category": "IA Servidor",
      "host": "127.0.0.1",
      "port": 8095,
      "path": "/ops",
      "target": "local",
      "parentAppId": null,
      "tray": "CursorBridgeTray",
      "decision": "stay",
      "effort": "none",
      "reasons": [
        "Superficie del bridge o control plane que lee disco/IDE local"
      ]
    },
    {
      "id": "docker-equipitello",
      "name": "Docker (inventario)",
      "category": "Sistema",
      "host": "127.0.0.1",
      "port": 8095,
      "path": "/apps/docs?app=docker-equipitello",
      "target": "local",
      "parentAppId": null,
      "tray": "CursorBridgeTray",
      "decision": "stay",
      "effort": "none",
      "reasons": [
        "Superficie del bridge o control plane que lee disco/IDE local"
      ]
    },
    {
      "id": "system-manager",
      "name": "System Manager",
      "category": "Sistema",
      "host": "127.0.0.1",
      "port": 8095,
      "path": "/manager",
      "target": "local",
      "parentAppId": null,
      "tray": "CursorBridgeTray",
      "decision": "stay",
      "effort": "none",
      "reasons": [
        "Superficie del bridge o control plane que lee disco/IDE local"
      ]
    },
    {
      "id": "ia-mission-control",
      "name": "Mission Control",
      "category": "IA Servidor",
      "host": "127.0.0.1",
      "port": 8090,
      "path": "/",
      "target": "remote-ai",
      "parentAppId": null,
      "tray": null,
      "decision": "already_remote",
      "effort": "none",
      "reasons": [
        "Marcada target=remote-ai (destino servidor IA)"
      ]
    },
    {
      "id": "ia-lab-portal",
      "name": "IA Lab Portal",
      "category": "IA Servidor",
      "host": "127.0.0.1",
      "port": 8088,
      "path": "/",
      "target": "remote-ai",
      "parentAppId": null,
      "tray": null,
      "decision": "already_remote",
      "effort": "none",
      "reasons": [
        "Marcada target=remote-ai (destino servidor IA)"
      ]
    },
    {
      "id": "supervisor-dashboard",
      "name": "Supervisor UI",
      "category": "IA Servidor",
      "host": "127.0.0.1",
      "port": 8787,
      "path": "/",
      "target": "remote-ai",
      "parentAppId": "ia-multiagent",
      "tray": null,
      "decision": "already_remote",
      "effort": "none",
      "reasons": [
        "Marcada target=remote-ai (destino servidor IA)"
      ]
    },
    {
      "id": "ia-multiagent",
      "name": "Multiagent API",
      "category": "IA Servidor",
      "host": "127.0.0.1",
      "port": 8787,
      "path": "/health",
      "target": "remote-ai",
      "parentAppId": null,
      "tray": null,
      "decision": "already_remote",
      "effort": "none",
      "reasons": [
        "Marcada target=remote-ai (destino servidor IA)"
      ]
    },
    {
      "id": "ia-open-webui",
      "name": "Open WebUI",
      "category": "IA Servidor",
      "host": "127.0.0.1",
      "port": 3002,
      "path": "/",
      "target": "remote-ai",
      "parentAppId": null,
      "tray": null,
      "decision": "already_remote",
      "effort": "none",
      "reasons": [
        "Marcada target=remote-ai (destino servidor IA)"
      ]
    },
    {
      "id": "ia-portainer",
      "name": "Portainer IA",
      "category": "IA Servidor",
      "host": "127.0.0.1",
      "port": 9002,
      "path": "/",
      "target": "remote-ai",
      "parentAppId": null,
      "tray": null,
      "decision": "already_remote",
      "effort": "none",
      "reasons": [
        "Marcada target=remote-ai (destino servidor IA)"
      ]
    },
    {
      "id": "ia-dozzle",
      "name": "Dozzle",
      "category": "IA Servidor",
      "host": "127.0.0.1",
      "port": 9999,
      "path": "/",
      "target": "remote-ai",
      "parentAppId": null,
      "tray": null,
      "decision": "already_remote",
      "effort": "none",
      "reasons": [
        "Marcada target=remote-ai (destino servidor IA)"
      ]
    },
    {
      "id": "ia-n8n",
      "name": "n8n",
      "category": "IA Servidor",
      "host": "127.0.0.1",
      "port": 5678,
      "path": "/",
      "target": "remote-ai",
      "parentAppId": null,
      "tray": null,
      "decision": "already_remote",
      "effort": "none",
      "reasons": [
        "Marcada target=remote-ai (destino servidor IA)"
      ]
    },
    {
      "id": "ia-qdrant-mobile",
      "name": "Qdrant móvil",
      "category": "IA Servidor",
      "host": "127.0.0.1",
      "port": 8088,
      "path": "/",
      "target": "remote-ai",
      "parentAppId": null,
      "tray": null,
      "decision": "already_remote",
      "effort": "none",
      "reasons": [
        "Marcada target=remote-ai (destino servidor IA)"
      ]
    },
    {
      "id": "ia-qdrant",
      "name": "Qdrant",
      "category": "IA Servidor",
      "host": "127.0.0.1",
      "port": 6333,
      "path": "/dashboard",
      "target": "remote-ai",
      "parentAppId": null,
      "tray": null,
      "decision": "already_remote",
      "effort": "none",
      "reasons": [
        "Marcada target=remote-ai (destino servidor IA)"
      ]
    },
    {
      "id": "ia-grafana",
      "name": "Grafana",
      "category": "IA Servidor",
      "host": "127.0.0.1",
      "port": 3001,
      "path": "/",
      "target": "remote-ai",
      "parentAppId": null,
      "tray": null,
      "decision": "already_remote",
      "effort": "none",
      "reasons": [
        "Marcada target=remote-ai (destino servidor IA)"
      ]
    },
    {
      "id": "ia-meilisearch",
      "name": "Meilisearch",
      "category": "IA Servidor",
      "host": "127.0.0.1",
      "port": 7700,
      "path": "/",
      "target": "remote-ai",
      "parentAppId": null,
      "tray": null,
      "decision": "already_remote",
      "effort": "none",
      "reasons": [
        "Marcada target=remote-ai (destino servidor IA)"
      ]
    },
    {
      "id": "ia-baileys",
      "name": "WhatsApp Baileys",
      "category": "IA Servidor",
      "host": "127.0.0.1",
      "port": 3030,
      "path": "/",
      "target": "remote-ai",
      "parentAppId": null,
      "tray": null,
      "decision": "already_remote",
      "effort": "none",
      "reasons": [
        "Marcada target=remote-ai (destino servidor IA)"
      ]
    },
    {
      "id": "ia-ollama",
      "name": "Ollama API",
      "category": "IA Servidor",
      "host": "127.0.0.1",
      "port": 11434,
      "path": "/",
      "target": "remote-ai",
      "parentAppId": null,
      "tray": null,
      "decision": "already_remote",
      "effort": "none",
      "reasons": [
        "Marcada target=remote-ai (destino servidor IA)"
      ]
    }
  ]
}
