Fedify: an ActivityPub server framework's avatar

Fedify: an ActivityPub server framework

@fedify@hollo.social · 8 following · 724 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 · Reply to Fedify: an ActivityPub server framework's post

📢 여러분만의 서버를 Fedify로 만들어보세요!

Fedify 프로토콜 구현을 도와주는 프레임워크입니다. 복잡한 연합 프로토콜을 쉽게 구현하고 싶으신가요? Fedify가 도와드립니다!

✨ 주요 기능

🔧 CLI 도구

🚀 런타임 지원

📚 배우기 쉽습니다

오픈소스 라이선스로 누구나 자유롭게 사용할 수 있습니다!

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

@fedify@hollo.social

Build your own server with !

Fedify is a framework that simplifies implementation. Want to build a federated server without the complexity? Fedify has got you covered!

✨ Key features

🔧 CLI toolchain

🚀 Runtime support

📚 Easy to learn

Available under the license—free and open source!

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

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

📢 Fedifyで独自のフェディバースサーバーを構築しましょう!

FedifyはActivityPubプロトコルの実装を簡単にするTypeScriptフレームワークです。連合プロトコルの複雑な実装に困っていませんか?Fedifyがお手伝いします!

✨ 主な機能

🔧 CLIツール

🚀 ランタイムサポート

📚 学習が簡単

MITライセンスで自由に利用可能なオープンソースプロジェクトです!

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

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

📢 여러분만의 서버를 Fedify로 만들어보세요!

Fedify 프로토콜 구현을 도와주는 프레임워크입니다. 복잡한 연합 프로토콜을 쉽게 구현하고 싶으신가요? Fedify가 도와드립니다!

✨ 주요 기능

🔧 CLI 도구

🚀 런타임 지원

📚 배우기 쉽습니다

오픈소스 라이선스로 누구나 자유롭게 사용할 수 있습니다!

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

@fedify@hollo.social

Build your own server with !

Fedify is a framework that simplifies implementation. Want to build a federated server without the complexity? Fedify has got you covered!

✨ Key features

🔧 CLI toolchain

🚀 Runtime support

📚 Easy to learn

Available under the license—free and open source!

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

@fedify@hollo.social

Excited to share that Fedify CLI is now available on Scoop for users! You can easily install it with scoop install fedify. One more way to get started with development!

https://github.com/ScoopInstaller/Main/pull/6371

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

@fedify@hollo.social

Love building federated apps with ? Consider supporting its development! We have tiers starting from just $5/month, and every contribution helps keep the project sustainable. :fedify:

https://opencollective.com/fedify

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

@fedify@hollo.social

Following Mastodon's plan to adopt HTTP Message Signatures (RFC 9421), we will implement the same standard in . We'll use “double-knocking” to maintain compatibility with servers using older signature versions (draft-cavage-http-signatures-12).

silverpill's avatar
silverpill

@silverpill@mitra.social · Reply to Fedify: an ActivityPub server framework's post

@fedify

>The primary technique we recommend is double-knocking. First, try generating or verifying an HTTP Signature with one version, ideally (but not necessarily) the latest. If the remote server rejects that signature, eg with an HTTP 401 response, or the incoming signature doesn't verify, try with another version. Repeat until a signature passes or you've tried all supported versions.

Do they recommend making two requests instead of one? This is ridiculous. Today no one supports RFC9421, and everyone supports Draft 12, so there is no reason to try RFC9421 version first. Once RFC9421 is widely supported, we can simply switch to RFC9421.

One can also add a boolean flag to actor document. If supportsRFC9421 is true, inbox deliveries can be signed with RFC9421.

Julian Fietkau's avatar
Julian Fietkau

@julian@fietkau.social · Reply to @reiver ⊼ (Charles) :batman:'s post

@reiver @andypiper @rwg @andresmh Re: which networks, I haven't personally done any academic research about social platforms. Pondering questions, yes, written anything down, no.

But my FOSS work has been centered on ActivityPub lately: fietkau.software/tag/fediverse

I have a project cooking that I think you'll like, for which I'm hoping to run a semi-public alpha test within the next few months. Join the @fedify Matrix room at -users:matrix.org to witness my implementation struggles. 👍

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

@fedify@hollo.social

Following Mastodon's plan to adopt HTTP Message Signatures (RFC 9421), we will implement the same standard in . We'll use “double-knocking” to maintain compatibility with servers using older signature versions (draft-cavage-http-signatures-12).

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

@fedify@hollo.social

A milestone worth celebrating— just hit 100+ releases! From day one, we've been committed to building a robust framework, and each release has brought us closer to that goal. Here's to many more releases as we continue growing the together! :fedify:

Screenshot shows release stats for Fedify: latest version 1.4.1 was released 6 minutes ago, with a green tag showing “Latest.” Total release count shows “+ 100 releases.” A green icon resembling a tag appears next to the Fedify name.
ALT text detailsScreenshot shows release stats for Fedify: latest version 1.4.1 was released 6 minutes ago, with a green tag showing “Latest.” Total release count shows “+ 100 releases.” A green icon resembling a tag appears next to the Fedify name.
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We're considering adding custom background task support to 1.5.0.

Want to use Fedify's worker system for your own background tasks? We're exploring ways to let you register and process custom tasks alongside jobs.

Check out the proposal: https://github.com/fedify-dev/fedify/issues/206.

Key considerations:

  • Should this be part of Fedify's scope?
  • Quick API extension vs complete worker architecture redesign
  • Integration with existing task queue systems

We'd love to hear your thoughts! Do you need this feature? How would you use it? Share your feedback in the issue thread.

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

@fedify@hollo.social

We're considering adding custom background task support to 1.5.0.

Want to use Fedify's worker system for your own background tasks? We're exploring ways to let you register and process custom tasks alongside jobs.

Check out the proposal: https://github.com/fedify-dev/fedify/issues/206.

Key considerations:

  • Should this be part of Fedify's scope?
  • Quick API extension vs complete worker architecture redesign
  • Integration with existing task queue systems

We'd love to hear your thoughts! Do you need this feature? How would you use it? Share your feedback in the issue thread.

モナコ広告 :fedibird1: @技術・雑談's avatar
モナコ広告 :fedibird1: @技術・雑談

@monaco_koukoku@fedibird.com

資料を置きました!

開発用ActivityPubサーバーの構築方法(第7回FediLUG勉強会) | hira / モナコ広告
docswell.com/s/monaco_koukoku/

モナコ広告 :fedibird1: @技術・雑談's avatar
モナコ広告 :fedibird1: @技術・雑談

@monaco_koukoku@fedibird.com


6/1の技術書典18@池袋。OSC名古屋の翌日(!)
Thinking Penguin Magazineと、Fedifyの解説本も頒布予定とのこと

もちもちずきん :teto_zuho: 🍆's avatar
もちもちずきん :teto_zuho: 🍆

@Yohei_Zuho@mstdn.y-zu.org

ActivityPubサーバーを作っています
Fedifyを使っている

もちもちずきん :teto_zuho: 🍆's avatar
もちもちずきん :teto_zuho: 🍆

@Yohei_Zuho@mstdn.y-zu.org

Fedify
TSで使用できるフレームワーク
APに基づくリモートサーバーとの通信をやってくれる

Esurio's avatar
Esurio

@esurio1673@c.koliosky.com

Fedify: https://fedify.dev
BotKit:
https://botkit.fedify.dev (Denoオンリー)

Esurio's avatar
Esurio

@esurio1673@c.koliosky.com

Tips: Fedify CLIにはトンネリングの機能がある

^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-

← Newer
Older →