Notes

Short thoughts, updates, and quick posts. (1592 total)

  • ActivityPub / Fedify Compliance Report Indiekit

    Field Value
    Target rmendes.net (@rick)
    Date 2026-02-20T21:20:08Z
    Tests 22 total: 22 passed, 0 failed, 0 skipped
    Grade A+ — Full compliance — all tests pass
    Fedify ^1.10.3
    Software Indiekit + @rmdes/indiekit-endpoint-activitypub

    Summary

    Category Pass Fail Skip Status
    Discovery 3 0 0
    Actor 3 0 0
    Collections 8 0 0
    Content 3 0 0
    Inbox 2 0 0
    Federation 2 0 0
    HTTP 1 0 0

    Detailed Results

    Discovery

    Test Status Detail
    WebFinger resolution ✅ PASS WebFinger OK: acct:rick@rmendes.nethttps://rmendes.net/activitypub/users/rick
    NodeInfo endpoint ✅ PASS NodeInfo OK: indiekit v1.0.0, 249 local posts, protocol: activitypub
    NodeInfo well-known chain ✅ PASS NodeInfo well-known OK: Discovery chain valid, schema 2.1

    Actor

    Test Status Detail
    Actor lookup (fedify) ✅ PASS Actor OK: Person at https://rmendes.net/activitypub/users/rick
    Actor required fields ✅ PASS Actor fields OK: inbox, outbox, followers, following, liked, featured, featuredTags, publicKey, assertionMethods, sharedInbox, name, icon, published
    Actor JSON structure ✅ PASS Actor JSON OK: Person with all required fields, collection links, and security keys

    Collections

    Test Status Detail
    Outbox collection ✅ PASS Outbox OK: OrderedCollection with 249 items
    Followers collection ✅ PASS Followers OK: OrderedCollection with 832 items
    Following collection ✅ PASS Following OK: OrderedCollection with 2563 items
    Liked collection ✅ PASS Liked OK: OrderedCollection with 68 items
    Featured (pinned) collection ✅ PASS Featured OK: OrderedCollection with 0 pinned items
    Featured tags collection ✅ PASS Featured tags OK: Collection with 0 tags
    Collection URI resolution ✅ PASS Collection URIs OK: All actor collection endpoints return valid JSON
    Outbox traversal (first page) ✅ PASS Outbox traversal OK: Contains Create activities with Note objects, proper addressing

    Content

    Test Status Detail
    Post returns AS2 JSON ✅ PASS Content negotiation OK: https://rmendes.net/notes/2026/02/20/f3f0e serves AS2 JSON
    Root URL redirects to actor ✅ PASS Root redirect OK: https://rmendes.net/https://rmendes.net/activitypub/users/rick
    Object dispatcher (dereference) ✅ PASS Object dispatcher OK: Note at https://rmendes.net/notes/2026/02/20/f3f0e

    Inbox

    Test Status Detail
    GET inbox returns 405 ✅ PASS Inbox GET OK: returns 405 Method Not Allowed
    GET shared inbox returns 405 ✅ PASS Shared inbox GET OK: returns 400 (rejected)

    Federation

    Test Status Detail
    Instance actor (Application) ✅ PASS Instance actor OK: Application type with hostname identifier
    WebFinger alias resolution ✅ PASS WebFinger alias OK: profile URL and /@handle both resolve

    HTTP

    Test Status Detail
    HTTP headers compliance ✅ PASS HTTP headers OK: Correct content types on actor, outbox, and WebFinger

    Fedify Feature Compliance Matrix

    Maps implemented Fedify features against the Fedify SDK capabilities.

    Core Federation

    Feature Fedify API Status Notes
    Actor Dispatcher setActorDispatcher() ✅ Implemented Person/Service/Group/Organization via config
    Key Pairs setKeyPairsDispatcher() ✅ Implemented RSA-2048 + Ed25519 dual keys
    Handle Mapping .mapHandle() ✅ Implemented Handle + hostname (instance actor)
    Alias Mapping .mapAlias() ✅ Implemented Profile URL + /@handle resolution
    Inbox Listeners setInboxListeners() ✅ Implemented Follow, Undo, Accept, Reject, Like, Announce, Create, Update, Delete
    Shared Inbox Inbox URL pattern ✅ Implemented /activitypub/inbox
    WebFinger Automatic ✅ Implemented Via Fedify’s built-in handler
    NodeInfo setNodeInfoDispatcher() ✅ Implemented Schema 2.1, dynamic version

    Collections

    Feature Fedify API Status Notes
    Outbox setOutboxDispatcher() ✅ Implemented Paginated, Create activities
    Followers setFollowersDispatcher() ✅ Implemented Paginated, ordered
    Following setFollowingDispatcher() ✅ Implemented Paginated, ordered
    Liked setLikedDispatcher() ✅ Implemented Objects the actor has liked
    Featured setFeaturedDispatcher() ✅ Implemented Pinned posts, admin UI
    Featured Tags setFeaturedTagsDispatcher() ✅ Implemented Hashtag discovery, admin UI

    Content Resolution

    Feature Fedify API Status Notes
    Object Dispatcher setObjectDispatcher() ✅ Implemented Note/Article dereferencing
    Content Negotiation Custom middleware ✅ Implemented AS2 JSON for post URLs

    Delivery & Reliability

    Feature Fedify API Status Notes
    Message Queue RedisMessageQueue ✅ Implemented Redis-backed persistent queue
    Parallel Queue ParallelMessageQueue ✅ Implemented Configurable worker count (default: 5)
    Ordering Keys sendActivity({ orderingKey }) ✅ Implemented Per-follower ordering
    Collection Sync sendActivity({ syncCollection }) ✅ Implemented FEP-8fcf, shared inbox sync
    Permanent Failure Handler setOutboxPermanentFailureHandler() ⏳ Deferred Requires Fedify 2.0+ API changes
    Context Data createFederation({ contextData }) ✅ Implemented Handle + publication URL

    Security & Identity

    Feature Fedify API Status Notes
    HTTP Signatures Automatic (RSA) ✅ Implemented Via key pairs dispatcher
    Object Integrity Proofs Automatic (Ed25519) ✅ Implemented Via assertionMethods multikey
    Instance Actor Application type actor ✅ Implemented Domain-level federation actor
    Authorized Fetch .authorize() predicate ⏳ Deferred Removed — requires authenticated document loader to avoid 401 loops with remote servers
    Configurable Actor Type Constructor selection ✅ Implemented Person/Service/Organization/Group

    Discovery Extensions

    Feature Fedify API Status Notes
    NodeInfo Dynamic Version createRequire() ✅ Implemented Reads from @indiekit/indiekit/package.json
    alsoKnownAs Actor property ✅ Implemented For Mastodon account migration
    Profile Attachments PropertyValue ✅ Implemented Key-value metadata fields

    Generated by activitypub-tests/run-all.sh — 2026-02-20T21:20:48Z

  • Testing ActivityPub syndication after Fedify feature completeness update — this note should appear on the fediverse. 🧪

  • Fedi Blog Coding

    Really cool, now when I like/repost/reply to a URL, be it a #indieweb blog or a Fediverse post, the resulting web action (reply, like, repost, bookmark) display a nice unfurl of the opengraph tags of the remote URL

  • Fedi

    Testing syndication from my indiekit blog to self-hosted fedify AP implementation

  • Fedi

    As seen in FediDB node explorer tool :

    {
      "$schema": "http://nodeinfo.diaspora.software/ns/schema/2.1#",
      "version": "2.1",
      "software": {
        "name": "indiekit",
        "version": "1.0.0"
      },
      "protocols": [
        "activitypub"
      ],
      "services": {
        "inbound": [],
        "outbound": []
      },
      "openRegistrations": false,
      "usage": {
        "users": {
          "total": 1,
          "activeMonth": 1,
          "activeHalfyear": 1
        },
        "localPosts": 237,
        "localComments": 0
      },
      "metadata": {}
    }
    
  • Fedi

    Hi #fediverse community I’m an old timer here and other Mastodon server since 2016 I was previously @rmdes@mstdn.social and very recently moved to my own #Fedify #indiekit AP instance meaning I’m the only indiekit user with an AP actor endpoint https://browser.pub/rmendes.net I’m still testing migration (ongoing) I may have lost some social connection but its okay. I’m using this account to verify my Fedify AP works as expected my future account is @rick@rmendes.net once everything is stable

  • Fedi

    Test Fedi from #indiekit activitypub plugin

  • Fedi

    Test indiekit #activitypub plugin

  • Fedi Mastodon Fedify

    Very much in development but I have thinkered around Microsub and developing a Fedify driven indiekit plugin so that I can be my own AP actor in the fediverse from where I run my blog (indiekit) https://rmendes.net/content/notes/2026-02-19-8b1d5/

    If you search #mastodon from any URL’s on my blog, it will return its AP representation, now I’m hacking microsub to be able to reuse its reader capability to read from AP timelines

  • Test from Indiekit ActivityPub plugin, if you see this, please react :)

  • Fedi

    I Guess I’m now the first ever Indiekit Instance on the #fediverse

    Thanks to Fedify

    {
      "@context": [
        "https://www.w3.org/ns/activitystreams",
        "https://w3id.org/security/v1"
      ],
      "type": "Person",
      "id": "https://rmendes.net/",
      "preferredUsername": "rick",
      "name": "Ricardo Mendes",
      "url": "https://rmendes.net/",
      "inbox": "https://rmendes.net/activitypub/inbox",
      "outbox": "https://rmendes.net/activitypub/outbox",
      "followers": "https://rmendes.net/activitypub/followers",
      "following": "https://rmendes.net/activitypub/following",
      "publicKey": {
        "id": "https://rmendes.net/#main-key",
        "owner": "https://rmendes.net/",
        "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4F2MDzCr5lYiI9LSFpf4\nsysMIQK63Po5FkVPKzfQSdxHJjYEFqniKRHa+gpQzg0aadSWMIsBbZWvVKypKZZR\nd3g3LDvtV6zyCOdQ0XUxp4ggYmvj22VcdZkyeygMSxkl9D8zr6U5TzAEfPYBMUMx\nwruTUAAFpyLQTCQmSCcMllxlPvgeHCF54VYg8QArTvvYz9G7IMsjR1OWM1AAg2Iy\n1UevOPBLVdSt2SBYf1GccsLjHEwgPTFT2iBtE2FTwlVgthOpEG5imB1Up0G1gZtA\nA5RCG1nR9ymRCFpDfg5Awtx+vtNCQ64guM1yjMeKEk7KJoULWqF2O+iEzvyR/BPq\n8QIDAQAB\n-----END PUBLIC KEY-----\n"
      },
      "summary": "Personal website of Ricardo Mendes",
      "icon": {
        "type": "Image",
        "url": "https://rmendes.net/images/user/avatar.jpg"
      },
      "alsoKnownAs": [
        "https://mstdn.social/users/rmdes"
      ]
    }
    
  • podcasts

    Lately I have spent more time bookmarking /podcasts episodes I don’t want to miss than actually listening to them !

  • Politics Trump Colbert

    “Let’s just call this what it is: Donald Trump’s administration wants to silence anyone who says anything bad about Trump on TV, because all Trump does is watch TV, OK? He’s like a toddler with too much screen time. He gets cranky and then drops a load in his diaper.”

    Read More

  • feedland cloudron

    Anyone can now install #FeedLand on their #Cloudron without building anything : deploy repo package is here

    cloudron install --image rmdes/feedland-cloudron:latest --location feedland.example.com

  • Integrated a Feedland widget on my blog sidebar https://rmendes.net/content/articles/2026-02-14-deploying-your-own-indieweb-site/ (you’ll have to scroll down to see it) #blogroll

  • indiekit feedland microsub RSS

    My indiekit blogroll plugin now supports feeding a blogroll page/widget from OPML URL, OPML FILE, Microsub and Feedland the first two are a given, but the microsub source basically reuse the already subscribed feed from my indiekit microsub implementation and display them as blogroll items and Feedland is more or less the same idea but the source here is a feedland server providing the dynamic OPML input.

  • test

    Test Note to test post edit on my site

  • opensource discord
  • indieweb indiekit deployment

    New to Indiekit? Read the full deployment guide — a step-by-step walkthrough covering server setup, DNS, configuration, first-run password creation, syndication, webmentions, and the full plugin set.

  • AI

    Just a few months ago, AI coding was described as an overblown “auto-complete”, auto-complete has been around for functions and classes and what not since…I don’t know, years ? imagine if PR were rejected because the developer had used auto-complete to help him/her write a piece of code, or worst, a bug fix?

    I fully understand that no humans should be tasked to review spam PR & spam automated “contributions” but if a contribution is “generated” by Claude and/with a Human, in my view, it is as much valid as a purely human contribution. Code is Code, Improvement is Improvement.

    I bet this will be seen as completely outdated in just a few months, some will resist, will even fight against human+ai contributions, but they are only going against the tide.