Lexicons and integrations
The open schemas that define what each record type contains, and the apps that already read or write Sifa's lexicons.
A lexicon is the schema for one type of Atmosphere record. It says, in machine-readable form: a id.sifa.profile.position record must have a title, a companyName, may have a startDate, etc. Lexicons are how any app on the network knows whether the data it just received is well-formed.
Why lexicons matter
Lexicons are the contract between apps. When Sifa ID publishes the id.sifa.profile.position lexicon, it's committing to: "any record in this collection will look like this." Other apps can read those records confidently, build features on top of them, and skip asking Sifa for permission.
That's the part that makes an open network actually open. Without published schemas, apps would have to reverse-engineer each other's data, and the moment one app renamed a field everything would break. With lexicons, every change is versioned, public, and signposted.
Where Sifa's lexicons live
All Sifa schemas live in singi-labs/sifa-lexicons, an MIT-licensed public repo. Each schema is a JSON file with field types, required fields, validation constraints, and human-readable descriptions.
The namespace is id.sifa.*. Currently published:
id.sifa.profile.selfand 12 sub-types covering positions, education, skills, certifications, projects, volunteering, publications, courses, honors, languages, external accounts, and the user's location.id.sifa.project.*: projects with multiple contributors.id.sifa.endorsement: peer endorsements based on real-world interactions.id.sifa.graph.followandid.sifa.graph.connection: the Sifa-specific follow / connection graph.id.sifa.auth*: auth flows for Sifa's meet feature.id.sifa.meeting: meeting records from the handshake / meet flow.
The exact list and schema details are in the repo. We don't restate them here because the repo is the source of truth.
Apps that already use Sifa lexicons
Because the schemas are public, any Atmosphere app can read or write them. Today:
- Sifa itself: the primary writer. Everything in your profile editor produces
id.sifa.*records. - verak.app: writes
id.sifa.*endorsement and profile records alongside its own reputation data. - weareonhire.com: writes
id.sifa.*profile records as part of its hiring workflow.
We expect more over time. If you build something that reads or writes id.sifa.* records, open an issue and we'll add it here.
Personal sites driven by a Sifa profile
Beyond apps, some people render their own website from their id.sifa.* records, so a personal CV or career page stays in sync with their profile:
If you want the same, @singi-labs/sifa-page-renderer (MIT) turns a Sifa profile into a static site. See Personal website for the hosted option.
What Sifa reads (and what it doesn't)
To build your activity stream (/activity and /now), Sifa reads the public records across your PDS, not a fixed set of lexicons. Whatever public records your apps write can show up on your timeline. As examples of what that includes today:
app.bsky.*: Bluesky posts, follows, reposts, and profile data.forum.barazo.*: Barazo forum posts and reactions relevant to a profile.sh.tangled.*: Tangled repos, issues, and pull requests.rsvp.atmo.*andcommunity.lexicon.calendar.*: calendar events and RSVPs, e.g. atmo.rsvp.- Blog posts and long-form writing, e.g. WhiteWind, Leaflet, and Standard.site (see Standard.site cards).
community.lexicon.location.*: shared community location records.
New Atmosphere apps show up on their own as people start using them. The record types Sifa treats as "activity" are catalogued in @singi-labs/sifa-sdk/tokens, and the Activity feed page renders that list dynamically.
You choose what shows
Reading a record and showing it on your profile are separate choices. In your activity settings you can turn any app or record type on or off, so you control exactly which apps and lexicons appear on your profile and activity stream.
Only your public data
Sifa reads only the public records in your PDS, the same ones any Atmosphere app can already see. It has no access to private or permissioned data: not your Bluesky DMs, and nothing behind a permission you haven't granted. If a record isn't public, Sifa doesn't see it.
Want to go deeper
- Your data on a provider: how lexicons connect to actual stored records.
- Apps, AppViews, and the firehose: how an app turns raw records into a rendered page.
- What is the Atmosphere?: the bigger picture.