Fedify: an ActivityPub server framework's avatar

Fedify: an ActivityPub server framework

@fedify@hollo.social · 8 following · 628 followers

:fedify: Fedify is a TypeScript library for building federated server apps powered by ActivityPub and other standards, so-called fediverse. It aims to eliminate the complexity and redundant boilerplate code when building a federated server app, so that you can focus on your business logic and user experience.

Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

🎉 Excited to announce that is now on Open Collective! Support the project's development starting at:

  • Backer (from $5/mo)
  • Supporter (from $25/mo)
  • Sponsor (from $100/mo)
  • Corporate Sponsor (from $500/mo)
  • Custom donations welcome

Your support will help us maintain and improve Fedify. Check it out here:

https://opencollective.com/fedify

:fedify:

Fedify's Open Collective page showing the project logo, description as “A TypeScript library for building federated server apps powered by ActivityPub and other standards”, and five contribution tiers starting from $5/month Backer to $500/month Corporate Sponsor, with custom contribution options available.
ALT text detailsFedify's Open Collective page showing the project logo, description as “A TypeScript library for building federated server apps powered by ActivityPub and other standards”, and five contribution tiers starting from $5/month Backer to $500/month Corporate Sponsor, with custom contribution options available.
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

Fedify is an server framework in & . It aims to eliminate the complexity and redundant boilerplate code when building a federated server app, so that you can focus on your business logic and user experience.

The key features it provides currently are:

If you're curious, take a look at the website! There's comprehensive docs, a demo, a tutorial, example code, and more:

https://fedify.dev/

Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

Hello, ! It's the official fedi account of the Fedify, an server framework!

^Kur0den\d{4}$ :irai_houki_tyuu:'s avatar
^Kur0den\d{4}$ :irai_houki_tyuu:

@kur0den0010@chpk.kur0den.net

Fedifyをちゃんとさわってみたい

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@botkit@hollo.social

