Show HN: Herobrine – Minecraft buddies using jev A developer released Herobrine, an open-source Minecraft agent system that spawns real players via Mineflayer in vanilla worlds and drives every action through TypeSafe's JEV choice model, with a separate planner model (Claude Opus 5.5 or GPT-6 Astra) handling natural-language instructions. Herobrine runs either as an MCP server inside Claude Code or Codex or as a CLI (`herobrine up --world play`, `herobrine spawn --persona "my bodyguard"`), and each agent carries editable persona, long_term_goal and task fields with completion verified by game state rather than model declaration. It requires Node 20+ and reuses the user's existing Claude Code or Codex subscription, so no extra API key is needed. Minecraft agents that do whatever you ask . Each agent is a real player Mineflayer in a vanilla world; TypeSafe's JEV model picks every action it takes, and a planner model Claude Opus 5.5 or GPT-6 Astra, on the subscription you already have understands what you say and speaks for it. Use it two ways: - As an MCP server inside Claude Code or Codex — "start a world and spawn a bodyguard for me". - As a CLI — herobrine up --world play , herobrine spawn --persona "my bodyguard" , herobrine tell Cedar "bring me 5 logs" . Both drive the same core; the CLI also works against the MCP instance while Claude Code has it open. Agents have no fixed roles. Each one has three free-text fields, and the user can change any of them at any time: | Field | Examples | |---|---| | persona : who to be and how to behave | "my bodyguard", "a chill builder who plays alongside me", "a grumpy dwarf miner who never leaves the caves" | | long term goal : an objective it works toward over time | "get us full iron gear", "build a base by the river" | | task : what to do right now | "collect 10 logs", "make a stone pickaxe", "come here", "bring me 5 cobblestone" | With no task, the agent picks its own next short-term task based on its persona and long-term goal. Tasks end as done or stuck . Each agent gets a short single-word Minecraft-style name e.g. Flake , Basalt , Cedar when it spawns. Names are never reused in the same world. Two models with clearly separated jobs: - System Two — the planner src/planner.mjs : a full language model that turns what people say into a typed task , reviews progress, picks the next task from the persona and long-term goal, and writes every chat reply. It runs through the host you already use, so no extra key is needed: - Claude Code → an ACP session claude-code-acp driving your installed claude with Opus 5.5 - Codex → codex mcp-server codex / codex-reply threads with GPT-6 Astra - or an API key ANTHROPIC API KEY , OPENROUTER API KEY , OPENAI API KEY One persistent session per agent, so it remembers the conversation. - System One — JEV src/jev.mjs : TypeSafe's choice model. Once a second it picks one concrete action from a menu built from what the agent can see. It never sees free text. player chat / dashboard / MCP text ──▶ planner ──▶ TaskSpec {kind, items, recipient, location, entity, until} + reply │ world memory ◀── observe ──▶ action menu ──▶ JEV picks one ──▶ Mineflayer executes bounded │ predicates verify completion inventory / delivered / arrived / killed / built planner reviews "judged"/"ongoing" tasks, budgets and repeated failures - Typed tasks src/tasks.mjs : completion is verified by the game state, not declared by a model. items inventory , delivered hand-over events , arrived distance , killed , built , ongoing follow/guard , judged planner reviews it . Item matches are exact ids, globs log or categories food , tool , building … resolved from the game's own registry. - Prerequisites src/actions.mjs : for "make a stone pickaxe" the missing chain logs → planks → table → sticks → wooden pickaxe → cobblestone is worked out from Minecraft's recipe data and shown to JEV as the next step. - World memory src/memory.mjs : last-seen player positions, known tables/furnaces/chests/beds/ores, visited areas, home. Every action can target something out of view "walk to where satuke was last seen", "go back to the furnace" . - Chat: Cedar