Skip to main content

world.json

world.json identifies the world and provides its top-level presentation and initial settings.

{
"id": "9d56bc2e-83ac-4eb0-b7bf-fac48772a6ef",
"name": "Blackwater Observatory",
"description": "A coastal town watches a silent observatory above the cliffs.",
"author": {"name": "Example Author", "url": "https://example.com"},
"metadata": {"tags": ["mystery", "historical"]},
"opening_message": [
{"type": "narration", "text": "Rain moves in from the sea."},
{"type": "utterance", "character": "mara", "text": "We should go before dark."}
],
"alternate_openings": [{"title": "Arriving late", "text": "You reach the observatory after dark."}],
"narration_voice": "narrator",
"variables": {"storm_warning": false}
}
FieldRequirementMeaning
idStable; generated if absentWorld identity across folder moves
nameRequiredDisplay name
descriptionOptionalPlayer-facing summary
author.nameRequired when author existsAttribution
author.urlOptionalAttribution link
metadata.tagsOptional listCatalogue filtering and presentation
opening_messageOptionalText or ordered narration/utterance parts
alternate_openingsOptional listOther first messages the player may choose when starting a session: {title, text, character?}, plain narration, at most 30 of at most 20,000 characters; a missing title is the first words of the text
narration_voiceOptionalInitial TTS voice for narration
presetOptionalName of a preset in the person's library that sessions of this world start with unless one is chosen; see the prompt system specification
lorebooksOptional listNames of lorebooks in the person's library that sessions of this world start with unless the start dialog chooses others; see lorebooks
variablesOptional objectInitial values for world-scoped variables
toolsOptional objectOptional tools switched on or off for the world's agents, by kind of agent: {"gameMaster": {"roll_dice": false}}. A story starts from it, and a choice made at the start is added on top. Names this version does not know are kept and have no effect

The start dialog offers the alternate openings beside the world's own. An opening with a character (the id of a playable character) is offered only to a player who takes that character, and a start that names it for anyone else is refused; a character that is not a playable character of the world refuses the start with the problem. A session started from one stores it as its first finished turn like any other opening.

An utterance's character must name a defined character. Invalid opening parts prevent session creation. The opening is stored as the first finished chat turn without a model call.

Older export manifests and separate author.json files are not part of this native format.