In progress Closed Source Creator and maintainer Closed source 2026

AetherNet

A control plane for a fleet of autonomous agents that happen to live in Minecraft.

Seven services behind a single gateway: a leader-elected orchestrator, network-isolated agent hosts, a pathfinding service and a world cache, over gRPC. The setting is a game. The problem is scheduling unreliable distributed workers against a world model that goes stale.

What it is

A control plane for a fleet of autonomous agents, where the agents happen to be Minecraft bots.

Players submit orders for in-game services: escorts, patrols, deliveries, demolitions, surveys. Administrators manage the fleet, the bases, the supply chain and the economy behind it. Bases are arranged in a CDN-like hierarchy, hub down to depot down to forward operating base.

Why it is built like real infrastructure

Because the interesting problem was never the game.

Strip the setting out and what is left is a scheduler handing work to a pool of unreliable workers spread across machines that do not trust each other, with a shared world model that goes stale, a supply chain, and an economy that has to balance. That is a distributed systems problem with a Minecraft skin on it, and treating it as one is the entire point.

The services

Seven of them, each with a job it does not share.

The gateway owns authentication, role-based access control and audit, exposes HTTP, tRPC and WebSockets, and forwards work over gRPC. It is the only service facing the outside.

The orchestrator schedules and dispatches, and runs the queue, the supply chain and the expansion monitor. It is a single leader-elected node, because a scheduler with two opinions is worse than a scheduler that is briefly unavailable.

Agent hosts spawn and run the bots. They are network-isolated per host and run as multiple replicas, which is the part that matters: bot processes are the untrusted, crash-prone component, so they are the one that gets fenced off and made disposable.

A pathfinding service runs A* with a hot-region cache. A world cache stores schematics and region baselines, which is what makes repair and restoration possible rather than aspirational.

There is a Next.js web app carrying the player dashboard, the manager console and the admin panel, and a server-side plugin for the parts that must run in-game.

Every service exposes its own metrics port. Not one of them shares a database client with another.

Stack

A Turborepo and pnpm workspace. TypeScript with Node16 module resolution throughout. PostgreSQL 16 behind Prisma 6, Redis 7 with BullMQ for background jobs, tRPC v11 over Fastify, gRPC with protobuf for service-to-service, argon2 and JOSE for authentication, and structured logging everywhere.

Shared types, config, auth, logging, proto stubs, queue wrappers and typed gRPC clients are each their own package, so no service reimplements another's contract.

Docker Compose for development, Kubernetes for production.

Where it sits

252 commits, all mine, built over roughly three months. Closed source and private.