Notes
Short thoughts, updates, and quick posts. (1581 total)
-
Huh π Music Mouse rebirth/reimagined?
-
Finally got my #fedify rel=me link working properly from the view of other Mastodon/Fediverse clients
-
Oh My God :)) Now You can interact with my posts from your fediverse instance, by setting your instance in your browser
localstorage, once this is set, click the Fediverse icon and youβll see my post through your own mastodon/pleroma instance ! -
Updated indiekit AP implementation to Fedify 2.0 !
-
Crafted this nice ActivityPub profile page for my Fedify/indiekit AP implementation, this is obviously for browsers, AP server receive an AP representation of my profile Screenshot below is Fedify 2.0 built in debugger

-
Caches GET/HEAD responses for ActivityPub endpoints (actor profiles, featured posts, notes, webfinger, nodeinfo) so hundreds of simultaneous fetches from federated instances are served from nginx instead of hitting Node.js.
Uses proxy_cache_lock to prevent thundering herd and proxy_cache_use_stale to serve during backend overload. POST /inbox and admin pages bypass the cache.
-
My indiekit blog now support comments authentication using RelMeAuth or IndieAuth, it also supports webmentions if youβre part of the #indieweb dance !
-
Cool stuff, a Thread reader for the fediverse : https://ap-thread-reader.fly.dev/
-
This post is made from my indiekit #fedify spec implementation turning my indiekit blog into an effective AP instance on the fediverse
- first I thought, why not reuse Microsub reader to consume AP content coming from the fediverse ? I tested it, customizing a bit the view to better handle AP activity (boost, star, quote, reply) but using a dedicated Microsub Channel as a Fediverse input for the AP fedify server turned out to be odd, an AP post is not an RSS item from a blog, and the firehose of posts, reply, quote, boost is too much to handle in a Microsub Channel, I resolved to build a proper reader for AP content
-
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.net β https://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/inboxWebFinger 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. π§ͺ
-
Testing syndication from my indiekit blog to self-hosted fedify AP implementation
-
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": {} } -
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
-
Test Fedi from #indiekit activitypub plugin
-
Test indiekit #activitypub plugin
-
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 :)
-
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" ] }