In den letzten zwei Wochen haben wir im Stack-Serial L1 Runner (Fact), L2 Ollama (Inference) und L4 MCP (Context) Schicht für Schicht etabliert. Ein Satz kommt in fast jedem Feedback zurück: „Alle Tools hängen — aber ich verkette den Ablauf noch von Hand.“ Claude Code liefert Diff, MCP holt GitHub-Kontext, der Runner wird nach dem Push grün — und trotzdem sitzt jemand 40 Minuten am Terminal, bis „Issue #142 fixen und PR öffnen“ erledigt ist.
Genau das beantwortet L5 · OpenHands: nicht noch ein CLI kaufen, sondern Cloud Mac von einem Werkzeug-Stack zu einer Plattform hochstufen, die mehrstufige Engineering-Tasks autonom durchläuft. Dieser Text ist L5-Q01 · R1 · Serien-Hub: Er führt von „Coding-Tool“ zu „Agent-Plattform“ — Workflow-Position im Stack, warum OpenHands vs Claude Code keine Ersatzfrage ist, typische Tasks und OpenHands self-hosted auf macOS. Keine Docker-Installation (das ist L5-Q02).
Cloud Mac AI Stack · Serien-Slogan (vierte Klammer)
Claude Code produziert Diff, GitHub Runner produziert Fact, OpenHands produziert Workflow.
MCP liefert Context; Ollama optional Inference. Workflow konsumiert Context / Diff / Fact und ruft beides im Loop wieder auf — kein Einbahnstraßen-Pipeline. Siehe Stack-Sprache.
Die Werkzeug-Stack-Falle: jedes Tool gut, die Kette noch manuell
Ein typischer Wochenablauf (den wir in Kunden-Repos mehrfach gesehen haben):
- Montag: Claude Code ändert die API-Schicht, MCP zieht die Issue-Liste — in der Session alles glatt.
- Dienstag: Kollege pusht von anderem Rechner, Runner rot — niemand hat Agent-Änderungen mit CI-Skripten abgeglichen (ohne L1 Execution Engine wiederholt sich das).
- Mittwoch: Tests von Hand, Config anpassen, neue Claude-Code-Session für fehlende Dateien.
- Donnerstag: endlich grün — aber Doku, Migrationsskripte, Beispieltests fehlen, weil „Code ändern“ mit „Anforderung liefern“ verwechselt wurde.
Merkmal eines Werkzeug-Stacks: jeder Schritt hat das beste Tool, aber keine Schicht verantwortet die ganze Anforderung. Eine Agent-Plattform ergänzt eine Workflow-Schicht, die selbst zerlegt, ausführt und nach Fehlern neu ansetzt — OpenHands ist die Open-Source-Option dafür im Stack (Nachfolger-Ökosystem von OpenDevin).
Stack-Sprache: Workflow vs Context / Diff / Fact
Serienweit gilt: Workflow nicht als bloßer Downstream von Fact zeichnen. Workflow (L5) ist Orchestrierung, die im Task-Zyklus Context konsumiert, Diff erzeugt, mit Fact prüft, bis „Anforderung erfüllt“:
Cloud Mac AI Stack · Ergebnisbeziehungen (keine Aufrufreihenfolge) Workflow(L5 · OpenHands) ├── Context(L4 · MCP) ← Repo / Issue / API lesen ├── Diff(L3 · Claude Code) ← Code / Dateien ändern └── Fact(L1 · Runner / Tests)← test / build / CI-Signal Agent loop(innerhalb Workflow · mehrfach iterierbar) Diff ↔ Fact ↑ ↓ Observe → Plan → Execute …
Vier Ergebnisarten parallel: Context · Diff · Fact · Workflow (MCP · Coding · Runner · OpenHands). Inference (L2 · Ollama) optional, bewusst nicht im Diagramm, um Verwechslung mit dem Agent-Loop zu vermeiden.
| Ebene | Komponente | Ergebnis | Frage |
|---|---|---|---|
| L4 | MCP | Context | Was sieht der Agent? |
| L3 | Claude Code | Diff | Was ändert sich diesmal? |
| L1 | GitHub Runner | Fact | Darf die Organisation vertrauen? |
| L5 | OpenHands | Workflow | Ist die Anforderung durch? |
Workflow ist kein „weiterer CI-Job“, sondern ein mehrstufiger, unterbrechbarer Task-Zustandsautomat: im Loop mehrfach Diff und Fact, bis der PR lieferbar ist. Claude Code exceliert bei einrundigem Diff; OpenHands bei unbeaufsichtigtem Durchlauf des gesamten Loops — vorausgesetzt Context und Fact stehen.
OpenHands in einer Minute (kein Lexikon)
OpenHands ist eine Open-Source-autonome Software-Engineering-Agent-Plattform: in einer Sandbox (typisch Docker) nimmt sie ein Ziel in natürlicher Sprache entgegen und führt Plan → Code/Befehle → Output lesen → Debuggen aus, mit GitHub-Anbindung (Issues, PRs, CI-Status). Im Cloud Mac AI Stack ersetzt sie weder Claude Codes Pairing noch den Runners objektiven Build-Beweis, sondern orchestriert mehrstufige Lieferung darüber.
Unterschied zu „noch ein MCP-Server“
MCP erweitert die Kontextgrenze (Repo lesen, API). OpenHands erweitert die Task-Tiefe (selbst entscheiden, welches Tool als Nächstes, ob Retry). Ohne L4 blindes Ändern; ohne L1 kein organisationales „fertig“.
OpenHands vs Claude Code: keine Konkurrenz, verschiedene Ebenen
Wer OpenHands vs Claude Code oder Claude Code alternative sucht, fragt oft: Kann eines das andere ersetzen? Im Stack: nein und sollte nicht — andere Ebene, anderes Ergebnis:
- Claude Code (L3) → Diff: Pair Programming, Sie sind dabei.
- OpenHands (L5) → Workflow: autonomer Agent, Sie setzen das Ziel.
OpenHands als „zweites Claude Code“ scheitert schnell: schwach bei vagen Produktintuitionen; Claude Code schwach bei acht unbeaufsichtigten Issue-Schritten. Richtig: schichten — tagsüber Claude Code für harte Stellen, nachts OpenHands für die Issue-Queue.
| Dimension | Claude Code (L3 · Diff) | OpenHands (L5 · Workflow) |
|---|---|---|
| Interaktion | Mensch dabei, Schritt für Schritt | Zielgetrieben, mehrstufig autonom |
| Typische Dauer | 5–30 Min. Session | 30 Min.–Stunden Task |
| Stärke | Komplexer Punkt-Refactor, Intent-Abgleich | Skriptierte Anforderungen, Batch-Kleinstfixes, Template-Features |
| Risiko | Session endet → Halbfertiges | Drift, zu viele Dateien, zu breite Rechte |
| Ergebnis | Diff | Workflow (PR, Logs, Schrittspur) |
| Ersatz füreinander? | ❌ Nein | ❌ Kein Claude-Code-Ersatz |
Faustregel: PR-Intent in einem Satz → Claude Code; „Issue erledigen“ → OpenHands. Mit CodeGraph-Index im großen Repo bleibt Pairing oft Claude Code; OpenHands passt zu templatisierten Backend-Tasks. Beide teilen MCP Context, nicht die Rolle.
Welche Tasks für OpenHands? (erste Suchfrage)
Wer OpenHands agent oder OpenHands github sucht, will wissen: Was ist zuverlässig delegierbar? Unter Tests + CI empfehlen wir — auch Pool für L5-Q02:
| Task-Typ | Typische Eingabe | Erwartete Lieferung | Eignung |
|---|---|---|---|
| Bugfix | GitHub-Issue + Repro | Patch + Test + PR | ⭐⭐⭐⭐ |
| Dependency-Upgrade | „React 18→19“ | Lockfile + Breaking Fixes | ⭐⭐⭐⭐ |
| Lint-Cleanup | ESLint / SwiftLint Report | Warnings batch, Verhalten unverändert | ⭐⭐⭐⭐⭐ |
| Tests generieren | Liste ungetesteter Module | Unit-Test-PR | ⭐⭐⭐ |
| Doku-Sync | API-Diff | README / OpenAPI angeglichen | ⭐⭐⭐⭐ |
| Scaffold | „REST-Endpoint“-Template | Route + Test-Gerüst | ⭐⭐⭐⭐ |
Nicht als erster OpenHands-Task: großer Refactor ohne Tests, UX-Umbau, schema-kritische Migration mit Business-Freigabe, Prod-Secrets. Bleibt in Claude-Code-Sessions mit menschlichem Gate, dann Runner für Fact.
Wie OpenHands arbeitet (Agent-Loop)
Suchende nach How OpenHands works oder OpenHands agent loop wollen verstehen: Wie wird aus einem Satz ein merge-fähiger PR? Kern ist der Vier-Schritte-Loop Plan → Execute → Observe → Debug:
| Phase | Aktion | Verbraucht |
|---|---|---|
| Plan | Issue lesen, Subtasks, Dateiliste | Context (MCP, GitHub, Baum) |
| Execute | Patch, Shell, Tools | erzeugt Diff |
| Observe | Test-/Lint-/Build-Logs | Fact (lokal oder Runner) |
| Debug | Plan oder Code anpassen | zurück zu Execute; Loop bis grün |
OpenHands agent loop (Konzept · kein Einmal-Pipeline)
┌──────────┐
│ Plan │ ← Context
└────┬─────┘
▼
┌──────────┐
│ Execute │ → Diff
└────┬─────┘
▼
┌──────────┐
│ Observe │ ← Fact (test / build / CI)
└────┬─────┘
│
fail │ pass
▼
┌──────────┐ ┌─────────────┐
│ Debug │ ──────▶│ Workflow OK │ → PR
└────┬─────┘ └─────────────┘
│
└──── zurück Plan oder Execute
Kein „stärkerer Chat“: OpenHands architecture = zustandsbehaftete Task-Maschine — jedes Observe landet in der Trajectory für den nächsten Plan. Fix bug und Lint cleanup sind derselbe Loop, anderer Plan-Einstieg. Task-Replay unten; Docker/UI in L5-Q02.
Erst L0–L4, dann L5 — sonst Sandbox ohne organisationalen Beweis
Wir raten vom „Tag eins OpenHands installieren“. Reihenfolge wie L1 Einführungsreihenfolge, plus L5 nach MCP:
- L0 — Cloud Mac als dauerhafter macOS-Knoten.
- L1 — Runner:
push → grün/rotreproduzierbar. - L2–L3 — optional Ollama + Claude Code auf Fact.
- L4 — MCP Hub + Berechtigungsmodell: lesen/schreiben auditierbar.
- L5 — OpenHands: mehrstufiger Workflow.
Ohne L1 kann OpenHands technisch PRs öffnen — das Team bewertet Merge-Risiko nicht. Das ist derselbe Organisationsfehler wie „SSH grün, Actions rot“. Ohne L4 wächst die Token-Fläche des autonomen Agents.
Echter Task-Ablauf: Plan → Execute → Observe → Debug
Replay auf einem Sandbox-Fork (Zahlen illustrativ), abgleichbar mit Agent-Loop:
Ziel: Issue #218 „CSV-Export fehlt UTF-8 BOM“ ① Issue + src/export/*.ts lesen ~2 min · Context ② 6-Schritte-Plan ~1 min · Plan ③ 4 Dateien + 1 Test ~8 min · Execute ④ pnpm test → Snapshot fail ~3 min · Observe · Fact ⑤ Log → 2 Dateien nachziehen ~5 min · Debug → Execute ⑥ Tests grün ~3 min ⑦ PR + Issue-Link ~1 min · Workflow-Lieferung ~23 min wall time · Mensch: Ziel freigeben + Merge-Review
Schritt ④ (Observe): Testfehler sind Loop-Input, kein Desaster. Im Pairing fixen Sie sofort; OpenHands braucht Observe → Debug → Fact in die nächste Execute-Runde. Ohne festen Testbefehl (L1 nicht verankert) dreht der Loop leer — wieder: Runner vor OpenHands.
Trigger-Konzept (kein Install-Tutorial):
# Konzept: Issue-Label startet autonomen Task on: issues: types: [labeled] if: github.event.label.name == 'agent:openhands' run: | openhands run \ --repo "${{ github.repository }}" \ --issue "${{ github.event.issue.number }}" \ --max-iterations 40 \ --sandbox docker
Runner · OpenClaw · OpenHands: drei Namen, drei Rollen
| Komponente | Stack | Bild | Typische Aktion |
|---|---|---|---|
| GitHub Runner | L1 · Fact | Füße | xcodebuild, pnpm test, Archiv |
| OpenClaw | Orchestrierung | Leitstand | Trigger, Quittung, Audit, ACK |
| OpenHands | L5 · Workflow | Autonomer Engineer | Anforderung lesen, Code, iterieren bis PR |
OpenClaw trifft keine Architekturentscheidungen — „wann laufen, wie benachrichtigen“. OpenHands signiert keine iOS-Archive — lieferbar sind review-fähige PRs und Schrittlogs. Alle drei auf einem Cloud Mac, aber nicht in einem Runbook vermischen.
Typische Architektur: OpenHands self-hosted · Docker · macOS
Wer OpenHands Mac oder OpenHands self-hosted sucht, braucht Topologie, keine Install-Schritte. Minimale Produktionsform auf Apple-Silicon Cloud Mac:
OpenHands self-hosted on macOS (Cloud Mac · L0)
GitHub(issues / webhooks / PR)
│
▼
┌─────────────────────────────────────┐
│ Cloud Mac · macOS · Apple Silicon │
│ ┌─────────────┐ ┌───────────────┐ │
│ │ OpenHands │ │ Claude Code │ │ L5 + L3 (optional gleicher Knoten)
│ │ (Docker) │ │ (SSH/Terminal)│ │
│ └──────┬──────┘ └───────────────┘ │
│ │ sandbox workspace │
│ ▼ │
│ ┌─────────────┐ ┌───────────────┐ │
│ │ MCP Servers │ │ Ollama (opt.) │ │ L4 · L2
│ └─────────────┘ └───────────────┘ │
│ │ git push │
│ ▼ │
│ ┌─────────────────────────────────┐ │
│ │ GitHub Runner (self-hosted) │ │ L1 Fact
│ └─────────────────────────────────┘ │
└─────────────────────────────────────┘
Warum Workflow auf Cloud Mac, nicht auf dem Laptop?
- Dauer — Tasks oft 30–90 Min.; Deckel zu = Abbruch.
- Docker — stabiler Daemon; Cloud Mac 24/7.
- Mit Runner im Stack — gleicher Knoten validiert nach Agent-Push, weniger SSH-grün/Actions-rot.
- ABI — iOS/macOS-Ziele auf Apple Silicon statt Linux-VPS-Überraschungen.
Minimaler Docker-Start (Konzept; vollständiges compose in L5-Q02):
# Cloud Mac · OpenHands self-hosted (Skizze)
docker pull docker.all-hands.dev/all-hands-ai/openhands:0.9
docker run -d --name openhands \
-e SANDBOX_USER_ID=$(id -u) \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $HOME/.openhands:/.openhands \
-p 3000:3000 \
docker.all-hands.dev/all-hands-ai/openhands:0.9
Dedizierter Knoten ≠ automatisch sicher
Cloud Mac liefert macOS-ABI und Dauerbetrieb; OpenHands braucht repo-minimale Rechte (Bot-Branch, keine Prod-Secrets). L6 Agent Ops / Governance folgt für Audit, Policy und menschliche Gates — hier zuerst Workflow etablieren.
L5 Agent Stack: welcher Cloud Mac?
Nach der Architektur die Spezifikation — Orientierung aus realen Stack-Kombinationen:
| Szenario | Empfehlung | Hinweis |
|---|---|---|
| Nur OpenHands | M4 · 16GB | Docker + API-LLM; Workflow testen |
| OpenHands + Claude Code | M4 · 24GB | Tags Diff, nachts Workflow |
| OpenHands + Ollama 7B | M4 · 24GB | Private Inference; siehe Workload-Scheduling |
| OpenHands + Ollama 14B + Runner | M4 Pro · 48GB | 14B resident + Sandbox + tägliches macOS-CI |
| iOS-Team | M4 · 24GB+ | Agent + Runner gleicher Knoten; Archive-Peak ~8GB+ |
Die Kette Workflow → Cloud Mac → Spezifikation: erst L5-Bedarf klären, dann Knoten für Docker + optional Ollama + Runner — nicht umgekehrt Hardware mieten und Tools stapeln.
Grenzen klarziehen schlägt Agent-Hype
| Besser für OpenHands (L5) | Vorsicht / nein |
|---|---|
| Interne Tools, Scaffolds, Doku, Test-Lücken | Regulierte Kernpfade ohne menschliches Gate |
| Klare Issue-Templates, brauchbare Tests | Keine Tests, kein CI |
| Wiederholbare Migrationen, Lint-Batches | UX-Umbau mit Produktintuition |
| L1 Runner + L4 MCP-Policy | Secrets im Repo, keine Token-Rotation |
| „Agent-PR + Mensch merged“ | Agent pusht main / auto-prod |
Skripte und Services: ja; reguliertes Prod-Schreiben: nein. OpenHands ist Engineering-Beschleuniger, kein entlastendes „Auto-DevOps“.
Entscheidung: Cloud Mac zur Agent-Plattform upgraden?
Self-Check — ≥3 Treffer links vor L5-Invest:
| OpenHands sinnvoll | Erst L1/L4 |
|---|---|
| ≥5 kleine, abgeschlossene Issues pro Woche | Hauptschmerz: kein macOS-CI |
| Runner grün, trotzdem viel Hand-Verkettung | Claude-Code-Sessions noch instabil |
| MCP-Rechte und Bot-Konten gestaffelt | GitHub-PAT mit Admin auf alles |
| Sandbox und Task-Logs gepflegt | Niemand macht Merge-Review |
| Cloud Mac 24GB oder Ollama gestaffelt | 16GB mit 14B + Agent + Xcode |
Fazit: OpenHands zählt nicht als „schlauerer Chat“, sondern als Upgrade von Werkzeug-Stack zu plattformischer Anforderungsverantwortung — wenn Fact (Runner) und Context/Policy (MCP) stehen. Sonst automatisieren Sie nur die Hand-Verkettung, Merge bleibt riskant.
L5-Serie: von der Entscheidung zum ersten autonomen Task
| Teil | qid | Thema | Status |
|---|---|---|---|
| ① · dieser Text | L5-Q01 | Werkzeug-Stack → Agent-Plattform (R1) | veröffentlicht |
| ② | L5-Q02 | OpenHands auf Cloud Mac + erster autonomer Task | als Nächstes |
| ③ | L5-Q03 | OpenHands vs OpenClaw im Detail | geplant |
| ④ | L5-Q04 | Runner + OpenHands: Auto-PR nach CI-Fail? | geplant |
| ⑤ · L6 | L6-Q05 | Agent Ops / Governance | 📅 16.06. |
Vor L6 mindestens ② abschließen — ohne replizierbares OpenHands-Tutorial fehlt dem Hub die Landing. Gesamtkarte in L6-Q01; die Serie wird von „AI Tool Stack“ zu „AI Engineering Platform“.
FAQ
Agent-Loop?
Plan → Execute → Observe → Debug; siehe Wie OpenHands arbeitet.
OpenHands vs Claude Code?
Kein Entweder-oder; siehe Vergleich.
Installation?
Hub ohne Schritt-für-Schritt; L5-Q02 (geplant 14.06.).
Self-hosted auf Mac?
Ja — Cloud Mac + Docker; Architektur.
Ohne Runner?
Läuft, nicht empfohlen — erst L1.
OpenClaw?
Dreieck und OpenClaw-Notiz.
Spezifikation?
L5-Tabelle; nur OpenHands ab M4 16GB.
L5 Agent Stack · Auswahl
Cloud-Mac-Spezifikation nach Workload
Nur OpenHands → M4 16GB · + Claude Code → M4 24GB · + Ollama 14B + Runner → M4 Pro 48GB. Hub klärt L5 — L5-Q02 für den ersten autonomen Task.
Cloud Mac Preise & Spezifikation