Skip to content

[v1] Independent household accounts alongside managed profiles #1073

Description

@neurekadev

Summary

Silo should support two kinds of household members:

  • Managed profiles for guests, children, and temporary users.
  • Independent Silo accounts that retain their own login, account settings, integrations, and personal data while appearing in a household's account switcher/home context.

A household owner should be able to invite an existing Silo account or invite someone to create one. Existing profiles should have a one-time claim or conversion path into an independent account so their eligible personal media state is not lost.

Leaving a household should remove the member account from the household's account switcher/home context without deleting the member's account or personal data. Library access should remain governed by the account's existing user and access-group permissions; changing those permissions is a separate explicit action.

User value / why v1

Profiles currently have personal watch state and profile-scoped Trakt/Simkl-style watch-provider connections, but they are not independent identities. They cannot own a Silo login, API keys, plugin account settings, external authentication, or other account-level integrations.

This is sufficient for guests who remain under the account owner. It is a poor fit for family members who may eventually need their own account, such as children who move out. Without this capability, their history and preferences remain attached to the original account, and there is no clean way to take that identity with them.

The v1 household model should establish the long-term distinction between managed users and real household accounts before the API becomes additive-only.

API surface

The following are proposed native API surfaces; exact payloads can be finalized during design:

  • GET /api/v1/household — return the current household, member type, membership status, and granted library/access summary.
  • POST /api/v1/household/invitations — invite an existing Silo account or invite a person to create one. Household membership is separate from authorization; the destination account's user-level and access-group permissions determine its library access.
  • POST /api/v1/household/invitations/{id}/accept — accept an invitation and join the household using the invitee's own account.
  • DELETE /api/v1/household/members/{id} — remove household access while preserving the member account and personal data.
  • POST /api/v1/profiles/{id}/claim — begin a one-time conversion of an eligible managed profile into an independent account, returning a migration preview/status.
  • POST /api/v1/profile-claims/{id}/accept — accept the profile claim from the destination account.
  • A capability endpoint must advertise household membership and profile-claim support for clients.

The design must define which profile-owned state transfers, how primary profiles are handled, how collisions and active sessions are resolved, and how external provider credentials are reauthenticated rather than copied where appropriate.

Account identity must remain separate from managed-profile identity. Household membership must not be conflated with the server-wide administrator role or the profile is_primary flag. Profile restrictions cannot expand the access granted to the account by its user-level and access-group permissions.

Client impact (android / apple / web)

  • Web: household member management, invitations, account acceptance, member switching, profile claiming, migration status, and leaving a household.
  • Android: account invitation/acceptance, household member selection, independent-account sign-in, profile claiming, and leaving a household.
  • Apple: account invitation/acceptance, household member selection, independent-account sign-in, profile claiming, and leaving a household.
  • Jellyfin-compatible clients: review parity for independent accounts and preserve the existing managed-profile/PIN behavior where possible.

Rough size (server-side)

L

AI harness

Codex desktop app

AI tool(s)

Codex exec_command, web.run, GitHub CLI

AI model(s)

GPT-5

AI involvement

AI-assisted

Independent or adversarial review

The repository was reviewed for account/profile ownership, authentication and session boundaries, profile-scoped watch providers, invitations, storage backends, and related client/API work. Existing issues were searched by household, home member, external account, profile transfer, account linking, login, Trakt, and Simkl terms. No duplicate request for this capability was found. This issue proposes architecture and API direction; implementation-level adversarial review should occur during design and PR review.

Related work

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    v1.0-proposedProposed for the v1 scope lock; awaiting triage

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions