# Föderation

Föderation lässt einen Hub (den **Primary**) Capabilities auf einem
anderen Hub (einem **Satelliten**) ausführen — etwa um eine GPU-Maschine
zu erreichen oder Daten an einem bestimmten Ort zu halten. Ein
Flow-Schritt entscheidet sich per `on:`-Selektor dafür; alles andere
bleibt wie bei einem lokalen Schritt.

Dieses Panel ist die **Primary**-Seite: Es zeigt die aktuell
verbundenen Satelliten und richtet neue ein.

## Satellit hinzufügen

1. **Satellit hinzufügen** drücken und einen Namen vergeben
   (z.B. `satellite-a`).
2. Der Hub stellt ein einmaliges **Bootstrap-Token** aus und legt sein
   **CA-Zertifikat** bei. Kopiere die gezeigte Konfiguration in die
   `config.yaml` des Satelliten (ein Einfügen) und exportiere das
   Token als `CHAIN_BOOTSTRAP_TOKEN`.
3. Starte den Satelliten. Er wählt sich beim Primary ein, der CA-Pin
   macht den ersten Connect manipulationssicher, und der Primary
   signiert ihm ein kurzlebiges Zertifikat. Danach erscheint er in
   dieser Liste.

## Warum es sicher bleibt

- Der Satellit **wählt sich nach außen ein** — keine eingehende
  Firewall-Änderung nötig.
- Jede Verbindung ist **mTLS**. Der erste Connect wird gegen die
  beigelegte CA verifiziert; spätere Connects authentifizieren sich
  mit dem eigenen Zertifikat des Satelliten (kein Token nötig).
- Der Satellit löst auf und führt die Capability in **seiner eigenen
  Sandbox** aus — nur Eingaben gehen über die Leitung, niemals Code.
- Jeder hub-übergreifende Aufruf wird auf beiden Seiten protokolliert
  (`dispatched_to`), sodass Audit-Trail und Replay-Determinismus die
  Föderation überstehen.

## Satellit in einem Flow nutzen

Ergänze einen `on:`-Selektor an einem Schritt:

```yaml
- id: extract
  use: text.extract@^1
  on: region=berlin        # oder pin=satellite-a, auto:healthiest, auto:lowest_rtt
  with:
    input: $inputs.doc
```
