diff --git a/docs/brainstorm.md b/docs/brainstorm.md
index 793fcc8f2bfcdbe92828a81fdc56f513586c06b8..162c2e611310d37cf43233d2695904caab572aad 100644
--- a/docs/brainstorm.md
+++ b/docs/brainstorm.md
@@ -1,15 +1,55 @@
 # Brainstorm
 
+## Overview
+
+- verschiedene Lösungsansätze verfolgen
+  - unterschiedliche Anwendung (kleine Scripts vs. große Projekte)
+  - unterschiedliche Nutzer:innen-Erfahrung
+- "TensorBoard"
+
+## SSH
+
+> kleine Scripts sowie große Projekte
+
+- CLI: byobu
+- GUI: Xpra
+- Datasets über NFS
+- [-] schlechte Serverauslastung
+
+### Bare Metal
+
+- [+] Keinen automatischen Server-Stopp (JupyterHub stoppt nach 3 || 4 Tagen)
+- [-] Firewall-Routing erforderlich
+- [-] Linux-Account erforderlich (mit SSH-Schlüssel)
+- [-] Nutzer:in muss Conda-Umgebung erstellen
+
+### JupyterHub
+
+- Code-Tunnel (Github- oder Microsoft-Account)
+- "ngrok"
+- Eintrag in JupyterHub-Config zur Nutzung der GPUs
+- [+] Conda-Umgebung bereits vorhanden
+- [-] vmtl. neue Tunnelerstellung bei jedem Starts des User-Servers auf JupyterHub
+  - `$ code tunnel`
+
 ## Makefile
 
 > kleine Scripts; kurzfristige Ausführung; Debugging
 
 - Konfiguration über Makefile-Variablen
 - Targets
-  - `make push` Kopiert Code von Client auf Server (`scp`)
-  - `make exec` Führt Code auf Server aus (`ssh`)
-  - `make status` Fragt Fortschritt auf Server ab (`ssh`)
-  - `make pull` Kopiert Output von Server auf Client (`scp`)
+  - `make push` kopiert Code von Client auf Server (`scp` || `rsync`)
+  - `make exec` führt Code auf Server aus (`ssh`)
+  - `make status` fragt Fortschritt auf Server ab (`ssh`)
+  - `make pull` kopiert Output von Server auf Client (`scp` || `rsync`)
+
+## JupyterHub – Browser
+
+- JupyterHub im Browser
+- Terminal von JupyterLab zur Ausführung
+- [+] "bessere" Serverauslastung (Ressourcenmanagement)
+- [+] keine byobu-Abhängigkeit
+- [-] ungewünschte Nutzung von JupyterHub (im Browser)
 
 ## GitLab
 
@@ -21,17 +61,23 @@
 4. [Pipelines](https://gitlab.cvh-server.de/mmelchert/akis-cloud-computing/-/pipelines) [![Pipeline Status](https://gitlab.cvh-server.de/mmelchert/akis-cloud-computing/badges/main/pipeline.svg)](https://gitlab.cvh-server.de/mmelchert/akis-cloud-computing/-/commits/main)
 5. [Artifacts](https://gitlab.cvh-server.de/mmelchert/akis-cloud-computing/-/artifacts): Output
 
-Vorteile:
-
-- "bekannter" Workflow
-- GUI vorhanden
-- integrierte Versionsverwaltung
-- automatisierte Ausführung des Codes
-- Fortschrittskontrolle
-- E-Mail-Benachrichtigung bei fehlerhafter Pipeline
-- Ablage der letzten Output-Versionen
-
-Nachteile:
-
+- [+] "optimale" Serverauslastung
+- [+] "bekannter" / standardisierter Workflow
+- [+] GUI vorhanden
+- [+] integrierte Versionsverwaltung
+- [+] automatisierte Ausführung des Codes
+  - Runners-Konfiguration nötig (max. Laufzeit)
+- [+] Fortschrittskontrolle
+  - E-Mail-Benachrichtigung
+    - fehlerhafter Pipeline (default)
+    - erfolgreicher Pipeline (Repo Notification Settings)
+  - [Matrix-Bot](https://gitlab.cvh-server.de/mmelchert/akis-cloud-computing/-/settings/integrations/matrix/edit)
+- [+] Ablage der letzten Output-Versionen (Artifacts)
+  - statischer Link zum Output des letzten Jobs
 - jede Code-Änderung ein Commit & Push
-- Speicheraufwand (GitLab auf Hetzner-Server)
+  - [+] grundsätzlich sinnvoll
+  - [-] eher ungeeignet fürs Debugging
+- [-] Speicheraufwand (GitLab auf Hetzner-Server)
+  - Umzug möglich
+
+<!-- todo: Jobs vs. [MLOps](https://docs.gitlab.com/user/project/ml/) -->