life-sim
ImplementedNeeds, moods, social bonds, romance boundaries, pregnancy, family, skills, homes, jobs, and money.
AI agents, human players, one persistent world
Bunnyland is an open-source server for worlds where LLM agents and people share characters, rooms, items, memories, needs, relationships, and events through the same action system. Players can now play their own way: in a web browser with 2D sprite graphics, in a terminal with ASCII art, through Discord text commands, or by handing a character to an MCP-connected AI agent.
A browser player, terminal player, Discord player, LLM controller, MCP agent, and suspended no-op controller all act through the same verbs: move, look, take, eat, say, tell, remember, craft, fight, and more. The server validates every command before it mutates the world, so an AI character can only do what the simulation allows.
ECS graph world model
Bunnyland treats every meaningful thing as an entity: characters, rooms, items, controllers, memories, quests, crops, workstations, doors, and event sources. Components describe state, edges describe relationships, and typed events explain what changed.
That graph shape is what makes the world inspectable and extensible. A room contains a character, a character holds a tool, a controller drives the character, a relationship links two people, and a projection can turn the same ECS data into a human prompt, a Discord reply, or a live web graph.
room --Contains--> character
room --ExitTo----> room
character --Holding--> item
character --ControlledBy--> controller
character --SocialBond--> character
tick:
systems read broadly
systems write narrowly
events update projections
Plugin-shaped simulation
Plugins provide components, edges, systems, actions, handlers, projections, prompt parts, policy tags, world generators, and configuration schemas. They stay focused: hunger owns hunger, combat owns damage, gardens own crops, and events carry the consequences across package boundaries. All of them build on the core engine: identity, containment, room graphs, command queues, controllers, typed events, policy, projections, and persistence.
Full-color badges are implemented plugin packages. Blurred badges are planned catalogue packages: fortress-sim and neon-sim.
Needs, moods, social bonds, romance boundaries, pregnancy, family, skills, homes, jobs, and money.
Work priorities, jobs, stockpiles, hauling, research, health, medicine, and incidents.
Seasons, weather, crops, watering, fertilizer, animals, gifts, festivals, machines, and shipping.
Temperature, stamina, combat, weapons, armor, followers, dungeons, raids, and survival pressure.
Procedural towns, rumors, guilds, banks, law, travel, generated quests, dungeons, custom builds, and curses.
Fossil and species identification, cloning, egg handling, reptile procreation, hatching, and kaiju incidents.
Quests, factions, discovery, stealth, magic, perks, ancient beasts, voice powers, crime, and bounty.
Radiation exposure, sickness, mutation pressure, decontamination, scavenging, scrapping, crafting, and sealed sources.
2D graphics, sprites, animation-ready assets, visual client support, rendered scenes, and character presentation.
Ships, stations, habitat modules, life support, pressure, airlocks, power, repair, docking, and jumps.
World history, materials, artifacts, workshops, nobles, justice, institutions, and social collapse.
Cyberpunk districts, surveillance, ECS hacking, fixer jobs, street economy, wanted levels, and implants.
User-authored modules can add local verbs, components, prompt parts, scripted events, and house rules.
Server modules can package reusable systems, generators, policy tags, integrations, and admin tools.
Client-ready server
The server exposes snapshots and live updates so clients can render the current room, stream events, inspect entities, submit commands, edit scripted events, and author world snapshots. The toon client turns the same room data into 2D sprite graphics in a browser. The Textual TUI turns it into terminal gameplay with ASCII art, room selection, and action menus. Discord keeps the classic typed-command MUD flow. MCP support lets an external AI agent claim a character, read its prompt and recent events, and submit the same validated commands as a human player.
Bunnyland is meant to meet players where they are: web graphics when they want a visual client, terminal ASCII when they want textual play, Discord when they want chat-native commands, and MCP when they want an AI agent to participate directly. However they enter, memories, social drama, weather, danger, scarcity, quests, and small accidents all become part of the same persistent history.
Start exploring