Demosyne

Scenarios

The versioned ScenarioDefinition wire, connector references, and every generated object field.

Contract identity

This reference is generated from the released scenario.schema.json bytes the Terrarium SDK ships. It documents schema version 1 with SHA-256 6b007c8f5151627ee95720d56a46d24c3636e77df8075eefc6b9972b826bc488. schema_version travels inside the document, so a scenario written against this version keeps its meaning as the contract grows.

Minimal typed document

A scenario is a closed object. Unknown fields fail validation; omitted optional fields take the generated defaults shown below.

{
  "agents": [
    {
      "location": "the square",
      "name": "Ana"
    }
  ],
  "locations": [
    {
      "name": "the square"
    }
  ],
  "name": "A short world",
  "schema_version": 1
}

Connector references

A brain selects a registered route by kind, connector id, and API mode. The same reference shape is used by agent, physics, resident, and seat brains. Registration records are documented under HostedConnector and CustomerConnector.

Scenario documents contain only public references and simulation law. Credentials, request headers, transport policy, and connector endpoints do not belong in a ScenarioDefinition. Customer endpoints and relay audiences live on separately registered customer connector records.

VocabularyValues
Connector kindshosted, customer
Connector protocolsdemosyne.hosted.v1, demosyne.signed-invocation.v1
Model API modesopenai.responses.v1, openai.chat.v1

Use Characters for brain configuration.

ScenarioDefinition fields

ScenarioDefinition fields
FieldType and constraints
agent_brainOptionalBrainSpec | nullDefault nullNo additional bounds
agentsOptionalarray<PersonSpec> | nullDefault nullmaximum items 100000
broadcastsOptionalarray<ScheduledBroadcastSpec>No defaultmaximum items 100000
channelsOptionalarray<string>No defaultmaximum items 10000; items: minimum length 1; items: maximum length 200
character_cuesOptionalarray<CharacterCueSpec>No defaultmaximum items 100000
day_end_hourOptionalinteger | nullDefault nullminimum 1; maximum 24
day_start_hourOptionalinteger | nullDefault nullminimum 0; maximum 23
eventsOptionalarray<EventSpec>No defaultmaximum items 100000
locationsOptionalarray<LocationSpec>No defaultmaximum items 100000
max_conversation_turnsOptionalinteger | nullDefault nullminimum 1; maximum 1000
nameOptionalstring | nullDefault nullminimum length 1; maximum length 200
num_daysOptionalinteger | nullDefault nullminimum 1; maximum 3650
originOptionalobject<string, any JSON value> | nullDefault nullNo additional bounds
physics_brainOptionalBrainSpec | nullDefault nullNo additional bounds
physics_instructionsOptionalstring | nullDefault nullminimum length 1; maximum length 1000000
presentationOptionalobject<string, any JSON value> | nullDefault nullNo additional bounds
probesOptionalarray<ProbeSpec>No defaultmaximum items 10000
schema_versionOptional1Default 1constant 1
seatsOptionalarray<PersonSpec>No defaultmaximum items 100000
seedOptionalinteger | nullDefault nullNo additional bounds
start_dateOptionalstring | nullDefault nullpattern ^\d{4}-\d{2}-\d{2}$
ticks_per_dayOptionalinteger | nullDefault nullminimum 1; maximum 1440

Object definitions

BrainSpec

BrainSpec fields
FieldType and constraints
connectorOptionalHostedConnectorRef | CustomerConnectorRef | nullDefault nullNo additional bounds
max_tokensOptional; deprecatedinteger | nullDefault nullminimum 1; maximum 1000000
openai_modelOptional; deprecatedstring | nullDefault nullminimum length 1; maximum length 200
openai_service_tierOptional; deprecatedstring | nullDefault nullminimum length 1; maximum length 64
reasoning_effortOptionalstring | nullDefault nullminimum length 1; maximum length 32
tool_choiceOptionalstring | nullDefault nullminimum length 1; maximum length 128

CharacterCueSpec

CharacterCueSpec fields
FieldType and constraints
datesOptionalarray<string>No defaultitems: format date
excludeOptionalarray<string>No defaultNo additional bounds
nameRequiredstringNo defaultminimum length 1; maximum length 200
targetsOptionalarray<string>No defaultNo additional bounds
textRequiredstringNo defaultminimum length 1; maximum length 1000000
timesRequiredarray<string>No defaultminimum items 1; items: format time

