{% extends "base.html" %} {% block title %}Topology β€” Ops Hub{% endblock %} {% block extra_css %} {% endblock %} {% block content %} ← Ops Hub

πŸ•ΈοΈ Topology

Agent Graph Β· SPOF Analysis Β· Dependency Map β€” {{ classification }}

{% set topo = data.topology %} {% set nodes = topo.get('nodes', []) if topo else [] %} {% set edges = topo.get('edges', []) if topo else [] %} {% set spofs = topo.get('spof_nodes', []) if topo else [] %}
{{ nodes|length }}
Nodes
{{ edges|length }}
Edges
{{ spofs|length }}
SPOFs
{{ topo.get('tiers', {})|length if topo else 'β€”' }}
Tiers
{% if spofs %}

⚠️ Single Points of Failure

{% for spof in spofs %}
{{ spof.get('name', spof.get('id', '?')) }} {{ spof.get('type', '') }} {% if spof.get('dependents') %} {{ spof.dependents|length }} dependents {% endif %} {% if spof.get('tier') %}Tier {{ spof.tier }}{% endif %}
{% endfor %}
{% endif %}

Agent Dependency Graph

Core Agent
Domain Agent
Support Agent
SPOF
Unknown

Nodes

{% if nodes %} {% for node in nodes[:20] %} {% set is_spof = node.get('id') in (spofs | map(attribute='id') | list) %}
{{ node.get('name', node.get('id','?')) }} {% if node.get('tier') %}T{{ node.tier }}{% endif %} {% if node.get('type') %}{{ node.type }}{% endif %} {% if is_spof %}SPOF{% endif %}
{% endfor %} {% if nodes|length > 20 %}

+ {{ nodes|length - 20 }} more nodes

{% endif %} {% else %}

No topology data available.

{% endif %} View full JSON β†’
{% include "includes/iqe_query_widget.html" %} {% endblock %} {% block extra_js %} {% endblock %}