I'm writing a #Fedify tutorial, and I keep saying things like “you don't need to know what Ed25519 is” and “you don't need to know what JWK is for this tutorial.” Would this be okay?
fedify
I feel that the current abstraction level of #Fedify is not high enough which makes the tutorial lengthy, so I'm considering adding a higher-level API. One way would be to add a façade to the @fedify/fedify package, and another way would be to create a sort of metaframework as a separate package (e.g., @fedify/start?).
Which way would be better?
Options: (choose one)
Introducing #Fedify: A powerful #TypeScript library for building #ActivityPub server apps in the #fediverse! 🚀
Fedify aims to simplify the complex world of federated apps, allowing developers to focus on what matters most—their unique features and user experience. Let's explore what makes Fedify stand out! 🧵
The fedify command is now available on #npm! You can install it using the following command:
npm install -g @fedify/cli
Or if you use #Bun:
bun install -g @fedify/cli
Now that I've created the `fedify init` command, I've been thinking about how to modify #Fedify's #tutorial. If I make Fedify's tutorial use `fedify init`, it could omit the project setup part at the beginning. However, the chance to get some understanding of how things work like in the current tutorial would be lost. 🤔
What's the biggest thing that makes you hesitant to use #Fedify, an #ActivityPub server framework?
Options:
A good issue to contribute to #Fedify for the first time. Anybody interested?
Q: Which does your #ActivityPub implementation implement, HTTP Signatures, Linked Data Signatures, or Object Integrity Proofs?
Introducing Fedify: Build Your Own Fediverse App with Ease! 🚀
Are you excited about the #fediverse but find implementing #ActivityPub daunting? Meet #Fedify, a #TypeScript framework that simplifies building federated server apps. Whether you're creating the next Mastodon, Pixelfed, or something entirely new, Fedify has you covered.
What Fedify Offers:
🧩 Type-safe Activity Vocabulary objects
🔍 WebFinger client and server
🔐 HTTP Signatures, Linked Data Signatures, and Object Integrity Proofs
📨 Easy-to-use inbox listeners
ℹ️ NodeInfo protocol support
🛠 CLI tools for testing and debugging
Fedify abstracts away the complexities of ActivityPub, letting you focus on your app's unique features. It's designed to work seamlessly with popular web frameworks like Hono, Express, and Fresh.
Get Started Today!
Check out our step-by-step tutorial to create a microblog: https://fedify.dev/tutorial/microblog
Explore the discussions, contribute, or just star us on GitHub: https://github.com/dahlia/fedify
Join the Fedify community! Questions? Ideas? Find us on Matrix: #fedify:matrix.org.
Let's build a more diverse and interoperable fediverse together with Fedify!
Looks like #Fedify v1.0.0 will be released this week! Is there anything you'd like to see added or fixed before then?
Though we have OpenTelemetry Semantic Conventions 1.28.0, it does not yet define attributes related to the fediverse. So #Fedify is taking the initiative to define semantic attributes related to the ActivityPub protocol and its related protocols. If you have any ideas, please leave a comment!
https://gist.github.com/dahlia/7ad0f197a3a87072707996b2ee14a749
The version 1.3.0 of #Fedify, an #ActivityPub server framework, released! The key changes include:
Instrumented spans for OpenTelemetry are added. In most cases, it's automatically enabled if your application configured OpenTelemetry SDK.
Since Fedify 1.3.0, you can configure different MessageQueues for incoming and outgoing activities.
Fedify now allows you to manually route an Activity to the corresponding inbox listener. It is useful for invoking an inbox listener for an Activity enclosed by another Activity.
Context.sendActivity() and InboxContext.forwardActivity() methods now reject when they fail to enqueue the task.
Thanks to @robin_maki, @fedify/fedify/x/sveltekit module is added for integrating with SvelteKit hook.
Fedify now makes HTTP requests with the proper User-Agent header, e.g., User-Agent: Fedify/1.3.0 (Deno/2.1.2).
For details, see the full changelog as well!
I'd like to translate #Fedify's docs into multiple languages, at least into Korean and Japanese, which are languages I speak, but I'm not sure how useful it would be compared to the cost. Fedify's docs are already pretty extensive, so translating them would be difficult, plus the cost of updating them would be quite high. 🤔
If you'd like to support the development of @fedify or @hollo or @botkit, you can sponsor me on GitHub!
Two new features are coming to #Fedify! Both have to do with controls over domain names:
Different domains for WebFinger handles and server URIs.
Canonical origin support to explicitly set your server’s authoritative domain
https://hollo.social/@fedify/01953693-1afd-7430-988a-23d649099e1c
We'd like to introduce the #Fedify project family—a set of related tools that make building #ActivityPub applications more accessible:
@Fedify (@fedify) is a #TypeScript library for building federated server applications powered by ActivityPub and other #fediverse standards. It provides type-safe objects for Activity Vocabulary, WebFinger client/server, HTTP Signatures, and more—eliminating boilerplate code so you can focus on your application logic.
@Hollo (@hollo) is a single-user microblogging server powered by Fedify. While designed for individual users, it's fully federated through ActivityPub, allowing interaction with users across the fediverse. #Hollo implements Mastodon-compatible APIs, making it compatible with most Mastodon clients without needing its own web interface.
Hollo also serves as our testing ground for bleeding-edge Fedify features before they're officially released.
@BotKit (@botkit) is our newest family member—a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, #BotKit creates standalone ActivityPub servers that aren't constrained by platform-specific limitations (like character counts).
BotKit's API is intentionally simple—you can create a complete bot in a single TypeScript file!
All three projects are open source and hosted under the @fedify-dev GitHub organization. While they serve different purposes, they share common goals: making ActivityPub development more accessible and expanding the fediverse ecosystem.
If you're interested in trying any of these projects or contributing to their development, check out:
Fedify: https://fedify.dev/
Hollo: https://docs.hollo.social/
BotKit: https://botkit.fedify.dev/
We're excited to announce two major features coming in #Fedify 1.5.0, focused on giving you more control over domain names in your federated apps:
Separate WebFinger Host from Server Origin
Want different domains for your WebFinger handles and server URIs? Fedify 1.5.0 will let you use domains like @alice@example.com as fediverse handles while serving content from https://ap.example.com. This gives you more flexibility in how you structure your federated services.
Need to ensure consistent URLs across your infrastructure? The new canonical origin support lets you explicitly set your server's authoritative domain. This is particularly useful when running behind reverse proxies or load balancers—no more unexpected URLs generated from internal hostnames.
These features represent our ongoing commitment to making Fedify more flexible and production-ready.
Can't wait to try these features? You can experiment with them today using our unstable release v1.5.0-dev.680+562e3dc0 (JSR & npm). Keep in mind that this is an unstable release intended for testing—use it in production at your own risk.
Otherwise, stay tuned for the stable Fedify 1.5.0 release!
#Fedify 1.4.0 has been released, and #BotKit 0.1.0 will be based on Fedify 1.4.0. BotKit 0.1.0 is also about to be released, so please stay tuned!
https://hollo.social/@fedify/0194d42d-ee82-7a21-b66e-f88702278099
I talked about #ActivityPub and #Fedify on @guu's wonderful podcast, Software Sessions. I'm embarrassed by my poor English, but if you're interested, please listen!
We're incredibly honored to announce that #Ghost (@index) has become a formal sponsor of Fedify through Open Collective!
This is a significant milestone for our project, and we're deeply grateful to @johnonolan and the entire Ghost team for their support and recognition of our work in the #ActivityPub ecosystem.
Ghost's social web integration built on #Fedify is a perfect example of how open standards can connect different publishing platforms in the fediverse. Their backing over the past months has been invaluable, and this formal sponsorship will help ensure Fedify remains sustainable as we continue to develop and improve the framework.
If you're building with ActivityPub or interested in federated applications, please consider joining Ghost in supporting open source development through our Open Collective:
https://opencollective.com/fedify
Every contribution, no matter the size, helps us maintain and enhance the tools that make the fediverse more accessible to developers. Thank you for being part of this journey with us! ❤️
Fedify is looking for new partnership opportunities!
What is Fedify?
#Fedify is an #ActivityPub-based federated server framework that helps developers easily integrate their applications with the #fediverse, a decentralized social network. It simplifies the complex implementation of the ActivityPub protocol, significantly reducing development time. Fedify is an open-source project available under the MIT license.
💼 Projects using Fedify
Various projects are already leveraging Fedify:
Ghost: A professional publishing platform with millions of users, open source under MIT license, and a major sponsor and partner of Fedify.
Hollo: A lightweight microblogging platform for individual users (open source, AGPL-3.0)
Hackers' Pub: A fediverse blogging platform for software engineers (open source, AGPL-3.0)
Encyclia: A bridge service that makes ORCID academic records available via ActivityPub
🚀 Value provided by Fedify
80% development time reduction: Utilize a proven framework instead of complex ActivityPub implementation
Immediate fediverse compatibility: Instant compatibility with various fediverse services including Mastodon, Misskey, Pleroma, Pixelfed, PeerTube, etc.
Expert technical support: Direct support from ActivityPub and Federation protocol experts
Custom development: Tailored feature development to meet your specific requirements
🤝 Potential collaboration models
Custom consulting and integration support: Professional assistance for integrating Fedify into your platform
Custom feature development: Development and implementation of specific features needed for your platform
Long-term technical partnership: Long-term collaboration for continuous development and maintenance
🌟 Benefits of collaborating with Fedify
Technical advantage: Save time and resources compared to in-house implementation
Brand image: Enhance corporate image through support of the open-source ecosystem
Entry to decentralized social networks: Easily participate in the fediverse ecosystem
Competitive edge: Strengthen product competitiveness through social features
📩 Interested?
If you're considering implementing ActivityPub or wish to collaborate with the Fedify project, please get in touch:
Email: sponsor@fedify.dev
Fediverse: @fedify
GitHub: https://github.com/fedify-dev/fedify
We're excited to explore customized collaboration opportunities that align with your requirements and goals.
Following Mastodon's plan to adopt HTTP Message Signatures (RFC 9421), we will implement the same standard in #Fedify. We'll use “double-knocking” to maintain compatibility with servers using older signature versions (draft-cavage-http-signatures-12).