Drei Coding-Agenten, ein Java-Projekt. Ein Blick auf biomelab.
mit Manuel de la PeñaManuel de la Peña hat mir biomelab gezeigt, sein Open-Source-Dashboard, um Coding-Agenten parallel auf der eigenen Maschine laufen zu lassen, unabhängig vom Harness eines KI-Anbieters. Wir haben es live installiert, sind auf einen Windows-Bug gestoßen, der uns mitten in der Session zu seiner Maschine wechseln ließ, und haben dann drei Agenten gleichzeitig in Docker Sandboxes auf einem echten Java-Projekt laufen lassen.

YouTube
Drei Coding-Agenten, ein Java-Projekt. Ein Blick auf biomelab.
YouTube-Video laden
Dieses Video wird von YouTube eingebettet und erst nach Ihrer Einwilligung geladen. Beim Laden können personenbezogene Daten an YouTube oder Google übermittelt und Cookies gesetzt werden.
Mehr dazu in der Datenschutzerklärung.
Projektquelle
Arbeits-Repository
Hier findest du Prompts, Instructions und Beispiele aus dem gezeigten Modernisierungs-Workflow.
Repository öffnenTimestamps der Session
- 00:00Einführung
- 01:33Manuels Hintergrund und die Entstehung von biomelab
- 04:19Was biomelab ist und welches Problem es löst
- 07:07Open Source, Lizenz und der Website-Playground
- 10:42biomelab live zum ersten Mal installieren
- 12:34Das Demo-Projekt und der Never-touch-main-Workflow
- 15:12Erste Worktree-Panne, Kanban vs. Grid-Ansicht
- 21:22Notiz-Manager und Issue-gesteuerte Worktrees
- 23:38Eine Docker Sandbox aus biomelab heraus einrichten
- 28:56Sandbox starten, ein Terminal-Fokus-Bug live
- 33:22Wechsel zu Manuels Maschine
- 37:09App neu aufsetzen, den Scaffolding-Agenten starten
- 44:20Abstecher: das Agenten-Gedächtnis-Projekt regent
- 47:51Den Code des Agenten im Editor prüfen
- 50:28Ein Product-Owner-Skill und ein zweiter Agent
- 55:38Committen und den ersten Pull Request öffnen
- 01:00:24Warum biomelab den echten Repo-Zustand zeigt
- 01:06:20Vergleich mit GitHub Copilots App, Worktrees vs. Branches
- 01:09:40Manuels PR-Automatisierungs-Skills
- 01:10:57Feature-Idee: ein Agent erzeugt mehrere Worktrees
- 01:14:11Drei Issues parallel bearbeiten
- 01:25:39Docker Sandbox blockiert und erlaubt einen Netzwerk-Request
- 01:29:48PRs mergen, die App läuft zum ersten Mal
- 01:36:04Zweiten PR mergen, mehrere Worktrees gleichzeitig
- 01:41:34Ein Agent pro Sandbox, und wie Secrets verborgen bleiben
- 01:47:55Fazit: was biomelab ist und was nicht
- 01:50:02Multi-Maschinen-Setup und der Weg in die Cloud
- 01:51:00Schlussworte und Open-Source-Mitarbeit
Zwei oder drei Coding-Agenten gleichzeitig laufen zu lassen ist inzwischen normal. Den Überblick zu behalten, welcher gerade was tut, ist es nicht. Manuel de la Peña war zu Gast, um biomelab, sein Open-Source-Dashboard genau für dieses Problem, zum ersten Mal auf meiner Maschine zu installieren. Danach haben wir drei Agenten gleichzeitig auf ein echtes Java-Projekt losgelassen, um zu sehen, ob es hält.
Co-Speaker
Manuel de la Peña
Staff Software Engineer bei Docker, Docker-Sandboxes-Team bei Docker
Core-Maintainer von testcontainers-go und Schöpfer von biomelab, einem Open-Source-Desktop-Dashboard für git worktrees und die darin laufenden Coding-Agenten. Seit 2011 in Open Source unterwegs, erst in Java, dann Go, jetzt bei Docker nach der Übernahme von AtomicJar, dem Startup hinter Testcontainers.
Ein Dashboard für eine ganze Agenten-Flotte
Manuels Problem war simpel und bekannt: zu viele Terminal-Tabs, zu viele VS-Code-Fenster, kein einziger Ort, an dem sichtbar war, welcher Agent gerade woran arbeitete. Also baute er biomelab, ein tastaturgesteuertes Dashboard, das links alle registrierten Projekte auflistet und rechts die git worktrees des gewählten Projekts als Karten zeigt.
Der Name ist wörtlich gemeint, und geliehen. Biome war Dockers eigener interner Arbeitstitel für Docker Sandboxes, Manuels Team, bevor das Produkt unter seinem offiziellen Namen erschien. Er behielt ihn für sein eigenes Tool: ein Lab, in dem diese kleinen, isolierten Ökosysteme wachsen, eines pro Agent. Es ist MIT-lizenziert, und der Betrieb mit Docker Sandboxes braucht nicht mehr als einen kostenlosen Docker-Login.
Main bleibt unangetastet
Das ganze Tool ist um eine Regel herum gebaut. Jede Aufgabe bekommt ihre eigene Worktree, erzeugt mit einem einzigen Tastendruck, sodass nie versehentlich etwas auf main landet.
Ich fasse main nie an.
Das ist keine Disziplin, an die Manuel sich erinnern muss. Es ist strukturell verankert: main ist die große Karte an der Wurzel der Projektansicht, alles andere sind Worktrees, und ein Kanban-Board (umschalten mit g) verfolgt jede davon durch fünf Zustände, von "erstellt" bis "gemerged".

