Skip to content
saylek

Circles and membership

A Circle is the unit of trust, the unit of reach, and the thing you actually join. This page covers who ends up in one, what that lets them do, and how to leave.

What a Circle controls

Membership decides routing. A Host can only serve members of a Circle it belongs to, and your requests can only reach Hosts in Circles you belong to. There is no path from a stranger's machine to yours or back.

How people get in

A Circle has two independent settings, and together they decide who can join.

SettingValues you can choose todayDefault when you create one
Visibilityunlisted, privateunlisted
Admission policyinvite-only, open-joininvite-only

Those defaults are deliberate: a Circle you create is neither publicly listed nor open to join until you say so.

There is a third visibility, public, which puts a Circle in the browsable directory. Creating one is not available yet while we validate that directory, so saylek circles create --visibility public tells you it is coming soon rather than making one. Public Circles that already exist stay browsable and joinable.

Who can admit people: minting invites is restricted to the Circle's owner (and, for a Circle owned by an organization, its owner or admins). An ordinary member cannot bring someone in. So on an invite-only Circle, everyone present was admitted by whoever runs it.

The consequence worth understanding:

  • On an invite-only Circle, admission is controlled by the owner. If you trust the owner's judgement, you are trusting everyone in the Circle.
  • On an open-join Circle, anyone who can reach it joins without an invite. If it is also public it appears in saylek circles browse and is joinable by anyone browsing. Since new Circles cannot be public yet, an open-join Circle you create today is reachable only by someone you hand its invite or circle id to.

"Everyone here was vouched for" is a property of an invite-only Circle, not of Circles in general. Check which kind you are joining.

Joining

For an invite-only Circle, redeem the invite you were given:

saylek circles join --invite https://saylek.com/c/<circle-id>/<token>

The bare composite form works too:

saylek circles join --invite <circle-id>:<token>

Both forms parse into identical requests before anything touches the network, so a malformed invite fails locally rather than on the wire.

For an open-join Circle there is no token, so join by id:

saylek circles join --circle-id <circle-id>

Joining is the consent. Once you are in, requests your own machine cannot serve may run on a Circle-mate's GPU by default. Read Privacy and egress before you join with a machine that handles sensitive work.

To find public Circles:

saylek circles browse

Only public Circles are listed. Unlisted and private ones are reached directly with a join link.

Creating and running one

saylek circles create --name "<name>" --slug <url-safe-slug>

--slug is optional at the command line but required by the server, so pass it or the create fails. Add --visibility and --admission-policy only if you want something other than the safe defaults above.

Then mint a link to bring people in:

saylek circles invites-mint --circle-id <circle-id>

Links are single-use and expire in 24 hours by default. --uses N (1 to 100) lets one link admit up to N people, and --expires takes a duration such as 7d, 24h, or 1h.

As written above it only prints the link, and delivering it is your choice. Add --email and Saylek sends it for you:

saylek circles invites-mint --circle-id <circle-id> --email them@example.com

An emailed invite defaults to a 7-day expiry rather than 24 hours. See Invite flow for the whole picture.

If a reusable link has spread further than you intended:

saylek circles invites-reset --circle-id <circle-id>

That revokes every active link you issued for the Circle, so previously shared links stop admitting anyone. It is idempotent: resetting when nothing is active still succeeds. Mint a fresh link afterwards.

Seeing who is in

saylek circles members --circle-id <circle-id>

The roster shows each member's display name, role, join date, and user id. It shows a placeholder where a display name is unset, because the roster is email-blind by design: members do not see each other's email addresses.

Note the difference from:

saylek circles list

That one is offline and device-local. It reports the Circle credentials this machine holds, not every Circle you belong to. It is honest about that limit in its own output.

Removing someone

saylek circles kick --circle-id <circle-id> --user-id <user-id>

Find the user id with saylek circles members. Add --yes to skip the confirmation when scripting. Kicking is reversible: they can rejoin with a fresh invite.

On an invite-only Circle, kick plus invites-reset is the complete removal, because only an owner or admin can mint a way back in.

There is deliberately no ban verb. It would only add reach on an open-join Circle, where a removed member could rejoin unaided, and the production posture is invite-only.

Other owner commands

CommandWhat it does
saylek circles transferHand ownership of a Circle to another member.
saylek circles archiveRetire a Circle you own.
saylek circles revokeRevoke this device's Circle credential, so it stops drawing on the pool.

Run any of them with --help for the exact flags.

Leaving

saylek circles leave <circle-id>

Note that leave takes the id positionally, unlike the owner commands above, which take --circle-id. When in doubt, saylek circles <command> --help is authoritative.

Leaving is reversible: rejoin later with a new invite. It drops that Circle's models from your reach within seconds, and your other Circles are unaffected.

Leaving your last Circle also withdraws the egress default: with no live membership, Saylek stops routing your requests to anyone. Two caveats worth knowing, both covered on Privacy and egress: your machine caches membership for a few minutes, so the change is not instantaneous, and none of this touches a proxy upstream you configured yourself.

For pausing or deleting your whole account instead, see Common commands.

Next steps

Last checked 2026-07-24 · read as markdown at /docs/circles.md