Who runs Oysters
Oysters has one person in charge: @tobbbles.cloud, who built it and has the final say on the rules, on moderation, and on where the project goes. Plenty of good communities started this way, and it’s better to say so plainly than to imply a committee that doesn’t exist.
The community is open. Anyone with an atproto account can read, post, comment and vote. That includes Bluesky accounts and self-hosted ones. There are no invites and no waiting list.
What keeps that honest is not a promise of good behaviour. It’s the structure:
- Every moderation action is public, with the moderator’s name and reason, in the moderation log. That includes actions taken by the person who runs the place.
- Your posts aren’t ours. They live in your own atproto account, so the worst Oysters can do is stop showing them here. You keep them, and so does every other service that reads them.
- You can take the data and leave. The schemas are public, and anyone can build a different board on the same posts.
Moderators. There are none yet besides the founder, whose admin role is set in the service’s configuration. As the board grows, moderators will be invited from members who take part regularly and whose reports tend to hold up. Actions taken against moderators are logged like anyone else’s.
Being built
Adding moderators from oyste.rs, naming them there, and recording every role change in the public log.
Open source. The code isn’t public yet. The plan is to open-source it, and this policy will live in the same repository as the code that enforces it, so changes to either go through the same review.
Principles
These come first. The rest of this page is how they’re applied.
- Open to everyone on atproto. No invites and no gatekeeping on who can join. The rules apply to what people do, not to who they are.
- Accountable, not anonymous. Every decision has a named person, a written reason and a public record.
- Use the lightest action that works. Lock a thread rather than hiding the post. Unlist before hiding. Warn before suspending.
- Everything can be undone. Moderators will sometimes be wrong. If being wrong is expensive, moderators stop deciding things at all.
- Say what the tools actually do. Oysters can hide a post, not delete it, so the tools say hide.
- Protect the people who report, and hear the people reported. Reports stay private. Every action can be appealed. Being built
- Defaults, not mandates. The board decides what everyone sees by default. Beyond the rules on this page, readers choose for themselves what to filter.
Board rules
What belongs here
Things worth a technologist’s time: essays, deep dives, papers, talks, side projects and tools. That covers software, systems, the web, science and engineering, and the craft and culture of building things.
Ask whether it will still be worth reading in a year. A careful post-mortem will be. A launch announcement usually won’t.
What usually doesn’t
- Product announcements, funding rounds and press releases with nothing to learn from them
- Politics and business news, unless the substance is technical
- Outrage, listicles, SEO filler, and content farms
- Links you can’t read without paying, unless you’ve included a readable copy
These get marked off-topic. That isn’t a judgement of the post or the person. It means this board isn’t the place for it.
How to post
- Use the original title. Remove clickbait if you have to, but don’t add your own spin.
- Share your own work, in moderation. It’s welcome, as long as you also take part in the community. An account that only posts its own links will be treated as promotion.
- Disclose your connection to what you’re posting: your employer, your project, your client.
- Say if a model wrote it. If the text of your post was mostly generated, say so.
- Post a link once. Resubmitting the same story to get it noticed is spam.
How to talk
- Be hard on ideas and kind to people. Disagree with the argument, not the person making it.
- Assume the author is reading. On atproto, they’re one follow away.
- No harassment, no pile-ons, no doxxing. None of these is ever on-topic.
What moderation can actually do
A submission on oyste.rs is a record in its author’s repository. The board is an index of records it didn’t write and can’t delete. So the usual forum powers don’t apply, and we won’t pretend they do:
| What you might expect | What Oysters can do |
|---|---|
| Delete a post | Stop showing it. The record stays in the author’s repository, and other services may still show it |
| Ban a user | Stop indexing and showing them here. Their account, repository and audience elsewhere are untouched |
| Edit something out | Nothing. We can hide a whole record or none of it |
| Make it never have happened | Nothing. The network has already delivered it to everyone listening |
This is the architecture working as intended. The same property that means Oysters can’t deplatform you also means Oysters can’t clean up after itself.
The one exception: you can always delete your own post. The board sees the deletion and drops the post like any other.
How a decision gets made
- A report. Any signed-in member can report a post or a comment. Reporting a whole account is next. Being built
- The queue. Reports are grouped by what they’re about, not counted one by one, and ranked so the most credible concerns come first.
- An action. A moderator decides. Every action has a type, a named moderator and a written reason, and can be reversed.
- Enforcement. The decision changes what the board shows everywhere at once: feeds, threads, profiles and the API.
- The record. The action is published in the public moderation log.
A moderator can also close a report without acting. That isn’t logged publicly, because nothing happened to anyone, but it’s recorded so the same report doesn’t come back to the top of the queue.
Reporting
Reports use the network’s standard reasons, so they mean the same thing here as in any other atproto moderation tool:
| Reason | For |
|---|---|
| Spam | Unsolicited, repetitive, promotional |
| Violation | Breaks one of the board rules |
| Misleading | Impersonation, made-up claims |
| Sexual | Unwanted sexual content |
| Rude | Harassment, abuse |
| Off-topic | Well-behaved, but not what this board is for |
| Other | Anything else. Add a note so the moderator knows what you mean |
Off-topic is an Oysters addition (pub.oysters.reasonOffTopic). On a link board it’s the most common reason anything is moderated, and the least like abuse, so it gets its own name instead of being lumped in with other.
Reports are private. A report is something you tell the board, not something you publish. Who reported what is never shown: not in the moderation log, not to the person reported, and not through the API. A public record of who reported whom would be a harassment tool.
Reports are weighed, not just counted. Ten reports from one person count once. Each reporter’s weight depends on how often their past reports were upheld, and a first report starts at average. People who report accurately are heard first. People who report everything they disagree with fade out without anyone having to argue with them.
What moderators can do
On a post
| Action | Effect |
|---|---|
| Hide | Gone from feeds, threads, profiles and the API |
| Unlist | Out of the feeds, still reachable by direct link |
| Lock | Existing comments stay, new ones are refused, including from other atproto apps |
Unlist and lock exist so that not every problem ends in removal. A thread that has gone bad under a good article needs a lock. A post that’s technically on-topic but crowding out the front page needs unlisting.
On a comment
| Action | Effect |
|---|---|
| Hide | Gone from the thread and the API |
A comment’s visibility follows its thread, so there’s nothing lighter to offer than hiding it.
On an account
| Action | Effect |
|---|---|
| Warn | The moderator’s message, shown to them on the next page they load. Nothing else |
| Adjust trust | Changes how much their votes count. Logged like every action, but there’s no score on anyone’s profile. Admins only Being built |
| Suspend | Their posts and comments stop showing here, and new ones are ignored, until it’s lifted. Their vote weight is left alone |
| Ban | The same as a suspension, and their votes stop counting too |
| Ban and hide everything | A ban that also hides each of their posts and comments individually, so lifting the ban later doesn’t bring back the spam that caused it |
Nothing destroys data. A suspension or ban is checked when the board reads and indexes records, and nothing is deleted. Lifting one brings their content back and resets their vote weight to normal. The one exception is content hidden by ban and hide everything, which stays hidden until a moderator un-hides it.
Automatic actions
Being built
When enough credible, independent members report the same post, it will be automatically unlisted until a moderator looks at it. That’s all automation will be allowed to do. It never hides anything and never touches an account. It always leaves the decision to a person, is always logged as a system action, and is rate-limited so a coordinated campaign can’t empty the front page.
Decisions made by your host
If your own hosting provider suspends or takes down your account, oyste.rs stops showing it too. That’s a fact about your account elsewhere and is kept separate from Oysters’ own decisions. An Oysters ban never overrides your host, and your host’s decision never quietly becomes an Oysters ban.
Trust
Every account has a trust weight that scales how much its votes count in ranking. It starts the same for everyone, and only moderation changes it: it drops a little when reports against you are upheld, and comes back if you win an appeal.
It will also drift back to normal over time if nothing else happens. Being built
Trust is deliberately not karma. It isn’t displayed and it can’t be farmed. People optimise a visible number; an invisible weight leaves nothing to game.
This is separate from reporter weight (see Reporting), which only affects how reports are ranked in the queue.
The public log
Every action is visible to everyone at oyste.rs/moderation/log: what was done, whether it was to a post, a comment or an account, which moderator did it (or that it was automatic), why, when, and any reversal.
Linking each entry to the post or account it was about is next. Being built Where repeating it would itself cause harm (doxxing, targeted harassment, abuse material), the entry will say only that an action was taken and why, and won’t link to or repeat the content.
Some things are never published: who made the report, and moderators’ private notes.
Appeals
Being built
If an action was taken against you or your content, you can appeal it from oyste.rs. Appeals have their own queue, so they don’t wait behind reports.
An upheld appeal reverses the action and lowers the weight of the reports that caused it, so people who were wrong lose a little standing automatically.
Until the appeal button is live, message @tobbbles.cloud on Bluesky with a link to the action in the moderation log.
While there’s only one moderator, appeals go to the same person who acted. Once there are more, an appeal goes to a different moderator from the one who made the decision.
Choosing what you see: labels
Moderation decides what the board shows everyone. Labels are how Oysters plans to let you decide the rest.
A labeler is an atproto account that publishes signed claims about posts, such as “spam”, “paywalled” or “probably AI-written”. Oysters subscribes to a set of labelers, and:
- The board picks the defaults: which labelers count, and what each label does: hide it, sink it in the ranking, or show a badge. Signed-out readers see those defaults. Being built
- You can override them. For each label, choose to hide it, sink it, show a badge, or ignore it. Planned
- Only board moderation is enforced on everyone. If the board ever adopts another service’s labeler for something like illegal content, every hide it causes will appear in the public log under that labeler’s name. Planned
The machinery for subscribing to labelers and applying board defaults is built, but the board doesn’t subscribe to any labelers yet. Which ones it adopts, and what they do, will be listed here first.
Planned
The first labeler Oysters plans to run flags AI-written text, at two confidence levels so you can decide how much uncertainty to act on. It will run privately until its error rate has been measured. It won’t send anyone’s posts to a model if they’ve opted out of AI use. Authors can dispute a label, and an upheld dispute withdraws it. By default the board will only show a badge. Hiding or sinking is your choice.
Oysters’ own moderation decisions will be published as labels too. Planned That makes them:
- Portable. Another app showing
pub.oysters.postcan follow our labels, ignore them, or do the opposite. Our moderation becomes an opinion others may take. - Checkable. Labels are signed and timestamped, so someone who doesn’t trust us can verify them.
- Reversible everywhere. When we reverse a decision, a withdrawal label undoes it wherever the original was used.
Changes to this policy
Changes to these rules are announced on oyste.rs before they take effect. Every version of this policy is kept exactly as it was published, with its date and a summary of what changed, in the history.