{% extends "base.html" %} {% block title %}Dashboard — LynxManager{% endblock %} {% block content %}

Dashboard

{{ total_sources }} source{{ '' if total_sources == 1 else 's' }}, {{ total_chunks }} chunks indexed
Health check
View full report →
{{ doctor_counts.ok }} ok
{% if doctor_counts.warn %}
{{ doctor_counts.warn }} warning{{ '' if doctor_counts.warn == 1 else 's' }}
{% endif %} {% if doctor_counts.error %}
{{ doctor_counts.error }} error{{ '' if doctor_counts.error == 1 else 's' }}
{% endif %}
{% if doctor_worst == "ok" %} All checks passing — Lynx is healthy. {% elif doctor_worst == "warn" %} Some warnings — review the Doctor page. {% else %} Errors detected — fix them via the Doctor page. {% endif %}

Sources

{% if sources %} + Add source {% endif %}
{% if not sources %}
📚
No sources configured yet
{% if not manager_error %}
Lynx needs at least one source — your code, a docs site, or a folder of PDFs — to be useful. The guided form explains each option.
+ Add your first source {% endif %}
{% else %}
{% for s in sources %}
{{ s.name }}
type: {{ s.type }}
{% if s.locked %} 🔒 locked {% endif %} {% if s.drift_severity == "critical" %} drift: critical {% elif s.drift_severity == "warning" %} drift: warning {% endif %}
{% if s.path %}
Path
{{ s.path }}
{% endif %} {% if s.chunk_count is not none %}
Chunks
{{ s.chunk_count }}
{% endif %} {% if s.last_update %}
Last update
{{ s.last_update.split('T')[0] }}
{% endif %} {% if s.graph %}
Graph
{{ s.graph.nodes }} nodes, {{ s.graph.edges }} edges
{% endif %}
{% endfor %}
{% endif %} {% endblock %}