Skip to content

Scope model with audience-floor permission intersection for shared rooms #575

Description

@iret77

Origin

Competitive analysis of yc-software/qm (2026-08-01). qm's single most elegant idea, and the one that would put real teeth into omadia's multiplayer promise.

Concept

qm makes the scope its only isolation primitive: personal:<id>, channel:<ref>, group:<ref>, team:<id>, org:<id>. Every conversation resolves deterministically to exactly one scope, and every resource (memory, files, credentials, crons) is owned by a scope and shared only via explicit grants.

On top of that sits the audience floor: in shared rooms, effective permissions are not the scope's own but the intersection across everyone present

  • egress allowlist = intersection of allowed hosts, deny = union of denied hosts
  • a shared file/credential handle is only usable if every participant can reach its owner scope
  • context rendered for an audience is filtered per recipient; tool results a participant is not entitled to are replaced by a stub that preserves tool-call IDs so the transcript stays valid

Why adopt

omadia's multiplayer model piggybacks on channel-native session scopes but has no per-person isolation primitive and no mixed-audience permission story. When several people share an agent in one room, "what may this answer contain / where may this request go" is currently undefined. The audience-floor intersection is a clean, enforceable answer that also composes with Privacy Shield.

Reference (qm source)

  • src/types.ts (ScopeId), src/resolution/resolution-service.ts (scope resolution + layered overlay mounts)
  • src/resolution/audience-floor.ts, src/resolution/context-filter.ts, src/harness/tape-fold.ts
  • src/acl/acl-store.ts (grants, no transitive re-sharing)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestfrom-qmConcept inspired by yc-software/qm (YC competitive analysis)

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions