{% extends "base.html" %} {% block title %}Federation — psyc admin{% endblock %} {% block content %}

Federation Identity

{{ peers|length }} peer{{ '' if peers|length == 1 else 's' }}

This node's Ed25519 identity. The fingerprint goes into a DNS TXT record so other psyc nodes can discover this one. The public key lets them verify any feed we publish — the private key never leaves this box.

← back to admin  ·  vouches  ·  quorum config  ·  transparency log

node fingerprint
{{ fingerprint }}
public key (PEM)
{{ pubkey_pem }}

Publish via DNS

SRV + TXT records

Paste these into your zone file. Once they're live, any peer that knows your domain can discover the node and pin the right key without out-of-band coordination.

{{ dns.human_instructions }}

Known Peers

{{ peers|length }} registered

Trusted peers' feeds are signature-verified on every poll. Blocked peers are recorded but ignored. Unknown peers are kept for review — nothing flows from them until you set them trusted.

{% if peers %} {% for p in peers %} {% endfor %}
DomainFingerprintStatusDiscoveredLast seen
{{ p.domain }} {{ p.fingerprint[:8] }}…{{ p.fingerprint[-8:] }} {% if p.status == 'trusted' %} trusted {% elif p.status == 'blocked' %} blocked {% else %} unknown {% endif %} {{ (p.discovered_at or '')[:16] | replace('T', ' ') }} {{ ((p.last_seen or '')[:16] | replace('T', ' ')) or '—' }}
{% else %}

(no peers yet — add one below)

{% endif %}

Add Peer

Pin a peer's identity manually: their domain, their fingerprint (from their DNS TXT record), and the public key they publish at /federation/key.

Recent Signals

last {{ signals|length }} of buffer

Verified federation signals from peers — case + IOC reports awaiting quorum. The signal buffer is what later quorum logic will count over.

{% if signals %} {% for s in signals %} {% endfor %}
ReceivedPeerTypeIdHash
{{ (s.received_at or '')[:19] | replace('T', ' ') }} {{ s.peer_fingerprint[:8] }}… {{ s.signal_type }} {{ s.signal_id[:48] }} {{ s.signal_hash[:16] }}…
{% else %}

(no signals received yet — quorum stage will populate this)

{% endif %}
{% endblock %}