Bunnyland

Persistent ECS social sandbox

A shared world for players, admins, scripts, and AI agents.

Bunnyland is an open-source simulation server where rooms, characters, items, memories, needs, relationships, quests, and controllers all live in one ECS graph. Human players and LLM-driven characters use the same command system, while the web tools let you inspect, play, generate, edit, and script the world from a browser.

Clients and editors

Choose the surface that matches the job.

Every web tool can connect to the same running server. Admin tools may prompt for credentials only when they touch protected admin routes.

Inspector

Graph client for browsing snapshots or a live world. It shows rooms, regions, social links, quests, components, relationships, recent movement, and streamed events.

Audience developers, admins, and curious players.
Open Inspector

Toon Client

Room-focused play client. Connect live, pick or claim a character, navigate through doors, inspect the room, and submit available actions.

Audience players.
Open Toon Client

World Editor

Snapshot and live-world editor for entities, components, edges, fragments, saves, runtime pause/resume, and LLM-assisted patch generation.

Audience admins and world builders.
Open World Editor

World Generator

Admin workflow for replacing or resetting the live world with an enabled generator, a seed or prompt, and a room budget.

Audience admins.
Open Generator

Script Editor

Standalone script JSON authoring tool. Load a snapshot for entity context, edit trigger/action blocks, validate, copy, and download script definitions.

Audience script authors and developers.
Open Script Editor

Getting started

Player and admin paths.

Start as a player

Ask for the server URL, then choose your input surface. The web Toon Client is the browser option: click Connect Live, select a character, then claim it if needed. Discord lets you play through text commands in a server channel, and the Textual TUI gives you a terminal ASCII UI with a classic MUD feel. If no playable character is available, ask an admin to create or unsuspend one.

Authenticate as an admin

Open the World Editor or World Generator and connect to the server. The first protected admin request returns 401, then the web tool asks for the admin username and password and sends them as a Basic Authorization header for later admin requests.

Resources

Docs and project links.