ConnectorCapabilities

ConnectorCapabilities fields
FieldType and constraints
max_context_tokensRequiredintegerNo defaultminimum 1; maximum 10000000
max_output_tokensRequiredintegerNo defaultminimum 1; maximum 1000000
reasoningRequiredbooleanNo defaultNo additional bounds
structured_outputsRequiredbooleanNo defaultNo additional bounds
toolsRequiredbooleanNo defaultNo additional bounds

CustomerConnector

CustomerConnector fields
FieldType and constraints
api_modesRequiredarray<ModelApi>No defaultminimum items 1; maximum items 2
audienceRequiredstringNo defaultminimum length 1; maximum length 512
capabilitiesRequiredConnectorCapabilitiesNo defaultNo additional bounds
enabledOptionalbooleanDefault trueNo additional bounds
endpointRequiredstringNo defaultminimum length 1; maximum length 2083; format uri
generation_defaultsOptionalGenerationDefaultsNo defaultNo additional bounds
idRequiredstringNo defaultminimum length 1; maximum length 128
kindOptional"customer"Default "customer"constant "customer"
modelRequiredstringNo defaultminimum length 1; maximum length 200
nameRequiredstringNo defaultminimum length 1; maximum length 200
organization_idRequiredstringNo defaultformat uuid
protocolOptional"demosyne.signed-invocation.v1"Default "demosyne.signed-invocation.v1"constant "demosyne.signed-invocation.v1"
schema_versionOptional1Default 1constant 1

CustomerConnectorRef

CustomerConnectorRef fields
FieldType and constraints
api_modeRequiredModelApiNo defaultNo additional bounds
connector_idRequiredstringNo defaultminimum length 1; maximum length 128
kindOptional"customer"Default "customer"constant "customer"

EventSpec

EventSpec fields
FieldType and constraints
locationsOptionalarray<string>No defaultmaximum items 10000; items: minimum length 1; items: maximum length 200
nameRequiredstringNo defaultminimum length 1; maximum length 200
textRequiredstringNo defaultminimum length 1; maximum length 1000000
ticksRequiredarray<integer>No defaultminimum items 1; maximum items 100000; items: minimum 0

GenerationDefaults

GenerationDefaults fields
FieldType and constraints
max_output_tokensOptionalinteger | nullDefault nullminimum 1; maximum 1000000
reasoning_effortOptionalstring | nullDefault nullminimum length 1; maximum length 32
service_tierOptionalstring | nullDefault nullminimum length 1; maximum length 64
temperatureOptionalnumber | nullDefault nullminimum 0; maximum 2
top_pOptionalnumber | nullDefault nullexclusive minimum 0; maximum 1

HostedConnector

HostedConnector fields
FieldType and constraints
api_modesRequiredarray<ModelApi>No defaultminimum items 1; maximum items 2
capabilitiesRequiredConnectorCapabilitiesNo defaultNo additional bounds
enabledOptionalbooleanDefault trueNo additional bounds
generation_defaultsOptionalGenerationDefaultsNo defaultNo additional bounds
idRequiredstringNo defaultminimum length 1; maximum length 128
kindOptional"hosted"Default "hosted"constant "hosted"
modelRequiredstringNo defaultminimum length 1; maximum length 200
nameRequiredstringNo defaultminimum length 1; maximum length 200
protocolOptional"demosyne.hosted.v1"Default "demosyne.hosted.v1"constant "demosyne.hosted.v1"
schema_versionOptional1Default 1constant 1

HostedConnectorRef

HostedConnectorRef fields
FieldType and constraints
api_modeRequiredModelApiNo defaultNo additional bounds
connector_idRequiredstringNo defaultminimum length 1; maximum length 128
kindOptional"hosted"Default "hosted"constant "hosted"

LocationMapPresentation

LocationMapPresentation fields
FieldType and constraints
is_publicRequiredbooleanNo defaultNo additional bounds
typeRequiredstringNo defaultminimum length 1; maximum length 200

LocationPresentation

