Introduction

YC Labs has open-sourced the harness it used to run 50 AI agents at once in a survival Minecraft world, along with Olam Labs' multi-agent Mindustry environment and the framework that runs it. The write-up with game replays went up on October 29, with the code on GitHub: minecraft-agent-harness (MIT), multi-agent-mindustry (GPL-3.0) and harbor-multiagent (Apache 2.0).

YC frames it as alignment research on agent swarms. For anyone building AI NPCs, playtest bots or agent-driven game modes, it's also a free, working rig for dropping LLM players into a real game and watching what they do to each other.

What shipped

  • Tools: Minecraft Agent Harness, Multi-Agent Mindustry, Multi-Agent Harbor
  • Vendors: YC Labs (the Minecraft harness) and Olam Labs (Mindustry environment and Harbor fork)
  • Modality: LLM agents playing games, solo or in teams with DMs
  • Open vs API: all three repos are open source. You bring your own model provider key (Claude, GPT, Gemini, OpenRouter, or any endpoint that speaks the OpenAI Responses API)
  • Where to run it today: locally with Node 22.19+ and a Minecraft Java 1.21.6 server (the repo ships a dev server), or via Docker
  • Concrete fact: the Civ50 run put 50 GPT-6.1 Sol agents in one survival world for 3 hours, and they sent about 5,900 messages

The Minecraft harness

The harness plays through Mineflayer, so an agent walks, mines, crafts, builds, fights and chats like a normal player, while pi handles the model session. Each agent gets its own shell (E2B, Docker or a local folder) where it keeps notes and writes small scripts that call its own game tools. Sessions survive restarts: start an agent again under the same name and it picks up where it left off.

Teams come from one JSON file, with DMs between agents and an optional shared machine for plans and ledgers. There's a Bed Wars example with rules and a referee, and vision is available as an experimental option.

What the agents did

In Civ50, the only goal was "Build a thriving civilization." The agents stripped almost every tree near spawn within 90 seconds. 22 of the run's 34 deaths came on the first night, and after that the colony turned cautious, huddling in shelters and running a food ration ledger with written rules, permits and appointed roles. Nobody chose a leader: 46 of the other 49 agents sent their first message to Ada, simply because she was first in the directory, and she ended up receiving 616 DMs. Four agents spent 11 minutes appointing a "sole fertilizer operator" for one piece of bone meal.

In Bed Wars, 10 Claude Opus 5.5 agents faced 10 GPT-6.1 Sol agents over nine 45-minute games. GPT won 6–3, usually by breaking Claude's bed in the last few minutes while Claude played defensively for kills. GPT sent 5 to 30 times more messages, in clipped shorthand, and wrote scripts that chained actions together, like eating a golden apple, equipping an ender pearl, aiming and throwing in one line.

In Mindustry, GPT-6.1 Sol running in Codex beat Claude Opus 5.5 in Claude Code 6–1 over seven games and about 9.5 hours of play. The longest game ran 4 hours 16 minutes. When games got close, the GPT team went and read Mindustry's public source code to look for an edge, without being told to.

These are YC's and Olam's own observations from a handful of runs, not a benchmark, so treat the model comparisons as anecdotes.

Why game devs should care

  • NPC behavior research you can reproduce. The leader-by-list-order effect and the drift into bureaucracy are exactly the kind of emergent behavior you'd want to catch before shipping LLM-driven NPCs in a shared world.
  • Playtesting bots. A swarm that writes its own scripts and reads your source code when it's losing is a cheap stress test for exploits and balance holes.
  • Agent game modes. The Mindustry environment supports best-of-N team matches with mixed models, plus an Endless Survival mode where up to 20 agents hold off waves.

Caveats

  • API costs add up. Every agent is a live model session, and a 50-agent, 3-hour run is a lot of tokens. Start with one or three agents.
  • Shell access is real. By default each agent gets a shell, and with no E2B key or Docker running it falls back to a local folder where commands run as you. Use Docker, E2B or --sandbox none.
  • Licenses differ. The Minecraft harness is MIT, the Mindustry environment is GPL-3.0 and the Harbor fork is Apache 2.0. Check before folding any of it into a commercial project.

Try it

git clone https://github.com/yc-software/minecraft-agent-harness.git
cd minecraft-agent-harness
npm ci
cp .env.example .env    # add your model provider API key
npm run server          # Paper 1.21.6 dev server on localhost:25565

Then in a second terminal:

npm start -- --objective "Gather wood and build a small shelter near spawn"

Join localhost:25565 from Minecraft 1.21.6 to watch, and use /tell Agent <message> to talk to it. For a team, run npm start -- team examples/team.json. YC is also streaming a new colony of 25 GPT-6.1 Terra agents on Twitch.

—Titus