akash-kamat/jev-craft

A Minecraft survival bot that thinks with Jev — TypeSafe's System One AI model

JavaScript

0

6 commits

updated Sep 19, 2026

See the code

See what people are saying (1)

SourceMessageScoreDate

JEV plays minecraft in realtime (sort of) (r/SideProject)

I made typesafeAI's new model Jev play Minecraft after i saw how well it played doom in the demo. Jev completely bypasses traditional LLMs text generation that makes it so much capable at the fraction of cost and time. How it works: I use mineflayer library to setup a bot that join a minecraft…

3

Sep 20, 2026

README

⛏️ jev-craft

A Minecraft survival bot that thinks with Jev

License: MIT Node.js TypeSafe Mineflayer

jev-craft is a Minecraft survival bot powered by JevTypeSafe's System One AI model — instead of hardcoded rules. It perceives the world, feels emotions, remembers the past, and makes real decisions every 600ms.



Why System One models change everything

Every Minecraft bot ever built is a state machine: if hostile nearby → flee. That works until reality gets complicated — what if you're hungry and being chased and it's night and you just died nearby? Priorities conflict, and hardcoded rules break.

System One models from TypeSafe are a fundamentally different kind of AI. Named after Kahneman's Thinking, Fast and Slow, they make fast, structured decisions that software can use directly — returning typed answers and calibrated probabilities instead of generating text.

Traditional LLMsSystem One (Jev)
OutputFree-form text you parseTyped values your code uses directly
UncertaintyRarely expressedCalibrated probabilities, always
LatencySeconds~100ms — fast enough for real-time
Control flowModel drives itself (agents)Your code drives; model supplies judgment
FailuresCompound across loopsIsolated to the specific question

The key insight: code owns the workflow, Jev supplies the common sense. This isn't an AI agent running loose — it's a primitive you call exactly where deterministic logic falls short. Every question returns a probability distribution over your defined options, so your code can act, escalate, or fall back with full confidence information.

That's what makes jev-craft possible: a bot that reads a complex, ambiguous game situation and makes a sensible call in under 100ms — not because someone wrote every if branch, but because Jev understands the situation.


How it uses Jev

Every reactive tick (600ms), jev-craft sends its current world state to Jev and gets back four typed answers in a single parallel API call:

QuestionPrimitiveWhat it decides
threat_levelScore (5 levels)How dangerous is the situation right now?
actionChoiceFight, flee, eat, work on goal, or look around
should_eatNoul (probability)Is now a good time to eat?
flee_directionChoiceWhich direction to run if needed

Every tactical tick (10s), it asks Jev to pick a goal from 13 options, assess urgency, and choose an approach — all in one more parallel call. When a goal gets stuck, Jev decides whether to retry or abandon it entirely.

No parsing. No prompt engineering. Just typed answers the bot acts on directly.


Features

  • AI-driven decisions — no hardcoded priority rules; Jev reads the full situation and decides
  • Emotional state — four live emotions (fear, satisfaction, curiosity, urgency) that shape every question sent to Jev
  • Persistent memory — remembers shelter, crafting stations, furnaces, death locations, animal areas, and player preferences across restarts
  • Selective recall — relevant memories are surfaced contextually each tick (near a death site? Jev is warned)
  • Player commands — type anything in chat; Jev reads it and picks the matching goal sequence
  • Failure awareness — tracks per-step failures, asks Jev whether to retry or abandon a stuck goal
  • Full progression chain — 13 goals from punching trees to iron tools, with dependency awareness

How it works

Every 600ms (reactive loop)
  ┌─────────────────────────────────────────────────────────┐
  │  Extract game state  →  Update emotions  →  Ask Jev     │
  │                                                         │
  │  State: health, food, hostiles, position, time, goal    │
  │  Emotions: fear, satisfaction, curiosity, urgency       │
  │  Memory: recalled death sites, resources, shelter       │
  │                                                         │
  │  Jev answers (parallel):                                │
  │    threat_level · action · should_eat · flee_direction  │
  │                                                         │
  │  Execute: fight / flee / eat / goal step / look around  │
  └─────────────────────────────────────────────────────────┘

Every 10s (tactical loop)
  ┌─────────────────────────────────────────────────────────┐
  │  Build inventory + memory snapshot  →  Ask Jev          │
  │                                                         │
  │  Jev answers (parallel):                                │
  │    goal · urgency · approach                            │
  │                                                         │
  │  Switch goal if urgency >= 2.0 or player commanded      │
  └─────────────────────────────────────────────────────────┘

Goal progression

gather_wood → craft_tools → mine_stone → upgrade_tools ──→ mine_iron → smelt_iron → craft_iron_tools
                                    └──→ craft_furnace ──→ cook_food
                                                     └──→ smelt_iron

+ get_food · build_shelter · go_to_shelter · explore

Emotional system

Four continuous emotions (0–1) decay each tick and are injected into every Jev question as context:

EmotionSpikes whenInfluences
fearDamage, hostiles, low HP, night, near death sitesfight/flee thresholds
satisfactionGoal completed, healing, eatinggoal persistence
curiosityIdle in same chunk, entering new areasexplore tendency
urgencyLow food/health, dusk, player chatgoal switching