Eine Sandbox, nicht eine pro Worktree
Hier lag ich vorher falsch: Ich hatte angenommen, jede Worktree läuft in ihrer eigenen isolierten microVM. Tut sie nicht. Pro Projekt läuft eine Docker Sandbox, und jede Worktree-Session eines Agenten lebt in genau dieser einen Sandbox, unterschieden nur durch den Dateisystempfad.
Manuels Begründung ist praktisch, keine architektonische Reinheit: Eine microVM startet in Millisekunden, aber eine pro Worktree mit jeweils mehreren GB RAM und mehreren zehn GB Speicher skaliert auf einem Laptop nicht. Der Preis dafür: Worktrees sind nicht stark voneinander isoliert, was mit ein Grund ist, warum Manuel regent erkundet, ein separates Tool, das Agenten-Gespräche auf einem eigenen Git-Branch aufzeichnet, als geteiltes Gedächtnis zwischen Sessions, die sonst nicht miteinander reden können.
Was auf Sendung schiefging
Es lief nicht glatt, und das ehrlich zu sagen gehört dazu. biomelab steht noch bei v0.7.0, weit von einem stabilen Release entfernt, ein guter Teil dessen, was jetzt kommt, gehört einfach zu diesem Stadium dazu.
Die erste Worktree-Erstellung scheiterte komplett: Das Demo-Repo hatte noch keinen initialen Commit, also gab es kein main, von dem aus man hätte branchen können (Issue #80). Diese Lücke hat Manuel in biomelab selbst nach der Session behoben.

Dann, speziell auf meiner Maschine, öffnete sich beim Öffnen eines Worktree-Terminals das Fenster und schloss sich sofort wieder, immer und immer wieder, und blockierte jeden Fortschritt (Issue #81). Das ist ein Windows-spezifischer Bug in biomelabs Terminal-Fokus-Handling. Auf Manuels Maschine trat er kein einziges Mal auf, und genau dorthin sind wir gewechselt: Wir haben mein Setup komplett aufgegeben und den Rest der Session von seinem Bildschirm aus bestritten. Ich habe live gewitzelt, dass sie sich den falschen Typen für eine Live-Demo ausgesucht hätten, und ich hatte recht damit. Eine mildere Version desselben Bugs tauchte auch dort noch auf: Enter zu drücken öffnete manchmal ein neues Terminal statt das bereits laufende zu fokussieren, ein Bug, den Manuel live während des Streams meldete (Issue #84).
Auch das Mergen ist noch nicht verdrahtet: biomelab öffnet Pull Requests, kann sie aber nicht mergen, also wurde der erste PR direkt auf GitHub gemerged statt aus dem Dashboard heraus (Issue #83).
Später scheiterte auch mein erster Pull Request beim Push, weil der Git-Remote der Sandbox auf SSH stand und ich das Signing-Kit für dieses Repo nicht installiert hatte. Ich habe Claude einfach gesagt, den Remote auf HTTPS umzustellen, und er hat es richtig gemacht, ohne dass ich selbst einen Git-Befehl angefasst habe.
Drei Agenten, ein Java-Projekt
Nach den ersten Kanten haben wir eine kleine Spring-Boot-App registriert, die deutsche Katastrophenereignisse trackt, und sie wirklich laufen lassen: ein Scaffolding-Agent baute die App, ein zweiter Agent entwarf einen "Product Owner"-Skill, dann arbeiteten drei weitere Agenten parallel je ein eigenes GitHub-Issue ab, alle in derselben Sandbox.
Docker Sandboxs Netzwerk-Policy erwischte einen davon mitten im Lauf und blockierte per Deny-all-Standard eine ausgehende Anfrage an Maven Central. Bemerkenswert war nicht der Block selbst, sondern dass der Agent selbst erkannte, wo er lief, und aktiv darum bat, die Anfrage freizugeben, bevor er weitermachte.
Das ist perfekt, weil er einen gewissen Kontext davon hat, was eine Sandbox ist.
Wir haben die Anfrage freigegeben, die Aufgabe war fertig, und die Tests des gemergten Pull Requests liefen durch. Zwischendurch habe ich live eine Idee eingebracht: Ein Agent, der schon in einer Worktree läuft, soll biomelab selbst anweisen können, mehrere weitere zu erzeugen, eine pro Issue, statt dass ein Mensch das von Hand macht. Manuel gefiel die Idee so gut, dass er dafür live, mitten im Gespräch, ein GitHub-Issue eröffnete.
Kein Kollaborations-Tool
Das ist der eigentliche Punkt. GUI-Tools zum Verwalten von Coding-Agenten gibt es längst, und die meisten KI-Anbieter liefern inzwischen ihre eigenen: GitHub Copilot hat eine App mit einer ähnlichen Projektliste, und andere Anbieter haben ihre eigenen Session-Ansichten. Der Unterschied bei biomelab ist, dass es egal ist, welchen Harness man nutzt. Es ist um die Worktree herum gebaut, für Isolation an Docker Sandbox angebunden, und funktioniert unabhängig davon, ob der Agent darin Claude, Codex oder etwas ganz anderes ist.
Was es ausdrücklich nicht ist: ein Kollaborations-Tool. Es läuft auf einer Maschine, verfolgt die Aufgaben einer Person, und koordiniert nichts im Team. Wenn deine Arbeit ohnehin schon in der Cloud läuft, brauchst du es vielleicht nicht, und Docker Sandbox vielleicht auch nicht. Aber wenn du lokal arbeitest und eine Agenten-Flotte willst, die nicht an die Desktop-App eines einzigen Anbieters gebunden ist, ist genau dafür das Tool gebaut.
Fazit
Wenn du bereit bist, ein bisschen zu experimentieren, und eine leichtgewichtige Art suchst, Coding-Agenten lokal zu orchestrieren, ist das einen Versuch wert. Es ist Open Source, und Lücken, die du findest (eine hat Manuel selbst live, mitten in der Aufzeichnung, behoben), sind nur einen Pull Request oder ein Issue entfernt.
Eine der Sachen, die ich in dieser KI-Welt gelernt habe: Man muss erkunden. Übernimm kein Tool nur, weil es gerade jemand promotet. Erkunden, experimentieren, selbst machen, scheitern, und wenn das, was du zum Lernen der Grundlagen baust, nicht funktioniert, nimm etwas anderes.
Nützliche Links
Kommentare
Kommentare optional von GitHub laden
Die Kommentarfunktion wird über Giscus und GitHub Discussions bereitgestellt. Sie wird erst nach Ihrer ausdrücklichen Einwilligung geladen. Beim Laden können personenbezogene Daten wie Ihre IP-Adresse und technische Metadaten an GitHub übermittelt sowie Cookies oder ähnliche Technologien gesetzt werden.
Bitte bestätigen Sie zuerst Ihre Einwilligung, bevor die Kommentare geladen werden.