Formats supported in this version

Import actionAccepted inputWhere it can come from
Import a ViewOne complete 2:1 equirectangular .jpg/.jpeg, .png, or .heic imagePhotos, Files, or a direct public HTTPS image URL
Import a RoomOne .locusplace or ordinary .zip archive containing at least one RoomFiles or a direct public HTTPS archive URL

A Room archive may be Room-only, or it may also carry the View and Experience that pair with that Room. Use the Import a Room action for either form.

Try a complete Room

Download the Locus-authored Demo Room, save it to Files, then choose Import a Room in Locus. The Room has two work seats and two desks, and it can be paired with any compatible View in your library.

Room archive layout

my-room.locusplace
├── locusplace.json
└── catalog/
    ├── spaces/<room-id>/              # required
    │   ├── space.json
    │   ├── provenance.json
    │   └── scene.usdz
    ├── destinations/<view-id>/        # optional paired View
    │   ├── destination.json
    │   ├── provenance.json
    │   └── panorama.jpg
    └── experiences/<experience-id>/   # optional pairing
        └── experience.json

The `.zip` and `.locusplace` filename extensions use the same bytes and rules. At least one ID in contents.spaceIDs is required by the current Room import action. The archive must not contain an extra parent folder, symlinks, undeclared files, authoring sources such as `.blend`, or paths outside the declared packages.

Required envelope metadata

FieldWhat it means
formatVersionThe archive contract version. V1 is 1.
packageIDA stable ID for this install/update stream.
contentVersionThree-part version increased when bytes change under the same IDs.
minimumAppVersionThe oldest Locus version allowed to import the archive.
contentsThe View, Room, and Experience IDs owned by the archive.
filesA generated inventory containing path, byte count, and SHA-256 for every payload file.
contentHashThe SHA-256 identity of the canonical payload inventory.

Provenance is part of the package

Every imported View and Room needs a provenance.json document. It records who made the asset and what can truthfully be said about it.

FieldExamples
Creator and sourcecreatorOrAgency, sourcePageURL
Rightslicense.identifier, license.name, license.url, requestedCredit
Changes and AImodificationNotes, aiGenerated, and aiProvider when AI was used
Package identityStable content IDs and contentVersion in the package manifests and archive envelope

Do not invent an author or license. Unknown or incomplete mandatory provenance fails validation. Public-domain or CC0 material should still preserve its known creator or agency and source.

Create and validate a Room package

  1. Generate the reproducible Room examples.
  2. Unzip room-only.locusplace or combined.locusplace into a normal directory and replace the USDZ and any paired panorama.
  3. Edit the Package-v2 manifests and complete provenance.json truthfully.
  4. Run the packer to regenerate file sizes and hashes.
  5. Run the validator before importing the finished archive through Import a Room.
python3 examples/build_examples.py /tmp/locusplace-examples
python3 tools/pack_locusplace.py MyEditablePlace MyPlace.zip
python3 tools/validate_locusplace.py MyPlace.zip

Asset guidance

Direct View import

Use one complete JPEG, PNG, or HEIC panorama with a strict 2:1 equirectangular projection. A recommended size is 12,288 × 6,144. Forward is panorama u = 0.5, world −Z; the seam is yaw ±180°.

Room package

Use a self-contained, meter-scale USDZ with +Y up. Declare a seated origin, a safe head volume, destination openings, collision behavior, and measured quality metadata. Keep `.blend`, GLB, source textures, and other authoring assets outside the runtime ZIP.

Optional paired View and Experience

A Room archive may include a JPEG or PNG View and an Experience that references stable View and Room IDs and declares its supported mode. Import the finished archive through Import a Room.

Complete technical reference

Read the public archive and Package-v2 field reference for validation limits, lighting-EXR constraints, USDZ rules, examples, and security behavior.