Skip to content

TechnoJo4/priv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

priv

Private follows for Bluesky.

Usage

Subscribe to the "labeler" so that you can send reports to it, and pin the feed.

Report a user with the "Other" reason type, and enter a combination of these commands:

  • + or +posts: follow a user's posts
  • +rt: follow someone's reposts
  • +r: follow someone's replies
  • - or -all: completely unfollow someone
  • -posts: unfollow someone's posts
  • -rt: unfollow someone's reposts
  • -r: unfollow someone's replies

Join multiple commands together with spaces.

The default command if you enter none is + +rt (following someone and their retweets).

Deploying

To set a config option, open the database (sqlite) and execute INSERT OR REPLACE INTO config (k, v) VALUES (?, ?).

  1. Start the ingester to initialize the database.

  2. Choose between hosting your own mirror of did:plc or using Bluesky's directory to resolve.

    Config plc: https://plc.directory/

  3. Choose a domain for your feed generator, e.g. priv.merkletr.ee.

    Config feedDid: did:web:priv.merkletr.ee, svcUrl: https://priv.merkletr.ee

  4. Create a main DID for the "labeler" and Bluesky account. You can do this through your PDS.

    Config mainDid: did:plc:hrxxvz6q4u67z4puuyek4qpt

  5. You may now start the server.

  6. Add the atproto_labeler service to your main DID. You can do this through goat plc or goat account plc.

    {
      "did": "did:plc:hrxxvz6q4u67z4puuyek4qpt",
      // ...
      "services": {
        "atproto_pds": {
          // ...
        },
        "atproto_labeler": {
          "type": "AtprotoLabeler",
          "endpoint": "https://priv.merkletr.ee"
        }
      }
    }
  7. Create the app.bsky.labeler.service labeler definition record, e.g.:

    {
      "$type": "app.bsky.labeler.service",
      "policies": {
        "labelValues": []
      },
      "reasonTypes": [
        "com.atproto.moderation.defs#reasonOther",
        "tools.ozone.report.defs#reasonOther"
      ],
      "createdAt": "2025-11-11T00:00:00.000Z"
    }
  8. Create the app.bsky.feed.generator feed generator definition record, e.g.:

    {
      "$type": "app.bsky.feed.generator",
      "did": "did:web:priv.merkletr.ee",
      "createdAt": "2025-11-11T00:00:00.000Z",
      "description": "https://github.com/TechnoJo4/priv",
      "displayName": "Private follows"
    }

Config

  • plc, mainDid, feedDid, svcUrl: required, detailed above
  • maxFollows: maximum amount of follow relations each user may add
  • maxPostsPerFeed: amount of posts each user may have in their feed, pruning is enabled if this is set
  • pruneInterval: interval in milliseconds at which the pruning process runs
  • cursor: jetstream cursor, automatically managed by the ingester

About

Private follows for Bluesky

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published