In progress · first release v0.1.0

An open vocabulary for places on the AT Protocol

PlaceProto adds a required location to the records people already write, starting with calendar events. Records stay in their authors' own repositories. Any app can write them, and a shared index finds them by place and time, whoever wrote them.

Catalog

The PlaceProto catalog is coming soon. The org.placeproto namespace is reserved and holds no schemas yet. Today's schemas are published under app.iriai.proto as IriaiProto, PlaceProto's first namespace, and move only when governance for the PlaceProto name exists.

Schema status and service status are separate. Published means the schema record is live and resolves through DNS. Available, interim means a public service answers it today under interim access terms. Coming soon means planned, with nothing live.

IriaiProto app.iriai.proto

Release v0.1.0, verified 2026-10-13. Install from the pinned bundle (SHA-256 24d10f1a572539918962dadf18262ff124d72f18fa79fa465dea697aa5da7310) with @atproto/lex 0.3.14; never a floating latest.

Record

app.iriai.proto.event

Event sidecar

PlaceProto event sidecar. Adds the required PlaceProto location to a community.lexicon.calendar.event record stored in the same repository.

Schema
Published in v0.1.0 from publisher.iriai.app
Query support
Available, interim through app.iriai.proto.queryEvents and app.iriai.proto.getEvent
Indexing
Ingested from Jetstream and paired with its community event in the same repository.
Compatibility
Sits beside a community.lexicon.calendar.event record, so calendar apps that read the community event keep working; its locations array carries a copy of the sidecar location.
Record
at://did:plc:s4il46nsgas66jl7tyh6zrec/com.atproto.lexicon.schema/app.iriai.proto.event
CID bafyreic7yafyyjigwctsgjldipdvmccqevpikgq65sd7mfaeioy3g6opve
Owner
Iriai, published from publisher.iriai.app (did:plc:s4il46nsgas66jl7tyh6zrec), authority _lexicon.proto.iriai.app
Example record
{
  "$type": "app.iriai.proto.event",
  "eventUri": "at://did:plc:kd5s7zyp7nje43ievnqhgzrr/community.lexicon.calendar.event/3mxrq3w4c2k2y",
  "location": {
    "$type": "community.lexicon.location.geo",
    "name": "JCCCNC",
    "latitude": "37.7865506",
    "longitude": "-122.4308591"
  }
}

The same record, live

Definitions

app.iriai.proto.defs

Event view and version

Shared PlaceProto definitions: the complete event view and its version metadata.

Schema
Published in v0.1.0 from publisher.iriai.app
Query support
Available, interim through app.iriai.proto.queryEvents and app.iriai.proto.getEvent
Indexing
Not a record. eventView is what the query API returns for each event; eventVersion carries both record CIDs for editing.
Compatibility
The method lexicons that reference these views ship in a compatible v0.2.0; the service already answers the documented shapes.
Record
at://did:plc:s4il46nsgas66jl7tyh6zrec/com.atproto.lexicon.schema/app.iriai.proto.defs
CID bafyreidk5xfje2l6vceod7pal7muxcukeegajjdabiytjkri56o5tdkrwa
Owner
Iriai, published from publisher.iriai.app (did:plc:s4il46nsgas66jl7tyh6zrec), authority _lexicon.proto.iriai.app

Coming soon

  • Post sidecar Coming soon

    app.iriai.proto.post. A required location for Bluesky posts. Planned for v0.2.0.

  • Write and query methods Coming soon

    app.iriai.proto.createEvent and the other methods. Lexicons for createEvent, updateEvent, deleteEvent, getEvent and queryEvents. Planned for v0.2.0.

  • PlaceProto namespace Coming soon

    org.placeproto.*. The same vocabulary under org.placeproto, once governance for the name exists. Records stay under app.iriai.proto until then (D-30).

Reused community schemas

Vendored unchanged from Lexicon Community and Bluesky, pinned by URI and CID in the release, never republished as ours.

  • com.atproto.repo.strongRef bafyreifrkdbnkvf…
  • community.lexicon.calendar.event bafyreigv256whv4…
  • community.lexicon.calendar.rsvp bafyreiarei3vsja…
  • community.lexicon.location.address bafyreicdvexolyv…
  • community.lexicon.location.fsq bafyreigqx7wxb4c…
  • community.lexicon.location.geo bafyreiansycpa3g…
  • community.lexicon.location.hthree bafyreic6xmiv4yc…

Query

Available, interim https://query.iriai.app

Open with no key and per-caller rate limits. Labelled interim: a key will unlock higher limits later (D-14).

Search by distance from a point, a radius or a box, a time window, author or community event, ordered by distance or start time, with cursors over a stable snapshot. Parameters and errors.

Last verified

curl 'https://query.iriai.app/xrpc/app.iriai.proto.queryEvents?latitude=37.785054&longitude=-122.429827&radiusMeters=1000'

Change stream

Coming soon A documented recipe on Bluesky's public Jetstream, filtered to the PlaceProto record types, with resume inside Jetstream's replay window.

Coming soon An Iriai-hosted change feed. Coming soon, with no retention, limit or cursor terms committed yet.

wss://jetstream2.us-east.bsky.network/subscribe?wantedCollections=community.lexicon.calendar.event&wantedCollections=app.iriai.proto.event

Try it

Twenty lines of TypeScript build the v0.1.0 contracts from the pinned release, ask the live index for events near Japantown Peace Plaza and check every result against the schemas.

git clone https://github.com/danielATiriai/iriai-proto
cd iriai-proto/examples/try-it
npm ci
npm run release
npm run build
npm start

Built with PlaceProto

  • Corgo

    A Japantown quest game that publishes its quests as PlaceProto events. Testing on iPhone from October 20.

  • Smoke Signal

    An independent ATProto events app. It lists Iriai's steward events because PlaceProto rides on the community calendar event. See one there.

  • Iriai

    Bespoke apps for neighborhoods, built on PlaceProto. Join the waitlist to build with it or try Corgo.