Now we have a dedicated room for (#botkit-users:matrix.org) in the Fedify community (#fedify:matrix.org), so join us!

RGOU's avatar
RGOU

@rgou@ayom.media · Reply to Chris Trottier's post

@atomicpoet

@hongminhee

Just a remember he has an OpenColective for @fedify.

If someone doesn't know, he's doing such a great work that Fedify is the base for Ghost ActivityPub implementation.

opencollective.com/fedify

Andy Piper's avatar
Andy Piper

@andypiper@macaw.social

How am I only just learning about / trying out the @fedify CLI? this is wonderful work @hongminhee 👏🏻 dev.to/hongminhee/hidden-gems-

Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We're excited to announce the release of Fedify 1.4.0! This release brings significant improvements to enhance compatibility and flexibility in federation.

Key Highlights

Activity transformers

Introduced a new system to adjust outgoing activities for better compatibility with various ActivityPub implementations. This includes automatic ID assignment for activities and actor dehydration to satisfy implementation quirks (looking at you, Threads!).

WebFinger customization

Added the ability to customize WebFinger responses through the new mapAlias() API, giving you more control over how your actors are discovered.

New interaction collections

Added support for shares, likes, and emojiReactions properties to the Object class, making it easier to access and traverse these interaction collections.

More flexible document/context loader

Document loader and context loader are now configurable through factory functions, giving you more control over how your application handles JSON-LD documents.

CLI improvements

The fedify lookup command now supports two new options:

Other enhancements

  • Added Context.getNodeInfo() method for easier NodeInfo access
  • Improved error handling in collection traversal and JSON-LD processing
  • Added support for private network access control in WebFinger lookups
  • User-Agent headers now automatically include your instance URL, making it easier for other servers to identify your instance

For the complete list of changes and bugfixes, please visit our changelog.

Whether you're building a new federated application or maintaining an existing one, 1.4.0 provides the tools you need for robust ActivityPub federation.

Supporting us

We're grateful to all our sponsors who make this project possible. Check out our new sponsors showcase page to see the amazing individuals and organizations supporting Fedify's development. If you'd like to support Fedify's development, please consider becoming a sponsor!

Upgrade now

You can install Fedify 1.4.0 from JSR or npm. Upgrade today and let us know what you think!

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@botkit@hollo.social

🎉 Announcing BotKit 0.1.0: A new framework for creating ActivityPub bots!

We're thrilled to announce the initial release of , a framework that makes creating standalone bots simpler than ever before. With BotKit, you can create a complete fediverse bot in just a single TypeScript file!

Key features:

  • 🔋 Standalone bot creation—no need for a Mastodon/Misskey account
  • 🧩 Simple, developer-friendly API
  • 🚀 Easy deployment on Deno Deploy, Fly.io, Railway, or your own server
  • :fedify: Powered by @fedify for robust ActivityPub protocol handling

Getting started is as simple as:

deno add jsr:@fedify/botkit@^0.1.0

Here's a quick example of a weather bot:

const kv = await Deno.openKv();

const bot = createBot<void>({
  username: "weatherbot",
  name: "Seoul Weather Bot",
  summary: text`I post daily weather updates for Seoul!`,
  kv: new DenoKvStore(kv),
  queue: new DenoKvMessageQueue(kv),
});

// Reply to mentions
bot.onMention = async (session, message) => {
  await message.reply(text`Current temperature in Seoul is 18°C!`);
};

// Post scheduled updates
const session = bot.getSession("https://weather.example.com");
setInterval(async () => {
  await session.publish(
    text`Seoul Weather Update 🌡️
    Current: 18°C
    Humidity: 65%
    Forecast: Clear skies ☀️`
  );
}, 1000 * 60 * 60); // Hourly updates

While BotKit currently supports , we're working on bringing Node.js and Bun support in future releases.

Ready to create your first fediverse bot? Check out our docs at https://botkit.fedify.dev/ to get started! 🚀

Jeff Sikes's avatar
Jeff Sikes

@box464@mastodon.social

Take a look at the AP Activities that are supported by @fedify

Going far beyond your every day social timeline - woud love to see some AP platforms add support for Listen, Offer, or Travel/Arrive/Leave.

github.com/fedify-dev/fedify/b

BotKit by Fedify :botkit:'s avatar
BotKit by Fedify :botkit:

@botkit@hollo.social

1.4.0 has been released, and 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

Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We're excited to announce the release of Fedify 1.4.0! This release brings significant improvements to enhance compatibility and flexibility in federation.

Key Highlights

Activity transformers

Introduced a new system to adjust outgoing activities for better compatibility with various ActivityPub implementations. This includes automatic ID assignment for activities and actor dehydration to satisfy implementation quirks (looking at you, Threads!).

WebFinger customization

Added the ability to customize WebFinger responses through the new mapAlias() API, giving you more control over how your actors are discovered.

New interaction collections

Added support for shares, likes, and emojiReactions properties to the Object class, making it easier to access and traverse these interaction collections.

More flexible document/context loader

Document loader and context loader are now configurable through factory functions, giving you more control over how your application handles JSON-LD documents.

CLI improvements

The fedify lookup command now supports two new options:

Other enhancements

  • Added Context.getNodeInfo() method for easier NodeInfo access
  • Improved error handling in collection traversal and JSON-LD processing
  • Added support for private network access control in WebFinger lookups
  • User-Agent headers now automatically include your instance URL, making it easier for other servers to identify your instance

For the complete list of changes and bugfixes, please visit our changelog.

Whether you're building a new federated application or maintaining an existing one, 1.4.0 provides the tools you need for robust ActivityPub federation.

Supporting us

We're grateful to all our sponsors who make this project possible. Check out our new sponsors showcase page to see the amazing individuals and organizations supporting Fedify's development. If you'd like to support Fedify's development, please consider becoming a sponsor!

Upgrade now

You can install Fedify 1.4.0 from JSR or npm. Upgrade today and let us know what you think!

Laurens Hof's avatar
Laurens Hof

@LaurensHof@fediversereport.com

Fediverse Report – #102

FOSDEM and the fediverse match well together, some issues regarding data privacy and consent, and multi-network client Openvibe gets 800k in funding.

The News

FOSDEM, the free event for open source software was this weekend in Brussels, with a large presence for the fediverse and the social web. There were three events, presentations by various fediverse software developers in the SocialWeb Devroom, an extra smaller event on Sunday for more presentations, and a more casual event on Sunday evening at Brussels Hackerspace. All the events were fully packed, showing the large amount of interest from the community for the fediverse and the social web. The Social Web Foundation has been the main initiator of these events.

Some thoughts and observations:

  • Fediverse Enhancement Proposals (FEP) are documents with the goal to improve applications on the fediverse. People can write proposals, and developers can decide to support and implement proposals as they see fit. There are some great technical FEPs, but one of the challenges of such a grassroots system is getting buy-in from developers to support specific FEPs. NodeBB developer Julian Lam held a presentation ‘The Fediverse is Quiet — Let’s Fix That!’ as an advocacy for a specific FEP. The proposal Lam talks about is about fixing the problem of missing replies, where people do not see all replies on a post. What I think is noteworthy about Lam’s presentation is that it frames a FEP not only as a technical document, but as a process that needs community buy-in for other developers to support and implement a FEP. Hopefully, more of such advocacy might help see more FEPs implemented as well.
  • Mastodon presented the progress on their Fediverse Discovery Provider project. The project builds an opt-in decentralised service for better discovery and search. In the presentation (and on the website), Mastodon stressed that the project is not only a Mastodon project, but is intended to be used by the entire fediverse. Mastodon developer David Roetzel said that he hoped that the goal is that many servers will run a “Fediverse Auxillary Service Provider”. Personally I think that it is instructive to look at Bluesky here. While the AT Protocol is decentralised, in practice everyone uses infrastructure owned by the Bluesky company. I’m not convinced yet that the Fediverse Discovery Provider project will not run into the same problem, as I’m unclear on what the incentives are for people to run competing Fediverse Discovery Provider projects.
  • Some of the more interesting presentations I saw were about the integration of different types of protocols with ActivityPub. The ActivityPods project combines ActivityPub with Solid Pods, which shows quite some similarities with how the PDS system of ATProto works. All your data is stored on your Pod, multiple types of apps can connect to your Pod, and communicate via ActivityPub. It allows you to have a single account that is used for multiple platforms, similar with how your ATProto account can be used for multiple types of apps.
  • One of the most valuable parts of a conference like FOSDEM is getting developers together in a room to meet and build relationships. Fediforum has provided such a place for people to gather digitally, but meeting people in real life remains one of the best ways to build trust and relationships. Some practical ways this was visible this FOSDEM was by getting the NodeBB, WordPress ActivityPub plugin, WriteFreely and Ghost developers together and recognising themselves as the ‘longform’ people. This group of developers getting together this way helps with the various projects becoming more interoperable, and better support for longform content in the fediverse.

Two issues regarding consent and data processing this week. The first is with GoToSocial and fediverse statistics sites like fedidb.org and fediverse.observer. Some GoToSocial servers have blocked statistics sites from indexing their platforms via robots.txt, but the crawlers of fedidb.org and fediverse.observer ignore those. In response, the main GoToSocial server decided to serve up randomised numbers, messing up the statistics of these sites. Fedidb developer Daniel Supernault removed GoToSocial altogether from the statistics site, but does not seem to be willing to respect the opting out of crawling via robots.txt. The second is regarding the shutdown of FediOnFire, that displayed public posts from a relay in a format similar to one of Bluesky’s firehose visualisation tools.

  • How the fediverse treats consent for public posts is unusual, and make it stand out from other networks. For a significant group of people, consent for processing other people’s ‘Public’ ActivityPub posts is done on an opt-out bases if the service doing the processing is vaguely shaped like a full 2-way interacting fediverse server. In contrast, consent for processing other people’s ‘Public’ ActivityPub posts is done on an opt-in basis if the service doing the processing is vaguely shaped like a crawler. The line between these two situations is hard to draw, even more so in an internally coherent way. Still, this line clearly exists, and ignoring it leads to high-profile blowups such as with Searchtodon and Bridgy Fed. Defining the permissions clearly for posts would help here, and it is frustrated to see that the situation has not meaningfully improved in years. Furthermore, that fediverse stats sites have ignored the opt-out on a server level via robots.txt indicates that servers setting permissions is not a panacea either.

The Pixelfed Kickstarter has seen some updates this week. First was the update that setting up a Pixelfed Foundation is now moved to the stretch goal of $200k CAD, and that for $300k CAD the stretch goal is to expand the team to hire additional developers. A few days later, developer Daniel Supernault said that the $300k CAD stretch goal is now to build a Tumblr alternative. That brings the goal of the Pixelfed Kickstarter to build four platforms: Pixelfed, Loops, Sup (an encrypted messaging platform) and an unnamed Tumblr alternative, as well as building a foundation and a developer testing kit with Pubkit. Moving the foundation to a stretch goal that has not been met yet does not feel great to me, as good governance of such large platforms is highly important. Adding a Tumblr alternative to another later stretch goal also makes me concerned that Supernault is taking on too much here, as that is a lot of products to build and maintain.


Openvibe, a client that combines your Bluesky, Mastodon, Nostr and Threads account into a single feed, has raised 800k USD in outside investment, with Automattic among the investors. Openvibe is an early mover in the space, and it’s a name I regularly see pop up when people recommend clients. However, open networks and open APIs means that it is hard to build a competitive moat. Still, most apps are hobby projects, and I’m curious how far Openvibe can push their app with the new funding.

The Links

That’s all for this week, thanks for reading!

fediversereport.com/fediverse-

Detail in the city of Gouda
ALT text detailsDetail in the city of Gouda
Fediverse Report's avatar
Fediverse Report

@fediversereport@mastodon.social

New: Fediverse Report #102

This week's news:
- a large crowd for the at
- some controversies around data scraping on the fediverse
- @openvibe gets 800k in funding to further work on the multi-protocol client

Read at: fediversereport.com/fediverse-

Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social · Reply to tesaguri 🦀🦝's post

@silverpill Yeah, as @tesaguri said, it's a property introduced by Fedibird, a Japanese fork of Mastodon.

tkgka's avatar
tkgka

@tkgka@universeodon.com

I’ve just contributed to Fedify. Consider supporting them too — every little helps! opencollective.com/fedify

Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We're excited to announce the release of Fedify 1.4.0! This release brings significant improvements to enhance compatibility and flexibility in federation.

Key Highlights

Activity transformers

Introduced a new system to adjust outgoing activities for better compatibility with various ActivityPub implementations. This includes automatic ID assignment for activities and actor dehydration to satisfy implementation quirks (looking at you, Threads!).

WebFinger customization

Added the ability to customize WebFinger responses through the new mapAlias() API, giving you more control over how your actors are discovered.

New interaction collections

Added support for shares, likes, and emojiReactions properties to the Object class, making it easier to access and traverse these interaction collections.

More flexible document/context loader

Document loader and context loader are now configurable through factory functions, giving you more control over how your application handles JSON-LD documents.

CLI improvements

The fedify lookup command now supports two new options:

Other enhancements

  • Added Context.getNodeInfo() method for easier NodeInfo access
  • Improved error handling in collection traversal and JSON-LD processing
  • Added support for private network access control in WebFinger lookups
  • User-Agent headers now automatically include your instance URL, making it easier for other servers to identify your instance

For the complete list of changes and bugfixes, please visit our changelog.

Whether you're building a new federated application or maintaining an existing one, 1.4.0 provides the tools you need for robust ActivityPub federation.

Supporting us

We're grateful to all our sponsors who make this project possible. Check out our new sponsors showcase page to see the amazing individuals and organizations supporting Fedify's development. If you'd like to support Fedify's development, please consider becoming a sponsor!

Upgrade now

You can install Fedify 1.4.0 from JSR or npm. Upgrade today and let us know what you think!

洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@hongminhee@hollo.social

Okay, I'm about to release 1.4.0. Probably today or tomorrow?

Julian Fietkau's avatar
Julian Fietkau

@julian@fietkau.social · Reply to Thiago, Cavalheiro Jedi's post

@jedi Thank you! Yeah, I know about Ghost of course, but @fedify deserves more external projects to show off what it can do. I hope we'll see some more come out this year. 😀 Do you know of any others that are in progress? I would follow dev logs if they're out there.

Thiago, Cavalheiro Jedi's avatar
Thiago, Cavalheiro Jedi

@jedi@bolha.us · Reply to Julian Fietkau's post

@julian good to see more projects built on top of Fedify.

I started mine because I needed to dust off backend stuff. And I felt exactly what you are feeling about "looks slow", but it's been a nice journey learning how to create a Fediverse service.

Keep on going!

Markus 🌱:fosse:'s avatar
Markus 🌱:fosse:

@markus@skvip.lol

Eg har nett støtta @fedify ! Dei har fleire kule prosjekt. @markus@prosa.skvip.lol køyrer på deira teneste @hollo.

English:
I've just contributed to They have several cool projects. @markus@prosa.skvip.lol runs on their service .

opencollective.com/fedify

Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social · Reply to Fedify: an ActivityPub server framework's post

We've just set up our sponsors showcase! You can now find our wonderful sponsors:

These pages are automatically updated every hour. Thank you to all our sponsors for supporting 's development!

Want to be listed? Support us on Open Collective: https://opencollective.com/fedify.

洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@hongminhee@hollo.social

As the maintainer of , I'd be grateful for your support to help keep the project sustainable! :fedify:

https://hollo.social/@fedify/0194b112-b604-7d03-84e0-4faaf4ab46cd

Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

🎉 Excited to announce that is now on Open Collective! Support the project's development starting at:

  • Backer (from $5/mo)
  • Supporter (from $25/mo)
  • Sponsor (from $100/mo)
  • Corporate Sponsor (from $500/mo)
  • Custom donations welcome

Your support will help us maintain and improve Fedify. Check it out here:

https://opencollective.com/fedify

:fedify:

Fedify's Open Collective page showing the project logo, description as “A TypeScript library for building federated server apps powered by ActivityPub and other standards”, and five contribution tiers starting from $5/month Backer to $500/month Corporate Sponsor, with custom contribution options available.
ALT text detailsFedify's Open Collective page showing the project logo, description as “A TypeScript library for building federated server apps powered by ActivityPub and other standards”, and five contribution tiers starting from $5/month Backer to $500/month Corporate Sponsor, with custom contribution options available.
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

@fedify/markdown-it-hashtag, a markdown-it plugin that parses and renders Mastodon-style , just released 0.3.0! In this release, link, linkAttributes, and label callbacks became to take one more parameter, a markdown-it environment, which enables your hashtag rendering more flexible. For example, now hashtag links can be dynamically determined:

import MarkdownIt from "markdown-it";
import { hashtag } from "@fedify/markdown-it-hashtag";

const md = new MarkdownIt();
md.use(hashtag, {
  link: (tag: string, env: any) => `${env.origin}/tags/${tag.substring(1)}`
});
const html = md.render("Your Markdown text with #hashtags!", {
  origin: "https://example.com"
});

@fedify/markdown-it-hashtag 0.3.0 is available at both JSR and npm!

Andy Piper's avatar
Andy Piper

@andypiper@macaw.social

This is great - @fedify has launched an @opencollective to help sustain the project. This is a great library and framework that is helping many other projects grow into the . Shout-out to @hongminhee! (also to @liaizon for posting about it as well)

opencollective.com/fedify

wakest ⁂'s avatar
wakest ⁂

@liaizon@social.wake.st

Today @fedify launched an @opencollective to support the project.
@hongminhee has been doing amazing work on it. :fediverse: Fedify has shown itself to be one of the most promising ways for other projects to become part of the . If you liked seeing Ghost (@index) make such fast progress bringing in potentially thousands (millions?) of blogs and newsletters to the fediverse, this is what they are using behind the scenes! So lets support this project together!
opencollective.com/fedify

Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

🎉 Excited to announce that is now on Open Collective! Support the project's development starting at:

  • Backer (from $5/mo)
  • Supporter (from $25/mo)
  • Sponsor (from $100/mo)
  • Corporate Sponsor (from $500/mo)
  • Custom donations welcome

Your support will help us maintain and improve Fedify. Check it out here:

https://opencollective.com/fedify

:fedify:

Fedify's Open Collective page showing the project logo, description as “A TypeScript library for building federated server apps powered by ActivityPub and other standards”, and five contribution tiers starting from $5/month Backer to $500/month Corporate Sponsor, with custom contribution options available.
ALT text detailsFedify's Open Collective page showing the project logo, description as “A TypeScript library for building federated server apps powered by ActivityPub and other standards”, and five contribution tiers starting from $5/month Backer to $500/month Corporate Sponsor, with custom contribution options available.
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social · Reply to Fedify: an ActivityPub server framework's post

We've just set up our sponsors showcase! You can now find our wonderful sponsors:

These pages are automatically updated every hour. Thank you to all our sponsors for supporting 's development!

Want to be listed? Support us on Open Collective: https://opencollective.com/fedify.

甘瀬ここあ ☕'s avatar
甘瀬ここあ ☕

@cocoa_vrc@misskey.io

FediAuth、apsigが地味に未完成 (ActorのJSON-LDの問題もあるだろうけどFedify Inboxでの検証が通らない)なのでFedify使うことを検討中​:thonk:

yamanoku's avatar
yamanoku

@yamanoku@hollo.yamanoku.net

I've just contributed to Fedify. Consider supporting them too — every little helps! https://opencollective.com/fedify

おきん@しぃ!の🥫of🐟️'s avatar
おきん@しぃ!の🥫of🐟️

@okin_p@si.okin-jp.net

I've just contributed to Fedify. Consider supporting them too — every little helps! opencollective.com/fedify

Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:fedify: ♥️ :pixelfed:

https://mastodon.social/@dansup/113910607674823618

洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@hongminhee@hollo.social

Thank you so much, @dansup! Really appreciate your support! Your work in the fediverse community has been inspiring, and having you as our first supporter means a lot.

https://mastodon.social/@dansup/113910607674823618

Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

🎉 Excited to announce that is now on Open Collective! Support the project's development starting at:

  • Backer (from $5/mo)
  • Supporter (from $25/mo)
  • Sponsor (from $100/mo)
  • Corporate Sponsor (from $500/mo)
  • Custom donations welcome

Your support will help us maintain and improve Fedify. Check it out here:

https://opencollective.com/fedify

:fedify:

Fedify's Open Collective page showing the project logo, description as “A TypeScript library for building federated server apps powered by ActivityPub and other standards”, and five contribution tiers starting from $5/month Backer to $500/month Corporate Sponsor, with custom contribution options available.
ALT text detailsFedify's Open Collective page showing the project logo, description as “A TypeScript library for building federated server apps powered by ActivityPub and other standards”, and five contribution tiers starting from $5/month Backer to $500/month Corporate Sponsor, with custom contribution options available.
← Newer
Older →