Apps
Self-reported. Open a PR to change your own row.
| App | app_id | Modules |
|---|---|---|
| Prism | prism | members, fronting, groups, custom_fields, notes, chat, assets, privacy |
| Sheaf | sheaf | members, fronting, groups, custom_fields, notes, chat, assets, privacy, polls, reminders |
| PluralSpace | pluralspace | members, fronting, groups, taxonomy, custom_fields, notes, chat, boards, assets, privacy, polls, relationships |
| Ampersand | ampersand | members, fronting, groups, custom_fields, notes, chat, assets, privacy |
| Lighthouse | lighthouse | members, fronting, groups, custom_fields, notes, chat, assets, privacy |
| Octocon | octocon | members, fronting, groups, custom_fields, notes, chat, assets, privacy |
| OpenSelves | openselves | members, fronting |
| PluralKit | pluralkit | members, fronting, groups, privacy |
| Plural Star | plural_star | members, fronting, groups, custom_fields, notes, chat, assets |
| Simply Plural | simply_plural | members, fronting, groups, custom_fields, notes, chat, assets, privacy |
| Tupperbox | tupperbox | members, groups |
Prism Adopter
Local-first Flutter app with structured database tables and an encrypted .prism export envelope (currently V3). Broad in scope: members, fronting, groups, custom fields, chat, member board posts, polls, habits, reminders, media, and local sharing.
| App shape | PluralPort target |
|---|---|
| headmates[] | Member |
| frontSessions[] + sleepSessions[] | FrontPeriod with single-member assignments; sleep via status: "sleep" |
| memberGroups[] with parentGroupId | Group + GroupMembership |
| customFields[] + customFieldValues[] | CustomFieldDefinition + CustomFieldValue |
| conversations[] + messages[] + mediaAttachments[] | Conversation + ChatMessage + Attachment |
| member_board_posts (sync-only, not in .prism export envelope) | BoardPost in the boards module |
Sheaf Adopter
FastAPI/PostgreSQL app with application-level encryption. It already exposes /v1/export returning JSON v2 with system, members, fronts, groups, tags, custom fields, journals, revision history, board messages, polls, reminders, watch-token notification config, and uploaded-file inventory.
| App shape | PluralPort target |
|---|---|
| system object | System |
| members[] | Member |
| fronts[] with inline member_ids | FrontPeriod + one FrontAssignment per member_id |
| groups[] with parent_id + member_ids | Group + GroupMembership |
| tags[] with inline member_ids | TaxonomyTerm + TaxonomyAssignment |
| custom_fields[] with nested values | CustomFieldDefinition + CustomFieldValue |
| journals[] | Note |
| messages[] | BoardPost; replies are preserved in extensions for now |
| polls[], reminders[] | extensions.sheaf.* until modules land |
PluralSpace Adopter
PluralSpace natively imports and exports OpenPlural v0.1. It supports the chat, boards, provisional relationships, and provisional polls modules. Mood history is preserved under extensions["pluralspace:moods"].
| App shape | PluralPort target |
|---|---|
| members | Member records with proxy tags, privacy, profile visibility, pinned state, and template state |
| fronts and system front types | FrontPeriod with one member assignment per interval; front types become status TaxonomyTerms and TaxonomyAssignments |
| member roles | Role TaxonomyTerms and TaxonomyAssignments |
| member groups and memberships | Group with parent_group_id plus GroupMembership records |
| custom fields and custom field values | CustomFieldDefinition and CustomFieldValue records |
| journal entries and notes | Note records distinguished by extensions.kind as journal or note |
| chat channels and messages | Conversation and ChatMessage records with member author IDs |
| relationship types and member relationships | Provisional relationships module with RelationshipType and MemberRelationship records |
| polls, options, and votes | Provisional polls module using PluralSpace's current field interpretation |
| thought of the day entries | System-wide BoardPost records with extensions.kind set to thought_of_the_day |
| system mood entries | extensions["pluralspace:moods"] |
| member and system media | Asset records with bundled files, source references, and checksums |
Ampersand Research
Offline-first Tauri/Vue app. It has no production interoperable export today; the only normal export is a self-backup .ampar archive, and its interop surface is import-first.
| App shape | PluralPort target |
|---|---|
| nested systems | System records with parent_system_id |
| per-member fronting intervals | FrontPeriod + assignment metadata |
| typed tags | Group + TaxonomyTerm patterns |
| custom field values | CustomFieldDefinition + CustomFieldValue |
| board messages with polls | BoardPost and extensions |
Lighthouse Research
Server-backed Node/Express + PostgreSQL app. Exports a ZIP of CSV files and has a narrow token API. Most of its richer data lands in extensions until a converter is built.
| App shape | PluralPort target |
|---|---|
| Subsystems as separate systems | System with parent_system_id |
| Fixed alter fields | CustomFieldDefinition or taxonomy mapping |
| relationships column on alters | MemberRelationship + RelationshipType via heuristic parse |
| forums + threads + journals | Conversation + Note |
Octocon Research
Elixir/Phoenix/ScyllaDB monolith plus Discord bot. It has a full JSON export option, plus Discord-based migration formats that still matter for users exiting before shutdown.
| App shape | PluralPort target |
|---|---|
| Alters.Alter with flags | Member; preserve flags in extensions |
| Fronts.Front rows | FrontPeriod + FrontAssignment |
| Tags.Tag with parent_tag_id | Group + GroupMembership |
| Accounts.Field + Alters.Field values | CustomFieldDefinition + CustomFieldValue |
| discord_proxies + security_level | ProxyTag + Privacy fragment |
OpenSelves Research
Smaller offline-first app with browser IndexedDB + a Drizzle/PostgreSQL sync schema. No general export file was found in source, so the portable shape is inferred from DTOs and schema.
| App shape | PluralPort target |
|---|---|
| per-member front intervals | FrontPeriod |
| no groups/custom fields/notes/chat | No portable representation yet |
PluralKit Research
Discord bot with a public API and a JSON datafile produced by DataFileService.ExportSystem. It models fronting as switch events rather than intervals.
| App shape | PluralPort target |
|---|---|
| switches[] with members array | FrontEvent + assignment records |
| members[] with proxy_tags | Member + ProxyTag |
| flat groups[] | Group with null parent_group_id |
| per-record privacy | Privacy fragment with PluralKit raw detail |
Plural Star Research
React Native app with AsyncStorage + filesystem backups. It has tiered fronting, flat groups, definitions + values for custom fields, channels + messages, and noteboards.
| App shape | PluralPort target |
|---|---|
| Tiered front periods | FrontPeriod with explicit front_role + source_kind: "tiered" |
| chatChannels + ps:chat:<id> messages | Conversation + ChatMessage |
| noteboards | BoardPost with target_member_id + pinned |
Simply Plural Research
Public token API + raw Mongo export. It still matters because many migration paths flow through it, even though the service is being discontinued.
| App shape | PluralPort target |
|---|---|
| Per-member/status intervals | FrontPeriod |
| Hierarchical groups | Group with parent_group_id |
| Custom fronts | Member with is_custom_front: true |
| Privacy buckets | Privacy fragment |
| Channels + chat messages | Conversation + ChatMessage |
| boardMessages | BoardPost |
Tupperbox Research
Discord bot export that is useful as a migration source, not a long-term portable format. It preserves the member and group model but not a general-purpose import/export contract.
| App shape | PluralPort target |
|---|---|
| Discord proxy bot export | Member + Group records; preserve proxy info in extensions |
| flat groups | Group with null parent_group_id |
| no fronting or notes model | No portable representation yet |
