# Maestro Hosting — Decision Memo

Author: Backyard (Infrastruktur)  ·  Stand: 2026-05-07  ·  Status: Recon-Empfehlung, READ-ONLY

User-Frage (2026-05-08): „lohnt sich maestro für uns oder reicht self hosted auf hetzner neue server mit backyard checken"

Dieses Doc ist die Antwort. Kurzfassung in einem Satz:
**Maestro Cloud (Starter ~10 EUR/Monat oder Free-Tier zuerst) nehmen — Self-Host
auf Hetzner lohnt sich für unsere Team-Größe + Stack nicht, vor allem weil iOS
auf Linux prinzipiell nicht testbar ist und unser CX23-Server bereits ausgelastet
ist.**

---

## 1. Hard-Constraint: iOS lässt sich auf Linux nicht testen

Apple-Lizenz-Restriction: **iOS-Simulator läuft ausschließlich auf macOS.** Hetzner
liefert (im EU-Standard-Tier) keine Mac-Hardware. Linux-VMs auf Hetzner können
nur Android-Emulators hosten. Das heißt:

- **Self-Host auf einem Hetzner-Linux-Server kann maximal die Android-Hälfte
  unserer E2E-Suite abdecken.**
- iOS-Tests müssten parallel auf einem anderen Pfad laufen:
  - (a) lokaler Mac-Build (User-Hardware) — nicht CI-fähig
  - (b) Mac-mini bei MacStadium o.ä. — ~60-120 EUR/Monat
  - (c) GitHub-Actions macOS-Runner — ~0.08 USD/Min, pay-per-use
  - (d) Maestro-Cloud nur für iOS, self-host für Android — Hybrid

Jede dieser Optionen treibt entweder Kosten oder Wartungs-Komplexität.

**Konsequenz:** „Self-Hosted-Maestro auf Hetzner" ist immer ein Hybrid-Setup,
nie eine vollständige Lösung. Wer „self-hosted" sagt, meint praktisch entweder
*nur Android* oder *Hybrid mit zweitem Pfad für iOS*.

---

## 2. Performance-Risk auf existierendem CX23

Der dedicated rebreak-server ist eine **CX23: 2 vCPU x86, 4 GB RAM, 40 GB SSD,
2 GB swap** (siehe `reference_rebreak_server.md`). Aktuelle Last:

