#Aims and reasoning
#Channels are the publishing primitive
TalkCo has two primitives: conversations (§05) and channels. A conversation is something a person says to someone; a channel is somewhere they publish. People should be able to publish durable, structured text, images, video, and files under their own identity without running infrastructure.
A person can maintain as many channels as their life has facets: friends, music, a project, professional updates, or unfinished thoughts. Publication should not force those facets into a single public persona.
#Nesting: channels within channels
A DIY channel can contain separate woodworking, garden, and repair projects. Nesting organizes work without requiring unrelated top-level streams. Sub-channels should inherit sensible defaults while allowing deliberate exceptions; the exact inheritance policy remains open.
#Following at the level you choose
Following is per-channel, rather than a single subscription to everything a person does. Someone may follow a parent, follow one child, or follow the parent while muting a noisy child. This supports the orthogonal contexts in §02. Following expresses interest; it must never silently grant access.
#Ephemeral and permanent registers
Ephemeral publication serves passing thoughts and work in progress. Permanent publication serves things meant to be found again. The first lowers some observation stakes; the second supports continuity. Neither should force people to manage storage infrastructure.
Ephemeral evidence and caveats
Small-moment sharing can reduce response pressure and impression-management concerns when paired with controlled audiences and private replies (Bayer2016, ChoiWilliamsKim2020, Kreling2022, Kim2024BeReal). Expiry cannot prevent screenshots or an authorized reader retaining a copy. Permanent publication still depends on funded custody and recoverable replicas; §11 owns availability policy.
#Visibility: public, unlisted, invite-only
| Visibility | Reader expectation |
|---|---|
| Public | Anyone given the reference may read; TalkCo supplies no global index. |
| Unlisted | Discovery depends on possession of a reference. Sharing that reference may share access. |
| Private / invite-only | Only explicitly authorized recipients receive access. |
Unlisted is a discovery choice, not a promise that a link cannot be passed on. A channel's visibility and a follower's feed choices are separate decisions.
#Routing content with tags
Tags are a filing aid within an owner's channels and authorized network. They must not create global tag search, trends, or an additional discovery audience.
#Editing should not rewrite context
Permanent posts can be edited, with an edit marker and time. A reply or reaction to an earlier revision must retain that context through a revision reference or an appropriate history view. Full public edit history is not required by default.
#Cross-posting should not multiply reach
One post can be filed in several owned channels without appearing repeatedly to someone who follows them all. Cross-posting across profile spheres also reveals a relationship between those spheres; the author must choose that relationship deliberately. Independent publication remains available where separation matters more than shared identity.
#Protocol and architecture
#A channel is policy plus references, not a second copy of every post
Inheritance needs a defined rule for explicit overrides, parent changes, and concurrent edits. A child must not gain a broader audience merely because an old inherited grant arrives late. Audience widening needs an authorized transition and, where relevant, fresh publication consent. When the required policy state is missing or conflicting, the client defers new disclosure instead of choosing by arrival order.
| Seam | Likely candidate and status | TalkCo work that remains |
|---|---|---|
| Channel tree, references, revision views | SQLite with rusqlite; provisional local baseline | Validate events before projection; enforce scoped IDs and policy history. |
| Durable private posts and attachments | AEAD objects with HPKE recipient envelopes; prototype direction | Bind object, revision, audience, policy state, and recipient device; manage rotation and consent. |
| Repeated private audience | OpenMLS; gated A1 alternative | Bind group membership to TalkCo grants and decide historical access. |
| Collaborative drafts | Automerge or Yjs/Yrs; optional draft adapter | Protect draft history and publish only an explicitly approved revision. |
| Event delivery and media transfer | p2panda-sync, iroh, and iroh-blobs; adapter candidates | Constrain topic/endpoint metadata, custody, quotas, and retries. |
These are local uses of the candidate inventory, not an adopted dependency set. HPKE supplies recipient encryption; OpenMLS supplies group-security operations. Neither supplies channel meaning or publication consent.
#Variation — A0 object envelopes
This composition suits bounded or irregular audiences and independently retained posts. Envelope fanout and device changes are the main costs. The selected recipient-authenticated descriptor supplies source evidence separately from confidentiality; private publication does not acquire a transferable personal signature by default. Public objects need an explicit public distribution policy; unlisted bearer references must not be presented as identity-bound invitation grants. Restricted-to-public publication is an audience transition, not a change to a server flag.
#Variation — A1 recurring audience with MLS
An MLS application message can distribute an independent publication key to a recurring audience. This is a candidate composition, not a frozen wire format. Joining a group must not automatically reveal old publications, and leaving does not erase keys already received. The group-state, offline recovery, commit-conflict, and source-evidence behavior must meet the context requirements and justify the additional state over A0. The encryption research owns that comparison.
#Filing and deduplication stay within the chosen identity boundary
Deduplication uses an intentionally shared publication identity or a locally authorized equivalence, never a global plaintext hash. A ciphertext hash is a storage locator; reusing it across supposedly unlinked spheres can expose a relationship. Editing creates a new revision associated with the publication; responses retain the revision they addressed. Expiry removes eligible local views, keys, and custody obligations under the selected retention policy, without promising recall from other recipients.
#Open Threads
- Channel model pass. Resolve inherited defaults, child overrides, parent narrowing, muted descendants, and ephemeral-versus-permanent scope together; §12 owns sequencing.
- Audience-path gate. Measure A0 envelope fanout against A1 membership churn, recovery, and historical-access behavior before selecting a channel encryption path.
- Cross-context filing. Define the confirmation and identifier rules for intentionally linked cross-posts versus independent publication.
- Channel ownership (OT-04-005). Personal channels and community channels share content mechanics but use different authority records; §09 owns community grants.