In progress Closed Source Urheber und Maintainer Closed source 2026

AetherNet

Eine Steuerungsebene für eine Flotte autonomer Agenten, die zufällig in Minecraft leben.

Sieben Dienste hinter einem einzigen Gateway: ein Orchestrator mit Leader-Wahl, netzwerkisolierte Agenten-Hosts, ein Pathfinding-Dienst und ein Weltcache, über gRPC. Der Schauplatz ist ein Spiel. Das Problem ist, unzuverlässige verteilte Arbeiter gegen ein veraltendes Weltmodell einzuplanen.

Was es ist

Eine Steuerungsebene für eine Flotte autonomer Agenten, wobei die Agenten zufällig Minecraft-Bots sind.

Spielerinnen und Spieler geben Aufträge für Dienste im Spiel: Eskorten, Patrouillen, Lieferungen, Abrisse, Vermessungen. Administrationen verwalten die Flotte, die Basen, die Lieferkette und die Wirtschaft dahinter. Basen sind in einer CDN-artigen Hierarchie angeordnet, vom Hub über das Depot bis zur vorgeschobenen Basis.

Warum es wie echte Infrastruktur gebaut ist

Weil das interessante Problem nie das Spiel war.

Zieht man den Schauplatz ab, bleibt ein Scheduler, der Arbeit an einen Pool unzuverlässiger Arbeiter verteilt, verstreut über Maschinen, die einander nicht vertrauen, mit einem gemeinsamen Weltmodell, das veraltet, einer Lieferkette und einer Wirtschaft, die aufgehen muss. Das ist ein Problem verteilter Systeme mit einer Minecraft-Haut darüber, und es als solches zu behandeln ist der ganze Punkt.

Die Dienste

Sieben davon, jeder mit einer Aufgabe, die er nicht teilt.

Das Gateway besitzt Authentifizierung, rollenbasierte Zugriffskontrolle und Protokollierung, stellt HTTP, tRPC und WebSockets bereit und reicht Arbeit über gRPC weiter. Es ist der einzige Dienst, der nach außen zeigt.

Der Orchestrator plant und verteilt und betreibt die Warteschlange, die Lieferkette und die Ausbauüberwachung. Er ist ein einzelner, per Leader-Wahl bestimmter Knoten, denn ein Scheduler mit zwei Meinungen ist schlimmer als einer, der kurz nicht verfügbar ist.

Agenten-Hosts starten und betreiben die Bots. Sie sind je Host netzwerkisoliert und laufen in mehreren Replikaten, und genau das ist der Punkt: Bot-Prozesse sind die nicht vertrauenswürdige, absturzanfällige Komponente, also sind sie diejenige, die eingezäunt und ersetzbar gemacht wird.

Ein Pathfinding-Dienst führt A* mit einem Cache für heiße Regionen aus. Ein Weltcache speichert Schematics und Regionsbasislinien, was Reparatur und Wiederherstellung möglich macht statt nur wünschenswert.

Dazu kommt eine Next.js-Webanwendung mit dem Spieler-Dashboard, der Managerkonsole und dem Verwaltungspanel, sowie ein serverseitiges Plugin für die Teile, die im Spiel laufen müssen.

Jeder Dienst stellt einen eigenen Metrik-Port bereit. Keiner teilt einen Datenbank-Client mit einem anderen.

Stack

Ein Workspace aus Turborepo und pnpm. TypeScript mit Node16-Modulauflösung durchgehend. PostgreSQL 16 hinter Prisma 6, Redis 7 mit BullMQ für Hintergrundaufgaben, tRPC v11 über Fastify, gRPC mit Protobuf zwischen den Diensten, argon2 und JOSE für die Authentifizierung, und strukturierte Protokollierung überall.

Gemeinsame Typen, Konfiguration, Authentifizierung, Protokollierung, Proto-Stubs, Queue-Wrapper und typisierte gRPC-Clients sind jeweils ein eigenes Paket, sodass kein Dienst den Contract eines anderen neu implementiert.

Docker Compose für die Entwicklung, Kubernetes für den Produktivbetrieb.

Wo es steht

252 Commits, alle von mir, in rund drei Monaten gebaut. Closed Source und privat.