Skip to content

Plan: gate public FOSS nodes so strangers cannot host workspaces - #1271

Draft
joepio wants to merge 2 commits into
developfrom
cursor/foss-public-sync-gate-d97f
Draft

Plan: gate public FOSS nodes so strangers cannot host workspaces#1271
joepio wants to merge 2 commits into
developfrom
cursor/foss-public-sync-gate-d97f

Conversation

@joepio

@joepio joepio commented Aug 15, 2026

Copy link
Copy Markdown
Member

Related Issues

Design proposal — no issue number yet.

Checklist

  • Add changelog entry linking to issue, describe API changes
  • Add or update tests if needed
  • Update docs if needed

Planning only. Changelog, tests, and user-facing docs land with the implementation phases in planning/foss-public-host-mode.md.

What this is

A stock atomic-server on a public address currently uses OpenPolicy. Welcome → Create account, POST /commit genesis, and an Iroh SYNC_PUSH of a missing drive all land on your disk. Managed nodes already close this with AllowlistPolicy from the control plane. FOSS never installs that policy.

This PR proposes HostMode { Open, Owner }:

  • Open (localhost / private IP): today’s FOSS Create-account path. Unchanged. This is also how a new operator gets an agent DID.
  • Owner (public hostname, or --host-mode=owner): local allowlist, zero grace. Requires ATOMIC_OWNER_AGENT=did:ad:agent:… before bind — the DID only, never the secret. Missing or invalid value refuses to start (does not fall back to Open). Only that signer may enroll a new Drive. Collaborators invited to a Drive keep read/write on that Drive.
  • No setup token, no first-visitor claim. Identity is local-first; someone binding :443 is expected to already have a secret (localhost, desktop, or phone) and to put that agent ID in the env.
  • /server grows hostMode, acceptsNewDrives, ownerSet. Owner mode redacts the Iroh node id and peer list from unauthenticated clients. Welcome never offers Create account on an Owner node.
  • Closes unified-sync OQ5 for Owner: missing Drive ⇒ reject unless the signer matches ATOMIC_OWNER_AGENT, then enroll. Open keeps the bootstrap carve-out.

Public read of what the owner shared (ATOMIC_HOME_DRIVE, public Agent) does not change. No control plane, no email, no phone-home.

Docs in this PR

  • planning/foss-public-host-mode.md — threat model, env claim, UX journeys, admission rules, phased implementation
  • Cross-links in planning/README.md, unified-sync.md (OQ5), cloud-sync-managed-node.md, sync-onboarding-ux.md

Not in this PR

No runtime change. Phase 1 is policy-on-the-node (reuse AllowlistPolicy + required env), Phase 2 is welcome copy, Phase 3 is rate limits / Iroh leftovers.

Open in Web Open in Cursor 

cursoragent and others added 2 commits August 15, 2026 12:19
A stock atomic-server on a public address currently uses OpenPolicy, so
Create account / a genesis commit / an Iroh SYNC_PUSH of a missing drive
all land. Propose HostMode { Open, Owner }: localhost stays open, a
public node installs a local AllowlistPolicy with zero grace, a setup
token claims the owner, and collaborators keep write on invited drives
only.

Co-authored-by: joepmeindertsma <joepmeindertsma@gmail.com>
Drop the setup-token / first-visitor claim. Owner mode requires the
operator's existing agent DID in the env before bind; a missing or
pasted-secret value refuses to start. The public welcome page never
offers Create account.

Co-authored-by: joepmeindertsma <joepmeindertsma@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants