Social Home household OS · federated · open

Family safety

Protected accounts for children — age-gated spaces and apps, DMs kept close to home, and a quiet read-only overview for guardians.

Social Home is built for households, and households include children. Family safety lets a household admin give a child an account with sensible guardrails baked in — without turning the place into a surveillance system.

Protected accounts

A household admin can mark a member as a protected minor, set their declared age, and assign one or more guardians. That declared age then quietly shapes what the account can reach:

  • Age-gated spaces — a protected minor can’t join a space whose minimum age is higher than their declared age. The gate is enforced everywhere a member gets seated, including across paired households, and it travels with the space when it federates — so a remote space can’t sneak past it.
  • Age-restricted apps — apps an admin has put behind an age gate won’t open for an underage account.
  • DMs stay close to home — a protected minor’s direct messages are limited to households you’ve directly paired with, not the wider federation.
  • No public surfaces — a protected account is refused outright from the Bazaar (the marketplace), public spaces, public Moments, public highlight links and API tokens. There is no setting to loosen that.

The guardian view

A guardian gets a read-only overview of the people and places in their child’s world — the spaces they’re in, who they’re talking to, their DM contacts, and anyone they’ve blocked. It’s a window for a parent to stay aware, not a set of remote controls, and it never reaches into message contents.

Age gates are a space setting too

Any space — not just ones with children in mind — can set a minimum age (13, 16 or 18 — or none) and a target audience. Admins set it once, and the minimum age is checked on every path that seats a member: joining locally, joining from a paired household, and joining through a GFS link. There is no path that skips the check. See Global spaces for how a relay carries an age policy into a public directory.

Under the hood

min_age ∈ {0, 13, 16, 18} is part of the space’s signed settings and is evaluated by the same seating code for local joins, federated joins from paired households and GFS-link joins. Protected accounts (protected_minor = true) are refused at the service layer for the Bazaar, public-scope spaces, public Momentum, public highlight links and personal API tokens, regardless of declared age.