Orbit & Explore search
Back to blog
July 2026 8 min read Personal software Draft

A Minecraft Rescue, Built in Real Time

Two explorers crossed the water in the dark. Zombies arrived. Codex helped me turn our Dockerized family server into a live rescue console before the night was over.

Interactive replay of two Minecraft explorers reunited on a night sea map with full health and flowers

A replay of the final rescue state. The real control panel appears later in the post.

2
Explorers
1
Night voyage
4
Rescue tools
1
Docker container

Last night, our Minecraft server produced one of those family moments that gets funny only after everyone survives it.

The girls set out across the water to find a new island. The trip kept going. The sun dropped. The ocean turned black, the shoreline stayed out of sight, and zombies started appearing whenever they reached land.

Then one of them died.

Minecraft returned her somewhere far from her sister, who was still out in the dark with the supplies and the active zombie problem. I was next to them, but I was also outside the game. I had the server, a browser, and Codex.

The girls were not waiting for a feature request. They were separated in the dark, somewhere across the water, with zombies.

The first rescue

I did not know whether a running Minecraft server could move one player directly to another. I did not look up a command. I simply asked Codex to transport one girl to the other.

Codex inspected the running server, found the mechanism, and did it. They were together again before I had learned how the command worked. That was the cool part. I only needed to describe the outcome.

Only after the rescue worked did I ask Codex to move that capability into the web panel. It built a player-action screen with two selectors, a swap control, and buttons to move either player to the other. A one-time intervention became a feature I can use during the next session without knowing the console command.

That pattern repeated all night. Solve the problem in front of us. Then improve the tool while the need is still clear.

We needed a current map

The server already had BlueMap, which renders an explored Minecraft world in the browser. The map was useful, but the new sea route pushed beyond its freshest tiles. We needed to know where the girls were now, not where the renderer had last caught up.

I asked Codex to make the map useful for the live session. It added a sync action that saves the world and requests fresh BlueMap renders around the online players. It also added live positions, world time, weather, and recent activity to the control panel.

The result felt less like server administration and more like mission control. I could see whether it was still night, update the map around their current positions, and help without taking over the game.

Try the rescue console

Start with two separated explorers, low health, an old map, and several nearby zombies. The four controls replay the interventions from the session.

Health, inventory, and two flowers

Once I could see where they were, the next problem became obvious. Their health was low. I asked Codex to raise it directly. Again, I did not know whether the server could do that or what command it would require. Codex figured it out and restored them.

Then I asked Codex to move that capability into the web panel too. It added live player-state cards for health, food, experience, location, selected item, and inventory. It also added a Restore health action that can bring one player back without changing the rules for everyone.

Then I asked Codex to give each of them a flower.

The flowers changed no server setting. They did not defeat a zombie or reveal the island. They were simply a small message sent through the game: I see you out there. Keep going.

The best feature I shipped all night was two flowers.

The control panel grew around the story

The screenshot below shows the real control panel after the session ended.

Family Minecraft server dashboard with status, connection settings, and world management
The main dashboard manages the container, world settings, allowlist-only access, and backups.

Docker made the foundation surprisingly small

None of this started with me hand-building a Minecraft server. I used the excellent public itzg/minecraft-server Docker image and described the server in one Compose file.

The container runs Minecraft Java 26.2 with Fabric, the BlueMap mod, an allowlist, secure Microsoft profiles, and remote console support. World data lives in a mounted directory. Backups stay outside the container. BlueMap listens only on the local machine and the control panel proxies it behind the same login.

services:
  minecraft:
    image: itzg/minecraft-server:java25
    environment:
      TYPE: "FABRIC"
      VERSION: "26.2"
      MODRINTH_PROJECTS: |
        fabric-api
        bluemap
      ENABLE_RCON: "TRUE"
      ENABLE_WHITELIST: "TRUE"

This is a good way to learn Docker because every abstraction has a visible purpose. The image handles the hard Minecraft setup. Compose records the choices. The volume keeps the family world durable. The panel gives the container a friendly face. Codex can inspect the whole stack when something needs to change.

One request, two timescales

The most surprising part was not that Codex could write the interface. It was that the same conversation worked across two timescales.

1. A problem appearsOne player dies far from the other.
2. Codex acts nowIt uses the server console to reunite them.
3. Codex builds nextIt adds a safe endpoint and panel controls.
4. The tool remembersThe next rescue is one button away.

The direct action kept the play session moving. The code change made the next session easier. I did not need to know the command first. I only needed to know what I wanted to happen.

The server stopped feeling like infrastructure. It became part of the play.

This is what personal software can feel like

I have written before about personal software as small tools shaped around one family, hobby, or workflow. That can sound quiet and practical. Last night it was loud. There were zombies, shouted coordinates, a death, a live map, and two flowers delivered from outside the world.

The software mattered because it stayed close to the moment. Every feature came from something the girls were trying to do. The map was not a dashboard metric. It helped them navigate. Player transport was not an admin trick. It reunited them after a death. Health restoration let the adventure continue. The flowers made them laugh.

It also reinforced the need for guardrails. The server uses an allowlist and Microsoft authentication. The panel requires a password. Maps stay behind the login. Backups happen before risky changes. This post shows no player names, chat, inventory details, or live coordinates.

By the end of the night, both explorers were together, healthy, and holding flowers. I had learned more about Docker, Minecraft administration, BlueMap, and remote console commands. The control panel was better than when the journey began.

Best of all, I did not spend the session hunched over documentation while everyone waited. I described what the moment needed. Codex helped me do it, then helped the server remember how.