HEXR

Manifest reference

One file. It is the whole of what you publish.

A complete manifest

{
  "manifestVersion": 1,
  "key": "book_swap",
  "name": "Book Swap",
  "developer": "Your Name",
  "surface": "flat",
  "firstParty": false,
  "capabilities": ["storage", "hex_context"],
  "placement": { "publicHex": false, "ownerOnly": false, "businessOnly": false },
  "content": { "schemaVersion": 1 }
}

Fields

FieldRule
manifestVersionExactly 1. An unknown version is refused rather than guessed at.
keyLower snake case, 3–32 characters, starting with a letter. Unique across all publishers.
name1–40 characters, what users see.
developer1–60 characters. Display only — your real publisher identity comes from your account.
surfaceflat or ar_native.
firstPartyAlways false for you. A submission is never first-party, whatever it claims.
capabilitiesAn array from the list below. No duplicates. Unknown values are an error, never dropped.
placementThree booleans, all required. See below.
content.schemaVersionExactly 1.

Capabilities

Declare the least you need. Each one is shown to the user in these words before they agree.

CapabilityShown to the user asWhat it gives you
identityYour identityWho the viewer is, and how strongly their presence was verified.
presenceYour presenceWhether the viewer is physically at this hex right now.
hex_contextThis hex’s contextThe hex the tile lives in: its owner, category and community.
storageIts own contentRead and write this tile’s own content. Nothing else’s.
socialYour friend graphThe viewer’s friends.
arAR surfaces (later)Reserved. Declaring it today is an error, because it would be granted nothing at runtime — you would be claiming a power you will never have.

Placement

GateMeaning
ownerOnlyOnly the person who holds the hex may add it. Use this for anything that speaks as the owner.
publicHexIt belongs on a community Public Hex rather than a personal one.
businessOnlyIt requires a hex with an active Business Upgrade. Advertising lives here.

businessOnly and publicHex together is an error. A Public Hex is never business-upgraded, so the pair describes a tile that no hex could ever satisfy. It would be accepted and then simply never appear, with nothing to explain why, so it is refused up front instead.

What is not in a manifest

No renderer, no component, no code path, no styling. A manifest never names a component, because the component is ours. It also carries no permission wording of its own: the disclosure text above is fixed, so an app cannot describe storage as something friendlier than it is.

Check your manifest →