Skip to main content
← Back to list
01Issue
FeatureOpenSwamp Club
AssigneesNone

Relationships

#1553 Reusable long-lived invite link: one URL to bring people into the swamp

Opened by sntxrr · 8/7/2026

Problem

Every path for bringing someone into swamp today is keyed to a single email address I have to know in advance:

  • POST /api/v1/invites / the proposed swamp invite <email> (#1376)
  • the standalone-user invite flow in #1207

That fits one-at-a-time recruiting, but it doesn't fit how people actually share things. A link in a Slack channel, a Discord message, a conference slide, a README, a blog post, an email signature — in all of those I don't know the addresses ahead of time, and I don't want to collect them just to type them back into a CLI one at a time. The 20-pending-invite cap noted in #1376 makes broadcast recruiting a non-starter on the email path regardless.

The result is that the CLI-first way to say "come join swamp" is to tell people to go to swamp-club.com themselves, which drops the attribution the whole invite/recruit incentive system is built on.

Proposed solution

A long-lived, reusable invite URL tied to the operative — not to an invitee.

swamp invite link
https://swamp-club.com/join/<slug>

Anyone who opens it lands on signup, and completing signup credits the inviter exactly as an email invite does today (recruit attribution, First Rule badge when they reach Tier 5).

Properties that matter:

  • Long-lived by default. No expiry, no redemption cap. That's the point — the link has to still work when someone finds the README a year later.
  • Stable / idempotent. Re-running the command returns the same link rather than minting a new one, so a previously-shared URL never silently dies.
  • Revocable. swamp invite link --revoke kills the slug; re-minting yields a fresh one. Already-accepted signups are unaffected.
  • --json for scripting.

Anti-abuse is a server-side policy question rather than a CLI one: because the link is unbounded, swamp-club may want the same fraud/rate limiting it applies to email invites, and credit already being deferred to Tier 5 does most of that work. The CLI just needs to surface whatever the server decides.

Alternatives considered

  • swamp invite <email> (#1376) — right primitive, wrong shape. Requires knowing addresses up front and is capped at 20 pending invites.
  • #1207 — mentions "generate an invitation link (or send an email)", but frames it per-invitee. This request is specifically the reusable, not-email-keyed case, and I'd expect it to reuse whatever acceptance path #1207/#1376 land on rather than duplicate it.
  • "Just go sign up at swamp-club.com" — works, but discards inviter attribution entirely, which is the entire incentive design.
  • A swamp serve token in a URL — wrong layer. Those grant access to one serve instance and default to a 30-day life; this is platform onboarding.

Scope

  • swamp-club: a /join/<slug> route, slug storage + inviter attribution, reusing the existing invite-acceptance path.
  • swamp CLI: swamp invite link [--revoke] [--json], sharing the credential and origin resolution that swamp invite <email> (#1376) would use.
02Bog Flow
OPENTRIAGEDIN PROGRESSSHIPPED

Open

8/7/2026, 5:51:12 PM

No activity in this phase yet.

03Sludge Pulse

Sign in to post a ripple.