The dominant emotion becomes a label — terrified, anxious, proud, content, eager, curious, desperate, focused, or calm — sent with every Jev question.


Getting started

Prerequisites

  • Node.js 18+ (or Bun)
  • A running Minecraft server (local LAN works fine)
  • A TypeSafe API key

Install

git clone https://github.com/akash-kamat/jev-craft.git
cd jev-craft
npm install

Configure

cp .env.example .env

Edit .env:

TYPESAFE_API_KEY=your_api_key_here
MC_HOST=localhost
MC_PORT=25565        # LAN port shown in chat after "Open to LAN"
MC_USERNAME=JevBot

Run

npm start
# or for hot-reload during development:
npm run dev

The bot connects, spawns, and immediately starts making decisions. You'll see a live log of its state, emotions, goals, and every action it takes.


Chat commands

Type in Minecraft chat to control the bot in real time:

CommandEffect
statusBot replies with current goal, HP, food, and emotional state
get woodJev interprets it and switches to gather_wood
I need ironJev recognizes the dependency chain and starts working toward iron tools
autoCancel the current manual goal and return to autonomous mode

Any natural language works — Jev reads it and picks the best matching goal.


Project structure

src/
├── index.js        # Bot setup, event handlers, loop drivers
├── config.js       # Server connection, model, intervals, thresholds
├── state.js        # extractState() — game world snapshot each tick
├── decisions.js    # Reactive Jev call — threat + action + eat + flee
├── tactics.js      # Tactical Jev call — goal selection + step execution
├── goals.js        # All 13 goals with steps, canRun guards, isDone checks
├── actions.js      # doFight / doFlee / doEat / doLookAround
├── mind.js         # Emotional state, event log, selective memory recall
└── memory.js       # Persistent bot-memory.json — locations, deaths, prefs

Roadmap

  • Phase 1 — Reactive survival (fight, flee, eat, look around)
  • Phase 2 — Tactical goals + player commands + persistent memory
  • Consciousness system — emotions, event log, selective recall
  • Phase 3 — Universal primitives: let Jev sequence atomic actions instead of hardcoded steps
  • Smarter mining — branch pattern, torch placement, gravel handling
  • Async smelting — start furnace and do other things while waiting
  • Jev-driven emotion updates — ask Jev how the bot should feel, not just formulas
  • Emotional expression — bot says things in chat based on its emotional state

Built with


License

MIT

Contributors

akash-kamat

6 commits

akash-kamat/jev-craft

A Minecraft survival bot that thinks with Jev — TypeSafe's System One AI model

JavaScript

0

6 commits

updated Sep 19, 2026

See the code

See what people are saying (1)

SourceMessageScoreDate

JEV plays minecraft in realtime (sort of) (r/SideProject)

I made typesafeAI's new model Jev play Minecraft after i saw how well it played doom in the demo. Jev completely bypasses traditional LLMs text generation that makes it so much capable at the fraction of cost and time. How it works: I use mineflayer library to setup a bot that join a minecraft…

3

Sep 20, 2026

README

⛏️ jev-craft

A Minecraft survival bot that thinks with Jev

License: MIT Node.js TypeSafe Mineflayer

jev-craft is a Minecraft survival bot powered by JevTypeSafe's System One AI model — instead of hardcoded rules. It perceives the world, feels emotions, remembers the past, and makes real decisions every 600ms.



Why System One models change everything

Every Minecraft bot ever built is a state machine: if hostile nearby → flee. That works until reality gets complicated — what if you're hungry and being chased and it's night and you just died nearby? Priorities conflict, and hardcoded rules break.

System One models from TypeSafe are a fundamentally different kind of AI. Named after Kahneman's Thinking, Fast and Slow, they make fast, structured decisions that software can use directly — returning typed answers and calibrated probabilities instead of generating text.

Traditional LLMsSystem One (Jev)
OutputFree-form text you parseTyped values your code uses directly
UncertaintyRarely expressedCalibrated probabilities, always
LatencySeconds~100ms — fast enough for real-time
Control flowModel drives itself (agents)Your code drives; model supplies judgment
FailuresCompound across loopsIsolated to the specific question

The key insight: code owns the workflow, Jev supplies the common sense. This isn't an AI agent running loose — it's a primitive you call exactly where deterministic logic falls short. Every question returns a probability distribution over your defined options, so your code can act, escalate, or fall back with full confidence information.

That's what makes jev-craft possible: a bot that reads a complex, ambiguous game situation and makes a sensible call in under 100ms — not because someone wrote every if branch, but because Jev understands the situation.


How it uses Jev

Every reactive tick (600ms), jev-craft sends its current world state to Jev and gets back four typed answers in a single parallel API call:

QuestionPrimitiveWhat it decides
threat_levelScore (5 levels)How dangerous is the situation right now?
actionChoiceFight, flee, eat, work on goal, or look around
should_eatNoul (probability)Is now a good time to eat?
flee_directionChoiceWhich direction to run if needed

