PuM — System Architecture

June 24, 2026


2026-06-24 — current state

PuM (Player You Mean) is a Minecraft agent that receives the game screen and outputs keyboard + mouse events — no privileged client-side access at inference time. The active research focus is the perception module: predicting a dense 32×32×32 voxel grid of semantic block types from a single 640×360 RGB frame.

The pipeline spans four machines. Data flows from clients → Hopper → Furnace → training. Baselines (VPT, Steve-1, ACT) run headlessly on the same GPU server via MineStudio.

flowchart TD
    Git(("Git"))
    Tidbits(("tidbits.vivime.info"))

    subgraph MAC["MAC"]
        ClaudeDev["Claude Dev Assistant"]
    end
    ClaudeDev -->|"commit / push"| Git
    ClaudeDev -->|"publish results"| Tidbits

    subgraph WINDOWS["WINDOWS"]
        WinClient["Player client
Blockscope mod + ReplayMod · humans"] end subgraph VPS["VPS (mc.vivime.info:25566)"] subgraph Paper["Paper 1.19.4"] subgraph Lodestone["Lodestone plugin"] SessionMgr["SessionManager
(world assign, pairing, mirror)"] end end WorldPool["World pool
(pre-staged copies)"] McConverter["mc_converter
(1.8→1.19.4, no DFU)"] WorldGenNode["World generator
(void-scatter, configurable)"] Lodestone <-->|"draw / refill"| WorldPool McConverter --> WorldPool WorldGenNode --> WorldPool end subgraph BREV["BREV (GPU server — A100s)"] subgraph Camera["Camera container"] BlockscopeMod["Blockscope mod
(record-only)"] ReplayModNode["ReplayMod"] end Controller["Controller
(Mineflayer bot)"] Hopper["Hopper
(FastAPI :9000)"] subgraph DATA["/data/vvm33"] Raw["BLOCKSCOPE_DATA/
raw sessions"] Smelted["SMELTED_DATA/
per-tick NPZs"] Weights["pum_checkpoints/
model weights"] BaselineData["act_training_data/
contractor demos"] end subgraph FURNACE["Furnace (pipeline.labeler)"] Baker["Baker
(one-time, reads MC jar)"] Labeler["Labeler
(replays .mcpr + ticks.jsonl)"] Renderer["Renderer
(ModernGL GPU)"] Baker -->|"geometry + texture cache"| Renderer Labeler -->|"world grid + camera pose"| Renderer end subgraph TRAIN["Training (train.sh)"] ModelCode["viblock5
(SigLIP + voxel slots)"] end subgraph BASELINES["Baselines (MineStudio)"] VPTBaseline["VPT (BC)"] Steve1Baseline["Steve-1"] ACTBaseline["ACT (BC)
(frozen VPT-2x + transformer head)"] MCUEval["MCU eval
(10 tasks, inventory check)"] VPTBaseline --> MCUEval Steve1Baseline --> MCUEval ACTBaseline --> MCUEval BaselineData -->|"task-filtered demos"| ACTBaseline end GPUs[("GPUs")] BlockscopeMod -->|"ticks / video"| Hopper ReplayModNode -->|".mcpr"| Hopper Hopper -->|"write"| Raw Raw -->|"read"| Labeler Renderer -->|"write"| Smelted Smelted -->|"read"| ModelCode ModelCode -->|"write"| Weights Camera -.->|"uses"| GPUs Renderer -.->|"uses"| GPUs ModelCode -.->|"uses"| GPUs BASELINES -.->|"uses"| GPUs end Controller <-->|"connect ctrl_id"| SessionMgr Camera <-->|"connect cam_id"| SessionMgr WinClient <-->|"connect + world assign"| SessionMgr WinClient -->|"uploads (HTTP)"| Hopper wandb(("wandb")) ModelCode -->|"experiment runs"| wandb MCUEval -->|"result table + videos"| Tidbits

Components

MAC
Dev machine. All builds run here (Lodestone, Blockscope mod, mc_converter). Claude Code assistant. Deploys jars to VPS + Brev.
VPS
Paper 1.19.4 server at mc.vivime.info:25566. Lodestone plugin manages world assignment, controller/camera pairing, and session lifecycle. 35-world map library.
WINDOWS
Human data collection PC. Blockscope mod + ReplayMod + Baritone. Uploads to Hopper.
BREV
Shared A100 GPU server. Runs headless Camera containers (Docker + Xvfb + VirtualGL), Mineflayer controller bots, Hopper upload API, Furnace labeling pipeline, PuM training, and MineStudio baseline evaluation.
Hopper
FastAPI server on Brev (:9000). Receives streamed video, ticks.jsonl, frame_mapping.jsonl, and .mcpr from all clients.
Furnace
GPU OpenGL pipeline (ModernGL). Replays .mcpr to reconstruct world state per tick, ray-casts visibility masks, outputs per-tick NPZs (32³ block grid + visibility + pose).
viblock5
Current active experiment. SigLIP-B/16 with 8³ voxel slot tokens injected at layer 10, decoded to 32³ via transposed convolutions. Visibility-masked loss.
Baselines
MineStudio headless eval: VPT (BC, 26/100), Steve-1 (45/100), ACT (BC on task-filtered contractor demos, 19/80). MCU block tasks, programmatic inventory check. Results at pum-baselines.