- `rebreak-staging` (Nuxt-Server, Nitro)
- `rebreak-imap-staging`, `rebreak-idle-staging` (Mo's IMAP-Stack)
- `rebreak-webhook` (Auto-Deploy-Listener)
- `pnpm build` während Deploy (peakt RAM)

Ein Android-Emulator braucht **2-4 GB RAM** + 1-2 vCPU für akzeptable Boot-Zeit
und stabile Test-Runs (bei `-no-window -no-audio -gpu swiftshader_indirect` am
unteren Ende). Das **kollidiert direkt** mit dem Build-Peak. OOM-Risk auf 4 GB
RAM ist real und wird in `feedback_deploy_workflow.md` schon ohne Maestro
notiert.

**Heißt:** wir KÖNNEN den CX23 nicht zusätzlich mit Android-Emulator beladen,
ohne Production-Risiko. Wir bräuchten zwingend einen **zweiten dedicated
CI-Server** (mindestens CX22 ~5 EUR/Monat netto, eher CX32 mit 8 GB RAM
~9-11 EUR/Monat um Reserve zu haben, weil Emulator + Maestro-CLI + Test-Runner
+ ggf. paralleles Android-Build sich gerne überlappen).

Damit ist der „self-hosted ist gratis"-Mythos schon entzaubert: wir reden
realistisch über **zusätzlich ~10 EUR/Monat Hetzner-Server** plus mehrere
Stunden Setup plus laufende Wartung.

---

## 3. Cost-Comparison

Annahmen: ~10 Test-Runs/Monat (TestFlight-Sprint-Phase, später ggf. mehr), je
Run ~5 Minuten Maestro-Time pro Plattform, iOS+Android parallel.

| Variante | Direkte Kosten/Monat | Direkte Kosten/Jahr | Setup-Aufwand | Laufende Wartung |
|----------|----------------------|---------------------|---------------|------------------|
| **(A) Maestro Cloud Starter** | ~10 EUR (laut Ahmed-Quote, plus Free-Tier-Monatsminuten) | ~120 EUR | 30-60 min (CLI install + cloud-token) | quasi 0 — Maestro betreibt Devices |
| **(B) Self-Host Android-only auf Hetzner (neuer CX22/32)** | 5-11 EUR (+ Strom-Pool inklusive) | 60-130 EUR | 4-8 h (Server provision + Android-SDK + Emulator-image + KVM-acceleration check + Maestro-CLI + Webhook/Trigger) | ~30 min/Monat (image-updates, Emulator-state-Drift) |
| **(B+) Self-Host Android + GitHub-Actions-iOS** | 5-11 EUR Hetzner + ~4 EUR GitHub macOS-Minutes (10×5 min) | 110-180 EUR | 6-10 h (zwei Pfade synchron halten) | ~1 h/Monat (zwei Pipelines pflegen) |
| **(C) Pure self-host iOS + Android (eigener Mac-mini bei MacStadium)** | 60-120 EUR Mac + 5-11 EUR Hetzner | 780-1570 EUR | 8-16 h | ~2 h/Monat (zwei Hosts) |
| **(D) GitHub Actions Matrix-Build (macOS-runner für beide)** | ~8 EUR (10×5 min iOS + Android Linux gratis) | ~100 EUR | 2-3 h Workflow-yml | ~30 min/Monat |

**Beobachtung:** Die nominellen Kosten von (A), (B), (B+) und (D) liegen alle
im Bereich 60-180 EUR/Jahr. Der echte Tradeoff sind **Setup-Aufwand und
Wartungs-Komplexität**, nicht Cash.

---

## 4. Aufwand-Schätzung pro Variante

### (A) Maestro Cloud
- **Setup:** Account anlegen, `MAESTRO_CLOUD_API_KEY` als GitHub-Secret, ein
  einziger CLI-Aufruf in der Action. **30-60 Min.**
- **Wartung:** Maestro pflegt Device-Pool, Updates, OS-Versionen. **Nahe 0.**
- **Risk:** External Vendor — wenn Maestro down, blockiert PR-Test. Akzeptabel
  weil Tests nicht Production-blocking sind, nur PR-Gate.

### (B) Self-Host Android-only
- **Setup:** Hetzner-Server provisionieren (CX22/32), Ubuntu, Android-SDK +
  cmdline-tools + emulator-image installieren, KVM/HAXM-Acceleration testen
  (auf Hetzner-Cloud bedingt verfügbar — `/dev/kvm` muss exposed sein, je
  nach Hetzner-Tier OK), Maestro-CLI installieren, Webhook-Endpoint bauen
  oder GitHub-Actions self-hosted-runner registrieren. **4-8 h.**
- **Wartung:** Android-System-Image-Updates (alle 2-3 Monate), Emulator-state
  kann korrupt werden, Maestro-CLI-Updates, Disk-cleanup für AVD-snapshots.
  **~30 Min/Monat im stabilen Zustand, gelegentlich mehrere Stunden bei Bruch.**
- **Risk:** Wenn Server down, Test-Pipeline down. Plus: ein zweiter Server
  vergrößert die Hetzner-Sprawl, gegen die wir gerade in
  `project_rebreak_dedicated_hetzner.md` fokussiert haben.

### (B+) Hybrid Self-Host Android + Cloud-iOS oder GH-Actions-iOS
- **Setup:** wie (B) **plus** zweiter Pfad für iOS. **6-10 h.**
- **Wartung:** Zwei Pipelines, zwei Auth-Token-Pflege, zwei verschiedene
  Reporting-Outputs. **~1 h/Monat.**
- **Risk:** Pipeline-Drift — Android-Test-Setup divergiert von iOS-Test-Setup,
  Bugs werden auf einer Plattform gefangen, auf der anderen nicht.

### (C) Pure Self-Host inkl. Mac
- **Setup:** Mac-mini-Provider auswählen (MacStadium, Scaleway-Apple-M1, Mac
  in Cloud), Maestro auf macOS installieren, iOS-Sim einrichten, plus Hetzner
  für Android. **8-16 h.**
- **Wartung:** Zwei OS, zwei Toolchains, Apple-Xcode-Updates. **~2 h/Monat.**
- **Risk:** Hoch. Aufwand steht in keinem Verhältnis zum Output für unsere
  Team-Größe (User + ein paar Sub-Agents).

### (D) GitHub Actions Matrix
- **Setup:** Eine `.yml` mit zwei Jobs (`maestro-ios` auf macos-latest,
  `maestro-android` auf ubuntu-latest mit `reactivecircus/android-emulator-runner`).
  **2-3 h.**
- **Wartung:** Action-Updates, ggf. Cache-Invalidierung. **~30 Min/Monat.**
- **Risk:** macOS-Minutes können bei vielen Test-Runs schnell teuer werden
  (z.B. 100 Runs/Monat × 5 Min = 40 USD). Bei aktueller Run-Frequenz aber OK.

---

## 5. Empfehlung — Lieblings-Pfad

### Lieblings-Pfad: **Maestro Cloud Starter (Variante A)**

**Begründung:**
1. **iOS-Hard-Constraint** löst sich elegant — Cloud betreibt Apple-Devices.
2. **Setup-Aufwand minimal** — eine Stunde max, keine Hetzner-Sprawl.
3. **Hetzner-Strategie respektiert** — der CX23 bleibt fokussiert auf
   `rebreak-staging`/`rebreak-prod`-Workload, kein OOM-Risk durch Emulator-Last.
4. **Ahmed-Empfehlung deckt sich** — `TESTING_STATE.md §5.2` nennt Maestro mit
   Cloud-Run als bevorzugten Pfad genau aus diesem Grund.
5. **Cash-Risk niedrig** — 120 EUR/Jahr ist Rauschen verglichen mit
   DiGA-Pen-Test (5-15k EUR), Apple-Developer-Program (99 USD) etc.
6. **Reversibilität hoch** — wenn Cloud-Limits gesprengt werden, lässt sich
   später auf (B+) oder (D) wechseln. Maestro-yml-Flows sind portable.

**Plan-Form:**
- Anfang: **Free-Tier prüfen** (Maestro hat ein gratis Kontingent für kleine
  Teams — verifizieren beim Account-Anlegen). Wenn Free-Tier ausreicht für
  unsere ~10 Runs/Monat, kostet's 0.
- Wenn Free-Tier nicht reicht: Starter-Plan (~10 EUR/Monat laut Ahmed-Quote).
- Maestro-CLI lokal für Dev-Iteration, Cloud für CI-Gate auf `main`.

### Plan B: **GitHub Actions Matrix (Variante D)**

Wenn Maestro Cloud aus irgendeinem Grund nicht passt (z.B. EU-Datenschutz-Bedenken
weil Test-Recordings auf US-Servern liegen, oder Pricing-Änderung):

- GitHub-Actions-Matrix mit `macos-latest` für iOS und `ubuntu-latest` +
  `reactivecircus/android-emulator-runner` für Android.
- Test-Runs nur auf `main`-Push und `workflow_dispatch`, nicht auf jedem PR
  → hält macOS-Minutes-Verbrauch klein.
- Aufwand: 2-3 h Setup, ~30 Min/Monat Wartung, ~100 EUR/Jahr.

### Anti-Empfehlung: **Self-Host auf Hetzner (B oder B+)**

Würde ich nur empfehlen wenn:
- DSGVO/DiGA-Audit verlangt explizit, dass Test-Pipelines auf EU-eigener
  Infrastruktur laufen (unwahrscheinlich, weil Test-Recordings keine
  Produktiv-User-Daten enthalten).
- Wir mehr als ~50 Test-Runs/Tag haben (sind wir nicht).
- Wir bereits dedicated CI-Infrastruktur betreiben (haben wir nicht — der
  rebreak-server ist Production).

In allen anderen Fällen ist Self-Host für unsere Größe **Over-Engineering**
und kollidiert mit der Hetzner-Konsolidierungs-Linie aus den letzten
Backyard-Sessions.

---

## 6. Setup-Estimate für die Empfehlung (Pfad A)

| Schritt | Owner | Aufwand |
|---------|-------|---------|
| Maestro-Cloud-Account anlegen + Free-Tier-Limits checken | User | 15 Min |
| `MAESTRO_CLOUD_API_KEY` GitHub-Secret hinterlegen | User | 5 Min |
| `.github/workflows/rebreak-test.yml` Job `maestro-cloud` schreiben (`maestro cloud --apiKey $MAESTRO_CLOUD_API_KEY .maestro/`) | Ahmed/Backyard | 30 Min |
| Erster Test-Run gegen Staging-Build von TestFlight-IPA | Ahmed | 30 Min |
| Smoke-Flow `auth/sign-in.yaml` entstehen lassen + via Cloud verifizieren | Ahmed | bereits in TESTING_STATE Roadmap (1 h) |
| **Total bis erste grüne Cloud-Run** | | **~2 h** zusätzlich zur Maestro-Flow-Entwicklung selbst |

Vergleich Self-Host: 4-8 h Setup + Wartungs-Last + zweiter Hetzner-Server. Cloud
gewinnt deutlich.

---

## 7. Offene Punkte (User-Decision)

1. **Maestro-Cloud-Pricing-Verifikation:** „~10 EUR/Monat" ist Schätzung aus
   Ahmed's Notiz. User sollte beim Account-Anlegen den aktuellen Starter-Plan-Preis
   und das Free-Tier-Kontingent verifizieren. Backyard hat bewusst nicht selbst
   den Maestro-Pricing-Endpoint gefetcht (kein Web-Tool im Recon-Scope).
2. **Cloud-Datenschutz vs DSGVO:** Maestro-Cloud-Server-Region prüfen (US vs EU).
   Test-Flows enthalten keine echten User-Daten, sondern Test-Account-Daten —
   Risk niedrig, aber Hans-Müller (DSFA) sollte das im Datenfluss-Diagramm
   notieren.
3. **Wenn (D) als Plan B aktiv wird:** Run-Frequenz kapeln (max 1× pro PR auf
   main, nicht auf jedem Branch-Push), sonst eskalieren macOS-Minutes.

---

## 8. TL;DR für User

- **Maestro Cloud Starter (~10 EUR/Monat, ggf. Free-Tier am Anfang) nehmen.**
- iOS lässt sich nicht auf Linux testen — Self-Host auf Hetzner ist immer
  Hybrid und kostet mehr Stunden als es spart.
- Unser CX23 ist schon nah an OOM bei Build-Peaks; Android-Emulator dazu wäre
  Production-Risk.
- Plan B falls Cloud nicht passt: GitHub-Actions-Matrix mit macOS-runner für
  iOS, ubuntu-runner für Android. ~100 EUR/Jahr, kein eigener Server.
- Setup für Pfad A: ~2 h gesamt bis zur ersten grünen Cloud-Run.

Ende. — Backyard
