XDL Declares Intent

OpenXP puts the designer in charge.

The designer's creative vision and intent is written into a single “experience” file as structured data, not filed away as a brief no one reads.

Every line of the Experience Definition Language (XDL) is a commitment to what the experience will be — what the participant inhabits, what touchpoints exist, why specific actions fire. The runtime command (# openxp run my-experience.xdl --venue my-venue.xpvenue) serves that commitment; sensors, agents, and environmental variation cannot silently override it.

This is what separates XDL from a runtime configuration language: the designer authors intent once, and the platform binds against that intent everywhere — at validation time, at execution time, at the verifier's static-analysis pass. A camera reading a room, an agent proposing a cue, an operator stepping in at the desk: all of them serve the declaration. None of them redefine it.

Read the Manifesto →

Build. Run. Scale.

Design it, run it, scale it. Every module has a well-defined boundary — run one experience standalone, swap a piece out, or connect them end-to-end.

Build

runs on a laptop at the venue

Experience Studio

Turn a creative brief into a validated journey — emotional arc, stages, moments, and a storyboard, ready to wire and pitch.

Experience Bridge

The bridge between design and the live venue. Wire journeys to real hardware on a visual canvas, simulate them, then run and oversee live shows from the same window.

Run

runs standalone — no cloud required

Runtime Core

The intelligent core that plays back your experiences — branches in real time, adapts within safe limits, and logs every decision.

Connector Fabric

Hundreds of protocol adapters — lighting, audio, sensors, show control, smart home — each with a simulation mode.

Physical Layer

Your hardware — LED walls, DMX rigs, NFC readers, cameras, spatial audio, haptics, projection.

Scale

Use the paid ExperienceOps cloud control plane to manage multiple venues — roll out updates and see results across your whole estate.

Experience as code

XDL is the open standard for describing immersive experiences. Human-readable, formally specified, deterministically executable.

Industry Open Standard

No hidden logic. No loops, no variables, no surprises. What you read is what runs.

Privacy, by design

Three modes — transient, scoped, retained — each declaring its purpose & lawful basis, so consent & compliance are embedded.

Design for how people feel

Warmth, wonder, calm, energy, tension, presence are core touchpoints — emotional resonance is built in.

Actors are first class

Actors, facilitators & guides are wired into the journey, with roles, cues, & improvisation rules — not hidden in a briefing doc.

AI agents as touchpoints

Responsive, decision-making, and coordinated AI participate in journeys alongside physical hardware.

Repeatable, by design

Same state + same event = same transition. Always. Experiences are reproducible and debuggable.

Safety policies built in

Policies constrain what agents can do. Safety trumps design. Every decision is audited.

Accessible by design

Wheelchair access, audio descriptions, photo sensitive warnings - ship with the experience, not as a separate compliance layer.

gallery-walk.xdl
1experience "Immersive Gallery" { // one experience, defined start to finish
2 intent: "Guests move through a responsive gallery space that senses and shapes their emotional journey"
3 spec: "openxp/1.0"
4 version: "1.0"
5 locale: "en-GB"
6 realm: physical
7 accessibility { // needs ship with the experience (R225-R230)
8 navigational { wheelchair: true, step.free: true }
9 perceptual { audio.description: true, warning.photosensitive: false }
10 }
11 
12 touchpoints {
13 
14 // Sense the space
15 entry: sensor.beacon { zone: "entrance" }
16 bio: sensor.biometric {
17 sensor_type: "heart.rate" // sensor_type: config key (type + processing are reserved)
18 purpose: "Adapt scene pacing to guest excitement in the moment."
19 legal_basis: consent // legal_basis: key (dotted keys not allowed in config)
20 }
21 
22 // Shape the space
23 spatial: output.audio { zones: 3 }
24 ceiling: output.led { pixels: 2400 }
25 lights: output.lighting { universe: 1 }
26 
27 // Feel the space
28 warmth: perception.warmth { intent: "welcome", source: lights, range: [0.0, 1.0] }
29 wonder: perception.wonder { intent: "awe", source: ceiling, range: [0.0, 1.0] }
30 calm: perception.calm { intent: "reflect", source: spatial, range: [0.0, 1.0] }
31 
32 // Guide the space
33 guide: actor.improvise { role: "facilitator", intent: "Improvise within the design policy" }
34 
35 // Think with the space
36 curator: agent.deliberative { model: "claude", latency_sla: "5s", fallback: "advisory" }
37 }
38 
39 journey "visitor" { // what one guest moves through — the emotional shape of the visit
40 intent: "Guide a single guest through an emotionally-responsive arrival sequence"
41 initial: arrive
42 
43 phase "arrival" {
44 arc.phase: "arrival"
45 
46 moment "welcome" {
47 perception.targets { warmth { min: 0.3, max: 0.6, ramp: "gentle" } }
48 
49 state arrive {
50 on.enter { do: lights.cue("warm_amber_rise") }
51 on entry.detect -> immerse {
52 do: output.scene(name: "welcome_glow")
53 }
54 }
55 
56 state immerse { }
57 }
58 }
59 }
60 
61 safety { // guardrails the AI can never cross
62 comfort_first {
63 when: "bio.reading > 0.9"
64 ensure: warmth.reading < 0.6
65 response: stop
66 }
67 }
68}

Design for how humans feel

Human perception is a core touchpoint in OpenXP. As real as an NFC reader or LED wall. You can trigger transitions on wonder, shape scenes with calm, and adapt entire journeys to the emotional arc of your guests.

Warmth

The emotional tone of welcome. How a space says hello before anyone speaks.

Energy

Collective vitality. The pulse of a room full of people alive to what's happening.

Tension

Dramatic suspense. The held breath before the reveal.

Calm

The peaceful quality of a contemplative space. Where thoughts settle.

Wonder

Awe and discovery. The moment everything shifts.

Presence

Spatial awareness. The feeling of being truly here, now.

One experience. Many Realms.

AR, VR, digital twins — different mediums of presence, one experience. A guest queues in physical, dons headset for augmented, steps into virtual, then returns. OpenXP holds the journey across realms because the language describes participation, not pixels.

Physical

On-site venue hardware. Real-world installations, mobile-companion experiences anchored in physical space. The designer commits delivery to the venue itself.

realm: physical

Digital

Screens, apps, software-only interfaces. No physical-world coupling required. The designer commits delivery to digital surfaces.

realm: digital

Augmented

Actual world layered with constructed elements — AR overlays, projection mapping, headset-augmented venue space. The designer commits delivery to augmented space.

realm: augmented

Virtual

Wholly constructed environments — VR headsets, fulldome projection, immersive 3D worlds. The designer commits delivery to virtual space.

realm: virtual
festival-companion.xdl
1experience "Festival Companion" {
2 intent: "One guest, one day — the festival holds the journey across all four realms"
3 spec: "openxp/1.0"
4 version: "1.0"
5 locale: "en-GB"
6 realm: physical // default medium of presence
7 
8 touchpoints {
9 gate: sensor.nfc { zone: "entry" } // physical — the festival grounds
10 companion: output.display { realm: digital } // digital — the festival mobile app
11 stage_ar: output.display { realm: augmented} // augmented — artist's AR over the stage
12 vr_booth: wearable.headset { realm: virtual } // virtual — shared VR at the brand booth
13 }
14 
15 journey "guest" {
16 intent: "Gate to grounds, app to stage, AR into a shared VR finale"
17 initial: at_gate
18 
19 state at_gate {
20 on gate.scan -> on_grounds {
21 do: companion.send(template: "welcome")
22 }
23 }
24 
25 // digital — the guest opens the festival companion app
26 state on_grounds {
27 on companion.open -> at_main_stage {
28 realm.transition: physical -> digital
29 do: companion.send(template: "lineup")
30 }
31 }
32 
33 // augmented — the artist triggers an AR layer over the main stage
34 state at_main_stage {
35 on stage_ar.cue -> in_brand_vr {
36 realm.transition: digital -> augmented
37 do: stage_ar.overlay(scene: "aurora")
38 }
39 }
40 
41 // virtual — the brand activation hands the guest a headset for a shared set
42 state in_brand_vr {
43 on vr_booth.enter -> finale {
44 realm.transition: augmented -> virtual
45 do: vr_booth.join(room: "shared_set")
46 }
47 }
48 
49 state finale {
50 intent: "Guest returns to the grounds; the day's moments sync back to the app"
51 }
52 }
53}
  1. 1

    realm: physical at the experience level sets the medium of presence the participant inhabits by default. State and touchpoint blocks inherit this declaration unless they explicitly override it.

  2. 2

    realm: augmented on a touchpoint or state shifts the medium for that span — the same experience can move the participant from physical, to augmented with overlays, to a fully virtual scene, without ever splitting them across realms.

  3. 3

    realm.transition is the event the runtime emits when the journey crosses from one realm to the next. States react to it like any other event, and touchpoints from the realm just left can still deliver content into the realm just entered.

See the journey. Run the journey.

OpenXP Bridge is the visual canvas where experiences come alive. Wire states to hardware, simulate the guest journey, and operate live shows — all from the same window.

OpenXP Bridge — Immersive Starry Night Disconnected
Canvas Simulate Operate
Inputs entry · beacon pace · biometric guide · performer
Perception wonder calm energy
Outputs ceiling · LED lights · DMX piano · spatial audio scent keepsake · agent
Live agents
R
pacing_monitor
agent.reactive · watching pace.dwell
D
keepsake
agent.deliberative · claude · 2.3s
C
wonder_watcher
agent.compositional · peak detection

From immersive destinations, to brand activations, to dining rooms

Pre-designed experience templates that run on the same platform. Every one uses perception, policies, and journeys.

Sports Fan Experience

Queue → activity track → AI souvenir

sensoroutputagentperception

Brand Activation

Multi-camera capture → video highlight reel

sensoroutputperception

Retail / Permanent Install

QR scan → browse → purchase with loyalty

sensoragentperception

Immersive Documentary Dome

Fulldome projection, binaural audio, educational content

outputsensorperception

Multi-Sensory Gallery Walk

Self-paced zones with scent, light, spatial audio

sensoroutputagentperception

Participatory Theatre

Audience-driven narrative with branching story paths

sensoroutputperception

Sensory Immersion Chamber

Pure sensation — light, spatial audio, haptic, biometric-adaptive

sensoroutputperception

Human Design Workshop

Facilitator-led group workshop with dual-screen chart reveals

integrationoutputperception

Dinner Party

Smart home social entertainment with scene orchestration

smarthomeperception

Every protocol. One interface.

Every protocol, with simulation mode. If it has a wire, OpenXP can talk to it.

Protocol adapters
LightingSpatial audio Show controlSensors Smart homeNetworked media PresenceAmbient
Touchpoint types
LED wallDMX rig NFC readerCamera Spatial audioBiometric ScentHaptic ProjectionActor

Repeatable, by design

state + event = transition

Same moment. Same event. Same result. Every time.

No loops. No hidden logic. No surprises. What you read is what runs — on a laptop, in a simulator, in the venue.

AI proposes Policy filters ✓ decision

Agents propose, policies constrain

AI agents suggest adaptations. Policies enforce safety, privacy, operational, and design constraints. Every decision is logged with a full audit trail.

5/5 hardware · live
3/5 hardware · continues
0/5 hardware · simulates

Graceful degradation

Missing hardware doesn't crash the system. Connectors degrade gracefully, log warnings, and continue. Every connector has a simulation mode for development.

transientused and discarded
boundedscope-bounded
retainedpurpose, basis, period

Present. Personalised. Forgotten.

The experience knows you're there. It responds to where you stand, what you do, how you move. Then it forgets. Realm sets where you are, perception reads the moment, processing.transient drops it. When something is kept, the experience says what, why, and under what law.

journey keepsake

Carry the feeling home

Every memorable experience does three things. moment.mark names the peak. capture.record holds onto it. deliver.issue hands it back on the way out. A photo, a recording, a ticket — same three steps. Optional, but powerful.

one XDL
gallery retail stadium home

Designed here, adaptable anywhere

Experiences are typically built with a specific venue in mind — but the XDL separates intent from hardware, so moving to a new venue is an adapt, not a rebuild.

chat canvas
same XDL

Creative-first tooling

OpenXP Studio lets creative directors design experiences through conversation. OpenXP Bridge gives technical designers a visual canvas. Same XDL output, different entry points.

The smallest projects, the biggest projects.

Launch announcement, Beta access, Join the consortium.