{% extends "base.html" %} {% block title %}Settings - Supavision{% endblock %} {% block content %} {# ── Claude CLI Status (outside card — top-level alert) ── #} {% if system_info.claude_version %}
✓ Claude CLI installed — {{ system_info.claude_version }} Infrastructure monitoring is fully operational.
{% else %}
⚠ Claude CLI not installed — Infrastructure monitoring unavailable.

Install Claude Code

Required for infrastructure discovery and health checks.

1. Install

npm install -g @anthropic-ai/claude-code

2. Authenticate

claude auth login
{% endif %} {# ── System Info ── #}

System Info

Database {{ system_info.db_size }}
Resources {{ system_info.resource_count }}
{# ── API Keys ── #}

API Keys

Authenticate requests to /api/v1/* via the x-api-key header.

{# ── New key creation panel (hidden until button clicked) ── #}
{% if new_key %}

API Key Created

Copy this key now. It will not be shown again.
{{ new_key }}

Example: curl -H "x-api-key: {{ new_key[:12] }}..." {{ request.url.scheme }}://{{ request.url.hostname }}/api/v1/health

{% else %}

Generate New API Key

Give your key a descriptive label so you can identify it later.

A short description to help you identify this key later.
{% endif %}
{# ── Existing keys table ── #} {% if api_keys %} {% for k in api_keys %} {% endfor %}
LabelCreatedLast usedStatus
{{ k.label or '(no label)' }} {{ k.created_at }} {% if k.last_used_at %}{{ k.last_used_at }}{% else %}Never{% endif %} {% if k.revoked %} Revoked {% else %} Active {% endif %} {% if not k.revoked %} {% endif %}
{% else %}

No API keys yet. Generate one to access the REST API.

{% endif %}
{# ── Notification History ── #}

Notification History

{% if notifications %} {% for n in notifications %} {% endfor %}
TimeChannelResourceSeverityStatus
{{ n.created_at }} {{ n.channel }} {{ n.resource_name or n.resource_id[:8] }} {{ n.severity }} {% if n.status == 'sent' %} sent {% else %} failed {% endif %}
{% else %}

No notifications sent yet. Configure a Slack webhook on a resource to receive alerts.

{% endif %}
{% endblock %}