Every tactical tick (10s), it asks Jev to pick a goal from 13 options, assess urgency, and choose an approach — all in one more parallel call. When a goal gets stuck, Jev decides whether to retry or abandon it entirely.

No parsing. No prompt engineering. Just typed answers the bot acts on directly.


Features

  • AI-driven decisions — no hardcoded priority rules; Jev reads the full situation and decides
  • Emotional state — four live emotions (fear, satisfaction, curiosity, urgency) that shape every question sent to Jev
  • Persistent memory — remembers shelter, crafting stations, furnaces, death locations, animal areas, and player preferences across restarts
  • Selective recall — relevant memories are surfaced contextually each tick (near a death site? Jev is warned)
  • Player commands — type anything in chat; Jev reads it and picks the matching goal sequence
  • Failure awareness — tracks per-step failures, asks Jev whether to retry or abandon a stuck goal
  • Full progression chain — 13 goals from punching trees to iron tools, with dependency awareness

How it works

Every 600ms (reactive loop)
  ┌─────────────────────────────────────────────────────────┐
  │  Extract game state  →  Update emotions  →  Ask Jev     │
  │                                                         │
  │  State: health, food, hostiles, position, time, goal    │
  │  Emotions: fear, satisfaction, curiosity, urgency       │
  │  Memory: recalled death sites, resources, shelter       │
  │                                                         │
  │  Jev answers (parallel):                                │
  │    threat_level · action · should_eat · flee_direction  │
  │                                                         │
  │  Execute: fight / flee / eat / goal step / look around  │
  └─────────────────────────────────────────────────────────┘

Every 10s (tactical loop)
  ┌─────────────────────────────────────────────────────────┐
  │  Build inventory + memory snapshot  →  Ask Jev          │
  │                                                         │
  │  Jev answers (parallel):                                │
  │    goal · urgency · approach                            │
  │                                                         │
  │  Switch goal if urgency >= 2.0 or player commanded      │
  └─────────────────────────────────────────────────────────┘

Goal progression

gather_wood → craft_tools → mine_stone → upgrade_tools ──→ mine_iron → smelt_iron → craft_iron_tools
                                    └──→ craft_furnace ──→ cook_food
                                                     └──→ smelt_iron

+ get_food · build_shelter · go_to_shelter · explore

Emotional system

Four continuous emotions (0–1) decay each tick and are injected into every Jev question as context:

EmotionSpikes whenInfluences
fearDamage, hostiles, low HP, night, near death sitesfight/flee thresholds
satisfactionGoal completed, healing, eatinggoal persistence
curiosityIdle in same chunk, entering new areasexplore tendency
urgencyLow food/health, dusk, player chatgoal switching

The dominant emotion becomes a label — terrified, anxious, proud, content, eager, curious, desperate, focused, or calm — sent with every Jev question.


Getting started

Prerequisites

  • Node.js 18+ (or Bun)
  • A running Minecraft server (local LAN works fine)
  • A TypeSafe API key

Install

git clone https://github.com/akash-kamat/jev-craft.git
cd jev-craft
npm install

Configure

cp .env.example .env

Edit .env:

TYPESAFE_API_KEY=your_api_key_here
MC_HOST=localhost
MC_PORT=25565        # LAN port shown in chat after "Open to LAN"
MC_USERNAME=JevBot

Run

npm start
# or for hot-reload during development:
npm run dev

The bot connects, spawns, and immediately starts making decisions. You'll see a live log of its state, emotions, goals, and every action it takes.


Chat commands

Type in Minecraft chat to control the bot in real time:

CommandEffect
statusBot replies with current goal, HP, food, and emotional state
get woodJev interprets it and switches to gather_wood
I need ironJev recognizes the dependency chain and starts working toward iron tools
autoCancel the current manual goal and return to autonomous mode

Any natural language works — Jev reads it and picks the best matching goal.


Project structure

src/
├── index.js        # Bot setup, event handlers, loop drivers
├── config.js       # Server connection, model, intervals, thresholds
├── state.js        # extractState() — game world snapshot each tick
├── decisions.js    # Reactive Jev call — threat + action + eat + flee
├── tactics.js      # Tactical Jev call — goal selection + step execution
├── goals.js        # All 13 goals with steps, canRun guards, isDone checks
├── actions.js      # doFight / doFlee / doEat / doLookAround
├── mind.js         # Emotional state, event log, selective memory recall
└── memory.js       # Persistent bot-memory.json — locations, deaths, prefs

Roadmap

  • Phase 1 — Reactive survival (fight, flee, eat, look around)
  • Phase 2 — Tactical goals + player commands + persistent memory
  • Consciousness system — emotions, event log, selective recall
  • Phase 3 — Universal primitives: let Jev sequence atomic actions instead of hardcoded steps
  • Smarter mining — branch pattern, torch placement, gravel handling
  • Async smelting — start furnace and do other things while waiting
  • Jev-driven emotion updates — ask Jev how the bot should feel, not just formulas
  • Emotional expression — bot says things in chat based on its emotional state

Built with


License

MIT

Contributors

akash-kamat

6 commits

Languages

JavaScript

100.0%