LocationPresentation fields
FieldType and constraints
simulation_mapOptionalLocationMapPresentation | nullDefault nullNo additional bounds
typeOptional; deprecatedstring | nullDefault nullminimum length 1; maximum length 200

LocationSpec

LocationSpec fields
FieldType and constraints
invisibleOptionalarray<string>No defaultmaximum items 10000; items: minimum length 1; items: maximum length 1000000
kindOptionalstring | nullDefault nullminimum length 1; maximum length 200
nameRequiredstringNo defaultminimum length 1; maximum length 200
presentationOptionalLocationPresentation | nullDefault nullNo additional bounds
privateOptionalarray<string>No defaultmaximum items 10000; items: minimum length 1; items: maximum length 1000000
receivesOptionalarray<string>No defaultmaximum items 10000; items: minimum length 1; items: maximum length 200
residentsOptionalarray<string>No defaultmaximum items 10000; items: minimum length 1; items: maximum length 200
visibleOptionalarray<string>No defaultmaximum items 10000; items: minimum length 1; items: maximum length 1000000

PersonMapPresentation

PersonMapPresentation fields
FieldType and constraints
is_candidateOptionalbooleanDefault falseNo additional bounds
roleRequiredstringNo defaultminimum length 1; maximum length 200

PersonPresentation

PersonPresentation fields
FieldType and constraints
roleOptional; deprecatedstring | nullDefault nullminimum length 1; maximum length 200
simulation_mapOptionalPersonMapPresentation | nullDefault nullNo additional bounds

PersonSpec

PersonSpec fields
FieldType and constraints
brainOptionalBrainSpec | nullDefault nullNo additional bounds
invisibleOptionalarray<string>No defaultmaximum items 10000; items: minimum length 1; items: maximum length 1000000
locationOptionalstring | nullDefault nullminimum length 1; maximum length 200
nameRequiredstringNo defaultminimum length 1; maximum length 200
personaOptionalstring | nullDefault nullminimum length 1; maximum length 1000000
presentationOptionalPersonPresentation | nullDefault nullNo additional bounds
privateOptionalarray<string>No defaultmaximum items 10000; items: minimum length 1; items: maximum length 1000000
receivesOptionalarray<string>No defaultmaximum items 10000; items: minimum length 1; items: maximum length 200
speechOptionalSpeechSpec | nullDefault nullNo additional bounds
syspromptOptionalstring | nullDefault nullminimum length 1; maximum length 1000000
visibleOptionalarray<string>No defaultmaximum items 10000; items: minimum length 1; items: maximum length 1000000

ProbeMapPresentation

ProbeMapPresentation fields
FieldType and constraints
choice_mapRequiredobject<string, string>No defaultminimum properties 1; maximum properties 10000; property names: minimum length 1; property names: maximum length 200; values: minimum length 1; values: maximum length 200
metricRequired"voter_lean"No defaultconstant "voter_lean"

ProbePresentation

ProbePresentation fields
FieldType and constraints
simulation_mapRequiredProbeMapPresentationNo defaultNo additional bounds

ProbeResultContract

ProbeResultContract fields
FieldType and constraints
schemaRequiredobject<string, JsonValue>No defaultNo additional bounds
schema_idRequiredstringNo defaultminimum length 1
versionRequiredintegerNo defaultminimum 1

ProbeSpec

ProbeSpec fields
FieldType and constraints
excludeOptionalarray<string>No defaultNo additional bounds
nameRequiredstringNo defaultminimum length 1
presentationOptionalProbePresentation | nullDefault nullNo additional bounds
questionRequiredstringNo defaultminimum length 1
resultOptionalProbeResultContract | nullDefault nullNo additional bounds
targetsRequiredarray<string>No defaultNo additional bounds
ticksRequiredarray<integer>No defaultminimum items 1; items: minimum 0

ScheduledBroadcastSpec

ScheduledBroadcastSpec fields
FieldType and constraints
channelRequiredstringNo defaultminimum length 1; maximum length 200
contentRequiredstringNo defaultminimum length 1; maximum length 1000000
tickRequiredintegerNo defaultminimum 0

SpeechSpec

SpeechSpec fields
FieldType and constraints
speakerRequiredstringNo defaultminimum length 1; maximum length 200