#Fedify

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

ใ‚‚ใกใ‚‚ใกใšใใ‚“ :teto_zuho: ๐Ÿ†'s avatar
ใ‚‚ใกใ‚‚ใกใšใใ‚“ :teto_zuho: ๐Ÿ†

@Yohei_Zuho@mstdn.y-zu.org

ใ€่ผช่ชญไผšใ‚„ใฃใฆใฟใพใ™๏ผใ€‘
:fedilug: ่ผช่ชญไผš๐Ÿ“–็ฌฌ้›ถๅผพใจใ—ใฆ ใฎ้–‹็™บ่€…ใงใ‚ใ‚‹
Hong Minhee (ๆดช ๆฐ‘ๆ†™) @hongminhee ใ•ใ‚“ใฎ่‘—ๆ›ธใ€Ž่‡ชๅˆ†ใ ใ‘ใฎใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นใฎใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐใ‚’ไฝœใ‚ใ†๏ผใ€ใฎ่ผช่ชญไผšใ‚’่กŒใ„ใพใ™๏ผ

ใ“ใฎๆฉŸไผšใซ ใ‚’ไฝฟ็”จใ—ใฆ็š†ใ•ใ‚“ใง ใ‚„ ใชใฉใฎ็Ÿฅ่ญ˜ใ‚’ๅผทๅŒ–ใ—ใพใ›ใ‚“ใ‹๏ผŸ

ๆœฌใฏGitHubใ‹ใ‚‰็„กๆ–™ใง่ชญใ‚€ใ“ใจใŒใงใใพใ™๏ผš
github.com/dahlia/fedify-micro
ๅ‚ๅŠ ๏ผš
fedilug.connpass.com/event/348

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

๐•‚๐šž๐š‹๐š’๐š”โ„™๐š’๐šก๐šŽ๐š•โ„ข's avatar
๐•‚๐šž๐š‹๐š’๐š”โ„™๐š’๐šก๐šŽ๐š•โ„ข

@kubikpixel@chaos.social

BotKit by Fedify

Simple ActivityPub bot framework. A framework for creating your fediverse bots. Using @botkit, you can create standalone ActivityPub bots rather than Mastodon/Misskey bots. Hence, you are free from the constraints of the existing platforms. BotKit is powered by @fedify, a lower-level rock-solid ActivityPub framework.

๐Ÿข botkit.fedify.dev

๐•‚๐šž๐š‹๐š’๐š”โ„™๐š’๐šก๐šŽ๐š•โ„ข's avatar
๐•‚๐šž๐š‹๐š’๐š”โ„™๐š’๐šก๐šŽ๐š•โ„ข

@kubikpixel@chaos.social

BotKit by Fedify

Simple ActivityPub bot framework. A framework for creating your fediverse bots. Using @botkit, you can create standalone ActivityPub bots rather than Mastodon/Misskey bots. Hence, you are free from the constraints of the existing platforms. BotKit is powered by @fedify, a lower-level rock-solid ActivityPub framework.

๐Ÿข botkit.fedify.dev

๐•‚๐šž๐š‹๐š’๐š”โ„™๐š’๐šก๐šŽ๐š•โ„ข's avatar
๐•‚๐šž๐š‹๐š’๐š”โ„™๐š’๐šก๐šŽ๐š•โ„ข

@kubikpixel@chaos.social

BotKit by Fedify

Simple ActivityPub bot framework. A framework for creating your fediverse bots. Using @botkit, you can create standalone ActivityPub bots rather than Mastodon/Misskey bots. Hence, you are free from the constraints of the existing platforms. BotKit is powered by @fedify, a lower-level rock-solid ActivityPub framework.

๐Ÿข botkit.fedify.dev

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I talked about and on @guu's wonderful podcast, Software Sessions. I'm embarrassed by my poor English, but if you're interested, please listen!

https://www.softwaresessions.com/episodes/activitypub/

https://notacult.social/@guu/114080341111989473

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I talked about and on @guu's wonderful podcast, Software Sessions. I'm embarrassed by my poor English, but if you're interested, please listen!

https://www.softwaresessions.com/episodes/activitypub/

https://notacult.social/@guu/114080341111989473

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I talked about and on @guu's wonderful podcast, Software Sessions. I'm embarrassed by my poor English, but if you're interested, please listen!

https://www.softwaresessions.com/episodes/activitypub/

https://notacult.social/@guu/114080341111989473

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I talked about and on @guu's wonderful podcast, Software Sessions. I'm embarrassed by my poor English, but if you're interested, please listen!

https://www.softwaresessions.com/episodes/activitypub/

https://notacult.social/@guu/114080341111989473

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I talked about and on @guu's wonderful podcast, Software Sessions. I'm embarrassed by my poor English, but if you're interested, please listen!

https://www.softwaresessions.com/episodes/activitypub/

https://notacult.social/@guu/114080341111989473

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I talked about and on @guu's wonderful podcast, Software Sessions. I'm embarrassed by my poor English, but if you're interested, please listen!

https://www.softwaresessions.com/episodes/activitypub/

https://notacult.social/@guu/114080341111989473

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I talked about and on @guu's wonderful podcast, Software Sessions. I'm embarrassed by my poor English, but if you're interested, please listen!

https://www.softwaresessions.com/episodes/activitypub/

https://notacult.social/@guu/114080341111989473

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๋ž€?

Fedify๋Š” ๊ธฐ๋ฐ˜ ์—ฐํ•ฉํ˜• ์„œ๋ฒ„ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, ๊ฐœ๋ฐœ์ž๋“ค์ด ๋ถ„์‚ฐํ˜• ์†Œ์…œ ๋„คํŠธ์›Œํฌ์ธ ()์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•์Šต๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ActivityPub ํ”„๋กœํ† ์ฝœ ๊ตฌํ˜„์„ ๋‹จ์ˆœํ™”ํ•˜์—ฌ ๊ฐœ๋ฐœ ์‹œ๊ฐ„์„ ํฌ๊ฒŒ ๋‹จ์ถ•์‹œํ‚ต๋‹ˆ๋‹ค. MIT ๋ผ์ด์„ ์Šค ํ•˜์— ์ œ๊ณต๋˜๋Š” ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

๐Ÿ’ผ Fedify๋ฅผ ํ™œ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋“ค

๋‹ค์–‘ํ•œ ํ”„๋กœ์ ํŠธ๋“ค์ด ์ด๋ฏธ Fedify๋ฅผ ํ™œ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค:

  • Ghost: ์ˆ˜๋ฐฑ๋งŒ ์‚ฌ์šฉ์ž๋ฅผ ๋ณด์œ ํ•œ ์ „๋ฌธ์ ์ธ ์˜คํ”ˆ ์†Œ์Šค(MIT ๋ผ์ด์„ ์Šค) ํผ๋ธ”๋ฆฌ์‹ฑ ํ”Œ๋žซํผ์œผ๋กœ, Fedify์˜ ์ฃผ์š” ํ›„์›์‚ฌ์ด์ž ํŒŒํŠธ๋„ˆ์ž…๋‹ˆ๋‹ค.
  • Hollo: ๊ฐœ์ธ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ๊ฒฝ๋Ÿ‰ ๋งˆ์ดํฌ๋กœ๋ธ”๋กœ๊ทธ (์˜คํ”ˆ ์†Œ์Šค, AGPL-3.0)
  • Hackers' Pub: ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๋ฅผ ์œ„ํ•œ ์—ฐํ•ฉ์šฐ์ฃผ ๋ธ”๋กœ๊ทธ ํ”Œ๋žซํผ (์˜คํ”ˆ ์†Œ์Šค, AGPL-3.0)
  • Encyclia: ORCID ํ•™์ˆ  ๊ธฐ๋ก์„ ActivityPub์„ ํ†ตํ•ด ์ œ๊ณตํ•˜๋Š” ๋ธŒ๋ฆฌ์ง€ ์„œ๋น„์Šค

๐Ÿš€ Fedify๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ฐ€์น˜

  • ๊ฐœ๋ฐœ ์‹œ๊ฐ„ 80% ๋‹จ์ถ•: ActivityPub์˜ ๋ณต์žกํ•œ ๊ตฌํ˜„ ๋Œ€์‹  ๊ฒ€์ฆ๋œ ํ”„๋ ˆ์ž„์›Œํฌ ํ™œ์šฉ
  • ์ฆ‰๊ฐ์ ์ธ ์—ฐํ•ฉ์šฐ์ฃผ ํ˜ธํ™˜์„ฑ: Mastodon, Misskey, Pleroma, Pixelfed, PeerTube ๋“ฑ ๋‹ค์–‘ํ•œ ์—ฐํ•ฉ์šฐ์ฃผ ์„œ๋น„์Šค์™€ ์ฆ‰์‹œ ํ˜ธํ™˜
  • ์ „๋ฌธ ๊ธฐ์ˆ  ์ง€์›: ActivityPub ๋ฐ ์—ฐํ•ฉ ํ”„๋กœํ† ์ฝœ ์ „๋ฌธ๊ฐ€์˜ ์ง์ ‘ ์ง€์›
  • ๋งž์ถคํ˜• ๊ฐœ๋ฐœ: ๊ท€์‚ฌ์˜ ํŠน์ • ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž๋Š” ๋งž์ถคํ˜• ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ

๐Ÿค ๊ฐ€๋Šฅํ•œ ํ˜‘๋ ฅ ๋ชจ๋ธ

  • ๋งž์ถคํ˜• ์ปจ์„คํŒ… ๋ฐ ํ†ตํ•ฉ ์ง€์›: ๊ท€์‚ฌ ํ”Œ๋žซํผ์— ํ†ตํ•ฉ์„ ์œ„ํ•œ ์ „๋ฌธ์  ์ง€์›
  • ๋งž์ถคํ˜• ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ์˜๋ขฐ: ๊ท€์‚ฌ์— ํ•„์š”ํ•œ ํŠน์ • ๊ธฐ๋Šฅ์˜ ๊ฐœ๋ฐœ ๋ฐ ๊ตฌํ˜„
  • ์žฅ๊ธฐ์ ์ธ ๊ธฐ์ˆ  ํŒŒํŠธ๋„ˆ์‹ญ: ์ง€์†์ ์ธ ๊ฐœ๋ฐœ ๋ฐ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์œ„ํ•œ ์žฅ๊ธฐ ํ˜‘๋ ฅ ๊ด€๊ณ„

๐ŸŒŸ Fedify์™€ ํ˜‘๋ ฅํ–ˆ์„ ๋•Œ์˜ ์ด์ 

  • ๊ธฐ์ˆ ์  ์ด์ : ์ž์ฒด ๊ตฌํ˜„ ๋Œ€๋น„ ์‹œ๊ฐ„๊ณผ ๋ฆฌ์†Œ์Šค ์ ˆ์•ฝ
  • ๋ธŒ๋žœ๋“œ ์ด๋ฏธ์ง€: ์˜คํ”ˆ ์†Œ์Šค ์ƒํƒœ๊ณ„ ์ง€์›์„ ํ†ตํ•œ ๊ธฐ์—… ์ด๋ฏธ์ง€ ๊ฐ•ํ™”
  • ๋ถ„์‚ฐํ˜• ์†Œ์…œ ๋„คํŠธ์›Œํฌ ์ง„์ž…: ์—ฐํ•ฉ์šฐ์ฃผ ์ƒํƒœ๊ณ„์— ์‰ฝ๊ฒŒ ์ฐธ์—ฌ
  • ๊ฒฝ์Ÿ ์šฐ์œ„: ์†Œ์…œ ๊ธฐ๋Šฅ์„ ํ†ตํ•œ ์ œํ’ˆ ๊ฒฝ์Ÿ๋ ฅ ๊ฐ•ํ™”

๐Ÿ“ฉ ๊ด€์‹ฌ์ด ์žˆ์œผ์‹ ๊ฐ€์š”?

ActivityPub ๊ตฌํ˜„์„ ๊ณ ๋ ค ์ค‘์ด์‹œ๊ฑฐ๋‚˜, Fedify ํ”„๋กœ์ ํŠธ์™€ ํ˜‘๋ ฅํ•˜๊ณ  ์‹ถ์œผ์‹œ๋‹ค๋ฉด ์—ฐ๋ฝ ์ฃผ์„ธ์š”:

๊ท€์‚ฌ์˜ ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ๋ชฉํ‘œ์— ๋งž๋Š” ๋งž์ถคํ˜• ํ˜‘๋ ฅ ๋ฐฉ์•ˆ์„ ํ•จ๊ป˜ ๋ชจ์ƒ‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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๋ž€?

Fedify๋Š” ๊ธฐ๋ฐ˜ ์—ฐํ•ฉํ˜• ์„œ๋ฒ„ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, ๊ฐœ๋ฐœ์ž๋“ค์ด ๋ถ„์‚ฐํ˜• ์†Œ์…œ ๋„คํŠธ์›Œํฌ์ธ ()์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•์Šต๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ActivityPub ํ”„๋กœํ† ์ฝœ ๊ตฌํ˜„์„ ๋‹จ์ˆœํ™”ํ•˜์—ฌ ๊ฐœ๋ฐœ ์‹œ๊ฐ„์„ ํฌ๊ฒŒ ๋‹จ์ถ•์‹œํ‚ต๋‹ˆ๋‹ค. MIT ๋ผ์ด์„ ์Šค ํ•˜์— ์ œ๊ณต๋˜๋Š” ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

๐Ÿ’ผ Fedify๋ฅผ ํ™œ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋“ค

๋‹ค์–‘ํ•œ ํ”„๋กœ์ ํŠธ๋“ค์ด ์ด๋ฏธ Fedify๋ฅผ ํ™œ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค:

  • Ghost: ์ˆ˜๋ฐฑ๋งŒ ์‚ฌ์šฉ์ž๋ฅผ ๋ณด์œ ํ•œ ์ „๋ฌธ์ ์ธ ์˜คํ”ˆ ์†Œ์Šค(MIT ๋ผ์ด์„ ์Šค) ํผ๋ธ”๋ฆฌ์‹ฑ ํ”Œ๋žซํผ์œผ๋กœ, Fedify์˜ ์ฃผ์š” ํ›„์›์‚ฌ์ด์ž ํŒŒํŠธ๋„ˆ์ž…๋‹ˆ๋‹ค.
  • Hollo: ๊ฐœ์ธ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ๊ฒฝ๋Ÿ‰ ๋งˆ์ดํฌ๋กœ๋ธ”๋กœ๊ทธ (์˜คํ”ˆ ์†Œ์Šค, AGPL-3.0)
  • Hackers' Pub: ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๋ฅผ ์œ„ํ•œ ์—ฐํ•ฉ์šฐ์ฃผ ๋ธ”๋กœ๊ทธ ํ”Œ๋žซํผ (์˜คํ”ˆ ์†Œ์Šค, AGPL-3.0)
  • Encyclia: ORCID ํ•™์ˆ  ๊ธฐ๋ก์„ ActivityPub์„ ํ†ตํ•ด ์ œ๊ณตํ•˜๋Š” ๋ธŒ๋ฆฌ์ง€ ์„œ๋น„์Šค

๐Ÿš€ Fedify๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ฐ€์น˜

  • ๊ฐœ๋ฐœ ์‹œ๊ฐ„ 80% ๋‹จ์ถ•: ActivityPub์˜ ๋ณต์žกํ•œ ๊ตฌํ˜„ ๋Œ€์‹  ๊ฒ€์ฆ๋œ ํ”„๋ ˆ์ž„์›Œํฌ ํ™œ์šฉ
  • ์ฆ‰๊ฐ์ ์ธ ์—ฐํ•ฉ์šฐ์ฃผ ํ˜ธํ™˜์„ฑ: Mastodon, Misskey, Pleroma, Pixelfed, PeerTube ๋“ฑ ๋‹ค์–‘ํ•œ ์—ฐํ•ฉ์šฐ์ฃผ ์„œ๋น„์Šค์™€ ์ฆ‰์‹œ ํ˜ธํ™˜
  • ์ „๋ฌธ ๊ธฐ์ˆ  ์ง€์›: ActivityPub ๋ฐ ์—ฐํ•ฉ ํ”„๋กœํ† ์ฝœ ์ „๋ฌธ๊ฐ€์˜ ์ง์ ‘ ์ง€์›
  • ๋งž์ถคํ˜• ๊ฐœ๋ฐœ: ๊ท€์‚ฌ์˜ ํŠน์ • ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž๋Š” ๋งž์ถคํ˜• ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ

๐Ÿค ๊ฐ€๋Šฅํ•œ ํ˜‘๋ ฅ ๋ชจ๋ธ

  • ๋งž์ถคํ˜• ์ปจ์„คํŒ… ๋ฐ ํ†ตํ•ฉ ์ง€์›: ๊ท€์‚ฌ ํ”Œ๋žซํผ์— ํ†ตํ•ฉ์„ ์œ„ํ•œ ์ „๋ฌธ์  ์ง€์›
  • ๋งž์ถคํ˜• ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ์˜๋ขฐ: ๊ท€์‚ฌ์— ํ•„์š”ํ•œ ํŠน์ • ๊ธฐ๋Šฅ์˜ ๊ฐœ๋ฐœ ๋ฐ ๊ตฌํ˜„
  • ์žฅ๊ธฐ์ ์ธ ๊ธฐ์ˆ  ํŒŒํŠธ๋„ˆ์‹ญ: ์ง€์†์ ์ธ ๊ฐœ๋ฐœ ๋ฐ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์œ„ํ•œ ์žฅ๊ธฐ ํ˜‘๋ ฅ ๊ด€๊ณ„

๐ŸŒŸ Fedify์™€ ํ˜‘๋ ฅํ–ˆ์„ ๋•Œ์˜ ์ด์ 

  • ๊ธฐ์ˆ ์  ์ด์ : ์ž์ฒด ๊ตฌํ˜„ ๋Œ€๋น„ ์‹œ๊ฐ„๊ณผ ๋ฆฌ์†Œ์Šค ์ ˆ์•ฝ
  • ๋ธŒ๋žœ๋“œ ์ด๋ฏธ์ง€: ์˜คํ”ˆ ์†Œ์Šค ์ƒํƒœ๊ณ„ ์ง€์›์„ ํ†ตํ•œ ๊ธฐ์—… ์ด๋ฏธ์ง€ ๊ฐ•ํ™”
  • ๋ถ„์‚ฐํ˜• ์†Œ์…œ ๋„คํŠธ์›Œํฌ ์ง„์ž…: ์—ฐํ•ฉ์šฐ์ฃผ ์ƒํƒœ๊ณ„์— ์‰ฝ๊ฒŒ ์ฐธ์—ฌ
  • ๊ฒฝ์Ÿ ์šฐ์œ„: ์†Œ์…œ ๊ธฐ๋Šฅ์„ ํ†ตํ•œ ์ œํ’ˆ ๊ฒฝ์Ÿ๋ ฅ ๊ฐ•ํ™”

๐Ÿ“ฉ ๊ด€์‹ฌ์ด ์žˆ์œผ์‹ ๊ฐ€์š”?

ActivityPub ๊ตฌํ˜„์„ ๊ณ ๋ ค ์ค‘์ด์‹œ๊ฑฐ๋‚˜, Fedify ํ”„๋กœ์ ํŠธ์™€ ํ˜‘๋ ฅํ•˜๊ณ  ์‹ถ์œผ์‹œ๋‹ค๋ฉด ์—ฐ๋ฝ ์ฃผ์„ธ์š”:

๊ท€์‚ฌ์˜ ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ๋ชฉํ‘œ์— ๋งž๋Š” ๋งž์ถคํ˜• ํ˜‘๋ ฅ ๋ฐฉ์•ˆ์„ ํ•จ๊ป˜ ๋ชจ์ƒ‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

ใ‚‚ใกใ‚‚ใกใšใใ‚“ :teto_zuho: ๐Ÿ†'s avatar
ใ‚‚ใกใ‚‚ใกใšใใ‚“ :teto_zuho: ๐Ÿ†

@Yohei_Zuho@mstdn.y-zu.org

ใ€่ผช่ชญไผšใ‚„ใฃใฆใฟใพใ™๏ผใ€‘
:fedilug: ่ผช่ชญไผš๐Ÿ“–็ฌฌ้›ถๅผพใจใ—ใฆ ใฎ้–‹็™บ่€…ใงใ‚ใ‚‹
Hong Minhee (ๆดช ๆฐ‘ๆ†™) @hongminhee ใ•ใ‚“ใฎ่‘—ๆ›ธใ€Ž่‡ชๅˆ†ใ ใ‘ใฎใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นใฎใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐใ‚’ไฝœใ‚ใ†๏ผใ€ใฎ่ผช่ชญไผšใ‚’่กŒใ„ใพใ™๏ผ

ใ“ใฎๆฉŸไผšใซ ใ‚’ไฝฟ็”จใ—ใฆ็š†ใ•ใ‚“ใง ใ‚„ ใชใฉใฎ็Ÿฅ่ญ˜ใ‚’ๅผทๅŒ–ใ—ใพใ›ใ‚“ใ‹๏ผŸ

ๆœฌใฏGitHubใ‹ใ‚‰็„กๆ–™ใง่ชญใ‚€ใ“ใจใŒใงใใพใ™๏ผš
github.com/dahlia/fedify-micro
ๅ‚ๅŠ ๏ผš
fedilug.connpass.com/event/348

ใ‚‚ใกใ‚‚ใกใšใใ‚“ :teto_zuho: ๐Ÿ†'s avatar
ใ‚‚ใกใ‚‚ใกใšใใ‚“ :teto_zuho: ๐Ÿ†

@Yohei_Zuho@mstdn.y-zu.org

ใ€่ผช่ชญไผšใ‚„ใฃใฆใฟใพใ™๏ผใ€‘
:fedilug: ่ผช่ชญไผš๐Ÿ“–็ฌฌ้›ถๅผพใจใ—ใฆ ใฎ้–‹็™บ่€…ใงใ‚ใ‚‹
Hong Minhee (ๆดช ๆฐ‘ๆ†™) @hongminhee ใ•ใ‚“ใฎ่‘—ๆ›ธใ€Ž่‡ชๅˆ†ใ ใ‘ใฎใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นใฎใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐใ‚’ไฝœใ‚ใ†๏ผใ€ใฎ่ผช่ชญไผšใ‚’่กŒใ„ใพใ™๏ผ

ใ“ใฎๆฉŸไผšใซ ใ‚’ไฝฟ็”จใ—ใฆ็š†ใ•ใ‚“ใง ใ‚„ ใชใฉใฎ็Ÿฅ่ญ˜ใ‚’ๅผทๅŒ–ใ—ใพใ›ใ‚“ใ‹๏ผŸ

ๆœฌใฏGitHubใ‹ใ‚‰็„กๆ–™ใง่ชญใ‚€ใ“ใจใŒใงใใพใ™๏ผš
github.com/dahlia/fedify-micro
ๅ‚ๅŠ ๏ผš
fedilug.connpass.com/event/348

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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๋ž€?

Fedify๋Š” ๊ธฐ๋ฐ˜ ์—ฐํ•ฉํ˜• ์„œ๋ฒ„ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, ๊ฐœ๋ฐœ์ž๋“ค์ด ๋ถ„์‚ฐํ˜• ์†Œ์…œ ๋„คํŠธ์›Œํฌ์ธ ()์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•์Šต๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ActivityPub ํ”„๋กœํ† ์ฝœ ๊ตฌํ˜„์„ ๋‹จ์ˆœํ™”ํ•˜์—ฌ ๊ฐœ๋ฐœ ์‹œ๊ฐ„์„ ํฌ๊ฒŒ ๋‹จ์ถ•์‹œํ‚ต๋‹ˆ๋‹ค. MIT ๋ผ์ด์„ ์Šค ํ•˜์— ์ œ๊ณต๋˜๋Š” ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

๐Ÿ’ผ Fedify๋ฅผ ํ™œ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋“ค

๋‹ค์–‘ํ•œ ํ”„๋กœ์ ํŠธ๋“ค์ด ์ด๋ฏธ Fedify๋ฅผ ํ™œ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค:

  • Ghost: ์ˆ˜๋ฐฑ๋งŒ ์‚ฌ์šฉ์ž๋ฅผ ๋ณด์œ ํ•œ ์ „๋ฌธ์ ์ธ ์˜คํ”ˆ ์†Œ์Šค(MIT ๋ผ์ด์„ ์Šค) ํผ๋ธ”๋ฆฌ์‹ฑ ํ”Œ๋žซํผ์œผ๋กœ, Fedify์˜ ์ฃผ์š” ํ›„์›์‚ฌ์ด์ž ํŒŒํŠธ๋„ˆ์ž…๋‹ˆ๋‹ค.
  • Hollo: ๊ฐœ์ธ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ๊ฒฝ๋Ÿ‰ ๋งˆ์ดํฌ๋กœ๋ธ”๋กœ๊ทธ (์˜คํ”ˆ ์†Œ์Šค, AGPL-3.0)
  • Hackers' Pub: ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๋ฅผ ์œ„ํ•œ ์—ฐํ•ฉ์šฐ์ฃผ ๋ธ”๋กœ๊ทธ ํ”Œ๋žซํผ (์˜คํ”ˆ ์†Œ์Šค, AGPL-3.0)
  • Encyclia: ORCID ํ•™์ˆ  ๊ธฐ๋ก์„ ActivityPub์„ ํ†ตํ•ด ์ œ๊ณตํ•˜๋Š” ๋ธŒ๋ฆฌ์ง€ ์„œ๋น„์Šค

๐Ÿš€ Fedify๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ฐ€์น˜

  • ๊ฐœ๋ฐœ ์‹œ๊ฐ„ 80% ๋‹จ์ถ•: ActivityPub์˜ ๋ณต์žกํ•œ ๊ตฌํ˜„ ๋Œ€์‹  ๊ฒ€์ฆ๋œ ํ”„๋ ˆ์ž„์›Œํฌ ํ™œ์šฉ
  • ์ฆ‰๊ฐ์ ์ธ ์—ฐํ•ฉ์šฐ์ฃผ ํ˜ธํ™˜์„ฑ: Mastodon, Misskey, Pleroma, Pixelfed, PeerTube ๋“ฑ ๋‹ค์–‘ํ•œ ์—ฐํ•ฉ์šฐ์ฃผ ์„œ๋น„์Šค์™€ ์ฆ‰์‹œ ํ˜ธํ™˜
  • ์ „๋ฌธ ๊ธฐ์ˆ  ์ง€์›: ActivityPub ๋ฐ ์—ฐํ•ฉ ํ”„๋กœํ† ์ฝœ ์ „๋ฌธ๊ฐ€์˜ ์ง์ ‘ ์ง€์›
  • ๋งž์ถคํ˜• ๊ฐœ๋ฐœ: ๊ท€์‚ฌ์˜ ํŠน์ • ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž๋Š” ๋งž์ถคํ˜• ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ

๐Ÿค ๊ฐ€๋Šฅํ•œ ํ˜‘๋ ฅ ๋ชจ๋ธ

  • ๋งž์ถคํ˜• ์ปจ์„คํŒ… ๋ฐ ํ†ตํ•ฉ ์ง€์›: ๊ท€์‚ฌ ํ”Œ๋žซํผ์— ํ†ตํ•ฉ์„ ์œ„ํ•œ ์ „๋ฌธ์  ์ง€์›
  • ๋งž์ถคํ˜• ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ์˜๋ขฐ: ๊ท€์‚ฌ์— ํ•„์š”ํ•œ ํŠน์ • ๊ธฐ๋Šฅ์˜ ๊ฐœ๋ฐœ ๋ฐ ๊ตฌํ˜„
  • ์žฅ๊ธฐ์ ์ธ ๊ธฐ์ˆ  ํŒŒํŠธ๋„ˆ์‹ญ: ์ง€์†์ ์ธ ๊ฐœ๋ฐœ ๋ฐ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์œ„ํ•œ ์žฅ๊ธฐ ํ˜‘๋ ฅ ๊ด€๊ณ„

๐ŸŒŸ Fedify์™€ ํ˜‘๋ ฅํ–ˆ์„ ๋•Œ์˜ ์ด์ 

  • ๊ธฐ์ˆ ์  ์ด์ : ์ž์ฒด ๊ตฌํ˜„ ๋Œ€๋น„ ์‹œ๊ฐ„๊ณผ ๋ฆฌ์†Œ์Šค ์ ˆ์•ฝ
  • ๋ธŒ๋žœ๋“œ ์ด๋ฏธ์ง€: ์˜คํ”ˆ ์†Œ์Šค ์ƒํƒœ๊ณ„ ์ง€์›์„ ํ†ตํ•œ ๊ธฐ์—… ์ด๋ฏธ์ง€ ๊ฐ•ํ™”
  • ๋ถ„์‚ฐํ˜• ์†Œ์…œ ๋„คํŠธ์›Œํฌ ์ง„์ž…: ์—ฐํ•ฉ์šฐ์ฃผ ์ƒํƒœ๊ณ„์— ์‰ฝ๊ฒŒ ์ฐธ์—ฌ
  • ๊ฒฝ์Ÿ ์šฐ์œ„: ์†Œ์…œ ๊ธฐ๋Šฅ์„ ํ†ตํ•œ ์ œํ’ˆ ๊ฒฝ์Ÿ๋ ฅ ๊ฐ•ํ™”

๐Ÿ“ฉ ๊ด€์‹ฌ์ด ์žˆ์œผ์‹ ๊ฐ€์š”?

ActivityPub ๊ตฌํ˜„์„ ๊ณ ๋ ค ์ค‘์ด์‹œ๊ฑฐ๋‚˜, Fedify ํ”„๋กœ์ ํŠธ์™€ ํ˜‘๋ ฅํ•˜๊ณ  ์‹ถ์œผ์‹œ๋‹ค๋ฉด ์—ฐ๋ฝ ์ฃผ์„ธ์š”:

๊ท€์‚ฌ์˜ ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ๋ชฉํ‘œ์— ๋งž๋Š” ๋งž์ถคํ˜• ํ˜‘๋ ฅ ๋ฐฉ์•ˆ์„ ํ•จ๊ป˜ ๋ชจ์ƒ‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ใ‚‚ใกใ‚‚ใกใšใใ‚“ :teto_zuho: ๐Ÿ†'s avatar
ใ‚‚ใกใ‚‚ใกใšใใ‚“ :teto_zuho: ๐Ÿ†

@Yohei_Zuho@mstdn.y-zu.org

ใ€่ผช่ชญไผšใ‚„ใฃใฆใฟใพใ™๏ผใ€‘
:fedilug: ่ผช่ชญไผš๐Ÿ“–็ฌฌ้›ถๅผพใจใ—ใฆ ใฎ้–‹็™บ่€…ใงใ‚ใ‚‹
Hong Minhee (ๆดช ๆฐ‘ๆ†™) @hongminhee ใ•ใ‚“ใฎ่‘—ๆ›ธใ€Ž่‡ชๅˆ†ใ ใ‘ใฎใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นใฎใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐใ‚’ไฝœใ‚ใ†๏ผใ€ใฎ่ผช่ชญไผšใ‚’่กŒใ„ใพใ™๏ผ

ใ“ใฎๆฉŸไผšใซ ใ‚’ไฝฟ็”จใ—ใฆ็š†ใ•ใ‚“ใง ใ‚„ ใชใฉใฎ็Ÿฅ่ญ˜ใ‚’ๅผทๅŒ–ใ—ใพใ›ใ‚“ใ‹๏ผŸ

ๆœฌใฏGitHubใ‹ใ‚‰็„กๆ–™ใง่ชญใ‚€ใ“ใจใŒใงใใพใ™๏ผš
github.com/dahlia/fedify-micro
ๅ‚ๅŠ ๏ผš
fedilug.connpass.com/event/348

ใ‚‚ใกใ‚‚ใกใšใใ‚“ :teto_zuho: ๐Ÿ†'s avatar
ใ‚‚ใกใ‚‚ใกใšใใ‚“ :teto_zuho: ๐Ÿ†

@Yohei_Zuho@mstdn.y-zu.org

ใ€่ผช่ชญไผšใ‚„ใฃใฆใฟใพใ™๏ผใ€‘
:fedilug: ่ผช่ชญไผš๐Ÿ“–็ฌฌ้›ถๅผพใจใ—ใฆ ใฎ้–‹็™บ่€…ใงใ‚ใ‚‹
Hong Minhee (ๆดช ๆฐ‘ๆ†™) @hongminhee ใ•ใ‚“ใฎ่‘—ๆ›ธใ€Ž่‡ชๅˆ†ใ ใ‘ใฎใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นใฎใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐใ‚’ไฝœใ‚ใ†๏ผใ€ใฎ่ผช่ชญไผšใ‚’่กŒใ„ใพใ™๏ผ

ใ“ใฎๆฉŸไผšใซ ใ‚’ไฝฟ็”จใ—ใฆ็š†ใ•ใ‚“ใง ใ‚„ ใชใฉใฎ็Ÿฅ่ญ˜ใ‚’ๅผทๅŒ–ใ—ใพใ›ใ‚“ใ‹๏ผŸ

ๆœฌใฏGitHubใ‹ใ‚‰็„กๆ–™ใง่ชญใ‚€ใ“ใจใŒใงใใพใ™๏ผš
github.com/dahlia/fedify-micro
ๅ‚ๅŠ ๏ผš
fedilug.connpass.com/event/348

ใ‚‚ใกใ‚‚ใกใšใใ‚“ :teto_zuho: ๐Ÿ†'s avatar
ใ‚‚ใกใ‚‚ใกใšใใ‚“ :teto_zuho: ๐Ÿ†

@Yohei_Zuho@mstdn.y-zu.org

ใ€่ผช่ชญไผšใ‚„ใฃใฆใฟใพใ™๏ผใ€‘
:fedilug: ่ผช่ชญไผš๐Ÿ“–็ฌฌ้›ถๅผพใจใ—ใฆ ใฎ้–‹็™บ่€…ใงใ‚ใ‚‹
Hong Minhee (ๆดช ๆฐ‘ๆ†™) @hongminhee ใ•ใ‚“ใฎ่‘—ๆ›ธใ€Ž่‡ชๅˆ†ใ ใ‘ใฎใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นใฎใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐใ‚’ไฝœใ‚ใ†๏ผใ€ใฎ่ผช่ชญไผšใ‚’่กŒใ„ใพใ™๏ผ

ใ“ใฎๆฉŸไผšใซ ใ‚’ไฝฟ็”จใ—ใฆ็š†ใ•ใ‚“ใง ใ‚„ ใชใฉใฎ็Ÿฅ่ญ˜ใ‚’ๅผทๅŒ–ใ—ใพใ›ใ‚“ใ‹๏ผŸ

ๆœฌใฏGitHubใ‹ใ‚‰็„กๆ–™ใง่ชญใ‚€ใ“ใจใŒใงใใพใ™๏ผš
github.com/dahlia/fedify-micro
ๅ‚ๅŠ ๏ผš
fedilug.connpass.com/event/348

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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๋ž€?

Fedify๋Š” ๊ธฐ๋ฐ˜ ์—ฐํ•ฉํ˜• ์„œ๋ฒ„ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, ๊ฐœ๋ฐœ์ž๋“ค์ด ๋ถ„์‚ฐํ˜• ์†Œ์…œ ๋„คํŠธ์›Œํฌ์ธ ()์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•์Šต๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ActivityPub ํ”„๋กœํ† ์ฝœ ๊ตฌํ˜„์„ ๋‹จ์ˆœํ™”ํ•˜์—ฌ ๊ฐœ๋ฐœ ์‹œ๊ฐ„์„ ํฌ๊ฒŒ ๋‹จ์ถ•์‹œํ‚ต๋‹ˆ๋‹ค. MIT ๋ผ์ด์„ ์Šค ํ•˜์— ์ œ๊ณต๋˜๋Š” ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

๐Ÿ’ผ Fedify๋ฅผ ํ™œ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋“ค

๋‹ค์–‘ํ•œ ํ”„๋กœ์ ํŠธ๋“ค์ด ์ด๋ฏธ Fedify๋ฅผ ํ™œ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค:

  • Ghost: ์ˆ˜๋ฐฑ๋งŒ ์‚ฌ์šฉ์ž๋ฅผ ๋ณด์œ ํ•œ ์ „๋ฌธ์ ์ธ ์˜คํ”ˆ ์†Œ์Šค(MIT ๋ผ์ด์„ ์Šค) ํผ๋ธ”๋ฆฌ์‹ฑ ํ”Œ๋žซํผ์œผ๋กœ, Fedify์˜ ์ฃผ์š” ํ›„์›์‚ฌ์ด์ž ํŒŒํŠธ๋„ˆ์ž…๋‹ˆ๋‹ค.
  • Hollo: ๊ฐœ์ธ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ๊ฒฝ๋Ÿ‰ ๋งˆ์ดํฌ๋กœ๋ธ”๋กœ๊ทธ (์˜คํ”ˆ ์†Œ์Šค, AGPL-3.0)
  • Hackers' Pub: ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๋ฅผ ์œ„ํ•œ ์—ฐํ•ฉ์šฐ์ฃผ ๋ธ”๋กœ๊ทธ ํ”Œ๋žซํผ (์˜คํ”ˆ ์†Œ์Šค, AGPL-3.0)
  • Encyclia: ORCID ํ•™์ˆ  ๊ธฐ๋ก์„ ActivityPub์„ ํ†ตํ•ด ์ œ๊ณตํ•˜๋Š” ๋ธŒ๋ฆฌ์ง€ ์„œ๋น„์Šค

๐Ÿš€ Fedify๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ฐ€์น˜

  • ๊ฐœ๋ฐœ ์‹œ๊ฐ„ 80% ๋‹จ์ถ•: ActivityPub์˜ ๋ณต์žกํ•œ ๊ตฌํ˜„ ๋Œ€์‹  ๊ฒ€์ฆ๋œ ํ”„๋ ˆ์ž„์›Œํฌ ํ™œ์šฉ
  • ์ฆ‰๊ฐ์ ์ธ ์—ฐํ•ฉ์šฐ์ฃผ ํ˜ธํ™˜์„ฑ: Mastodon, Misskey, Pleroma, Pixelfed, PeerTube ๋“ฑ ๋‹ค์–‘ํ•œ ์—ฐํ•ฉ์šฐ์ฃผ ์„œ๋น„์Šค์™€ ์ฆ‰์‹œ ํ˜ธํ™˜
  • ์ „๋ฌธ ๊ธฐ์ˆ  ์ง€์›: ActivityPub ๋ฐ ์—ฐํ•ฉ ํ”„๋กœํ† ์ฝœ ์ „๋ฌธ๊ฐ€์˜ ์ง์ ‘ ์ง€์›
  • ๋งž์ถคํ˜• ๊ฐœ๋ฐœ: ๊ท€์‚ฌ์˜ ํŠน์ • ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž๋Š” ๋งž์ถคํ˜• ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ

๐Ÿค ๊ฐ€๋Šฅํ•œ ํ˜‘๋ ฅ ๋ชจ๋ธ

  • ๋งž์ถคํ˜• ์ปจ์„คํŒ… ๋ฐ ํ†ตํ•ฉ ์ง€์›: ๊ท€์‚ฌ ํ”Œ๋žซํผ์— ํ†ตํ•ฉ์„ ์œ„ํ•œ ์ „๋ฌธ์  ์ง€์›
  • ๋งž์ถคํ˜• ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ์˜๋ขฐ: ๊ท€์‚ฌ์— ํ•„์š”ํ•œ ํŠน์ • ๊ธฐ๋Šฅ์˜ ๊ฐœ๋ฐœ ๋ฐ ๊ตฌํ˜„
  • ์žฅ๊ธฐ์ ์ธ ๊ธฐ์ˆ  ํŒŒํŠธ๋„ˆ์‹ญ: ์ง€์†์ ์ธ ๊ฐœ๋ฐœ ๋ฐ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์œ„ํ•œ ์žฅ๊ธฐ ํ˜‘๋ ฅ ๊ด€๊ณ„

๐ŸŒŸ Fedify์™€ ํ˜‘๋ ฅํ–ˆ์„ ๋•Œ์˜ ์ด์ 

  • ๊ธฐ์ˆ ์  ์ด์ : ์ž์ฒด ๊ตฌํ˜„ ๋Œ€๋น„ ์‹œ๊ฐ„๊ณผ ๋ฆฌ์†Œ์Šค ์ ˆ์•ฝ
  • ๋ธŒ๋žœ๋“œ ์ด๋ฏธ์ง€: ์˜คํ”ˆ ์†Œ์Šค ์ƒํƒœ๊ณ„ ์ง€์›์„ ํ†ตํ•œ ๊ธฐ์—… ์ด๋ฏธ์ง€ ๊ฐ•ํ™”
  • ๋ถ„์‚ฐํ˜• ์†Œ์…œ ๋„คํŠธ์›Œํฌ ์ง„์ž…: ์—ฐํ•ฉ์šฐ์ฃผ ์ƒํƒœ๊ณ„์— ์‰ฝ๊ฒŒ ์ฐธ์—ฌ
  • ๊ฒฝ์Ÿ ์šฐ์œ„: ์†Œ์…œ ๊ธฐ๋Šฅ์„ ํ†ตํ•œ ์ œํ’ˆ ๊ฒฝ์Ÿ๋ ฅ ๊ฐ•ํ™”

๐Ÿ“ฉ ๊ด€์‹ฌ์ด ์žˆ์œผ์‹ ๊ฐ€์š”?

ActivityPub ๊ตฌํ˜„์„ ๊ณ ๋ ค ์ค‘์ด์‹œ๊ฑฐ๋‚˜, Fedify ํ”„๋กœ์ ํŠธ์™€ ํ˜‘๋ ฅํ•˜๊ณ  ์‹ถ์œผ์‹œ๋‹ค๋ฉด ์—ฐ๋ฝ ์ฃผ์„ธ์š”:

๊ท€์‚ฌ์˜ ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ๋ชฉํ‘œ์— ๋งž๋Š” ๋งž์ถคํ˜• ํ˜‘๋ ฅ ๋ฐฉ์•ˆ์„ ํ•จ๊ป˜ ๋ชจ์ƒ‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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๋ž€?

Fedify๋Š” ๊ธฐ๋ฐ˜ ์—ฐํ•ฉํ˜• ์„œ๋ฒ„ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, ๊ฐœ๋ฐœ์ž๋“ค์ด ๋ถ„์‚ฐํ˜• ์†Œ์…œ ๋„คํŠธ์›Œํฌ์ธ ()์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•์Šต๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ActivityPub ํ”„๋กœํ† ์ฝœ ๊ตฌํ˜„์„ ๋‹จ์ˆœํ™”ํ•˜์—ฌ ๊ฐœ๋ฐœ ์‹œ๊ฐ„์„ ํฌ๊ฒŒ ๋‹จ์ถ•์‹œํ‚ต๋‹ˆ๋‹ค. MIT ๋ผ์ด์„ ์Šค ํ•˜์— ์ œ๊ณต๋˜๋Š” ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

๐Ÿ’ผ Fedify๋ฅผ ํ™œ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋“ค

๋‹ค์–‘ํ•œ ํ”„๋กœ์ ํŠธ๋“ค์ด ์ด๋ฏธ Fedify๋ฅผ ํ™œ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค:

  • Ghost: ์ˆ˜๋ฐฑ๋งŒ ์‚ฌ์šฉ์ž๋ฅผ ๋ณด์œ ํ•œ ์ „๋ฌธ์ ์ธ ์˜คํ”ˆ ์†Œ์Šค(MIT ๋ผ์ด์„ ์Šค) ํผ๋ธ”๋ฆฌ์‹ฑ ํ”Œ๋žซํผ์œผ๋กœ, Fedify์˜ ์ฃผ์š” ํ›„์›์‚ฌ์ด์ž ํŒŒํŠธ๋„ˆ์ž…๋‹ˆ๋‹ค.
  • Hollo: ๊ฐœ์ธ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ๊ฒฝ๋Ÿ‰ ๋งˆ์ดํฌ๋กœ๋ธ”๋กœ๊ทธ (์˜คํ”ˆ ์†Œ์Šค, AGPL-3.0)
  • Hackers' Pub: ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๋ฅผ ์œ„ํ•œ ์—ฐํ•ฉ์šฐ์ฃผ ๋ธ”๋กœ๊ทธ ํ”Œ๋žซํผ (์˜คํ”ˆ ์†Œ์Šค, AGPL-3.0)
  • Encyclia: ORCID ํ•™์ˆ  ๊ธฐ๋ก์„ ActivityPub์„ ํ†ตํ•ด ์ œ๊ณตํ•˜๋Š” ๋ธŒ๋ฆฌ์ง€ ์„œ๋น„์Šค

๐Ÿš€ Fedify๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ฐ€์น˜

  • ๊ฐœ๋ฐœ ์‹œ๊ฐ„ 80% ๋‹จ์ถ•: ActivityPub์˜ ๋ณต์žกํ•œ ๊ตฌํ˜„ ๋Œ€์‹  ๊ฒ€์ฆ๋œ ํ”„๋ ˆ์ž„์›Œํฌ ํ™œ์šฉ
  • ์ฆ‰๊ฐ์ ์ธ ์—ฐํ•ฉ์šฐ์ฃผ ํ˜ธํ™˜์„ฑ: Mastodon, Misskey, Pleroma, Pixelfed, PeerTube ๋“ฑ ๋‹ค์–‘ํ•œ ์—ฐํ•ฉ์šฐ์ฃผ ์„œ๋น„์Šค์™€ ์ฆ‰์‹œ ํ˜ธํ™˜
  • ์ „๋ฌธ ๊ธฐ์ˆ  ์ง€์›: ActivityPub ๋ฐ ์—ฐํ•ฉ ํ”„๋กœํ† ์ฝœ ์ „๋ฌธ๊ฐ€์˜ ์ง์ ‘ ์ง€์›
  • ๋งž์ถคํ˜• ๊ฐœ๋ฐœ: ๊ท€์‚ฌ์˜ ํŠน์ • ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž๋Š” ๋งž์ถคํ˜• ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ

๐Ÿค ๊ฐ€๋Šฅํ•œ ํ˜‘๋ ฅ ๋ชจ๋ธ

  • ๋งž์ถคํ˜• ์ปจ์„คํŒ… ๋ฐ ํ†ตํ•ฉ ์ง€์›: ๊ท€์‚ฌ ํ”Œ๋žซํผ์— ํ†ตํ•ฉ์„ ์œ„ํ•œ ์ „๋ฌธ์  ์ง€์›
  • ๋งž์ถคํ˜• ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ์˜๋ขฐ: ๊ท€์‚ฌ์— ํ•„์š”ํ•œ ํŠน์ • ๊ธฐ๋Šฅ์˜ ๊ฐœ๋ฐœ ๋ฐ ๊ตฌํ˜„
  • ์žฅ๊ธฐ์ ์ธ ๊ธฐ์ˆ  ํŒŒํŠธ๋„ˆ์‹ญ: ์ง€์†์ ์ธ ๊ฐœ๋ฐœ ๋ฐ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์œ„ํ•œ ์žฅ๊ธฐ ํ˜‘๋ ฅ ๊ด€๊ณ„

๐ŸŒŸ Fedify์™€ ํ˜‘๋ ฅํ–ˆ์„ ๋•Œ์˜ ์ด์ 

  • ๊ธฐ์ˆ ์  ์ด์ : ์ž์ฒด ๊ตฌํ˜„ ๋Œ€๋น„ ์‹œ๊ฐ„๊ณผ ๋ฆฌ์†Œ์Šค ์ ˆ์•ฝ
  • ๋ธŒ๋žœ๋“œ ์ด๋ฏธ์ง€: ์˜คํ”ˆ ์†Œ์Šค ์ƒํƒœ๊ณ„ ์ง€์›์„ ํ†ตํ•œ ๊ธฐ์—… ์ด๋ฏธ์ง€ ๊ฐ•ํ™”
  • ๋ถ„์‚ฐํ˜• ์†Œ์…œ ๋„คํŠธ์›Œํฌ ์ง„์ž…: ์—ฐํ•ฉ์šฐ์ฃผ ์ƒํƒœ๊ณ„์— ์‰ฝ๊ฒŒ ์ฐธ์—ฌ
  • ๊ฒฝ์Ÿ ์šฐ์œ„: ์†Œ์…œ ๊ธฐ๋Šฅ์„ ํ†ตํ•œ ์ œํ’ˆ ๊ฒฝ์Ÿ๋ ฅ ๊ฐ•ํ™”

๐Ÿ“ฉ ๊ด€์‹ฌ์ด ์žˆ์œผ์‹ ๊ฐ€์š”?

ActivityPub ๊ตฌํ˜„์„ ๊ณ ๋ ค ์ค‘์ด์‹œ๊ฑฐ๋‚˜, Fedify ํ”„๋กœ์ ํŠธ์™€ ํ˜‘๋ ฅํ•˜๊ณ  ์‹ถ์œผ์‹œ๋‹ค๋ฉด ์—ฐ๋ฝ ์ฃผ์„ธ์š”:

๊ท€์‚ฌ์˜ ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ๋ชฉํ‘œ์— ๋งž๋Š” ๋งž์ถคํ˜• ํ˜‘๋ ฅ ๋ฐฉ์•ˆ์„ ํ•จ๊ป˜ ๋ชจ์ƒ‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

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๋ž€?

Fedify๋Š” ๊ธฐ๋ฐ˜ ์—ฐํ•ฉํ˜• ์„œ๋ฒ„ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, ๊ฐœ๋ฐœ์ž๋“ค์ด ๋ถ„์‚ฐํ˜• ์†Œ์…œ ๋„คํŠธ์›Œํฌ์ธ ()์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•์Šต๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ActivityPub ํ”„๋กœํ† ์ฝœ ๊ตฌํ˜„์„ ๋‹จ์ˆœํ™”ํ•˜์—ฌ ๊ฐœ๋ฐœ ์‹œ๊ฐ„์„ ํฌ๊ฒŒ ๋‹จ์ถ•์‹œํ‚ต๋‹ˆ๋‹ค. MIT ๋ผ์ด์„ ์Šค ํ•˜์— ์ œ๊ณต๋˜๋Š” ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

๐Ÿ’ผ Fedify๋ฅผ ํ™œ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋“ค

๋‹ค์–‘ํ•œ ํ”„๋กœ์ ํŠธ๋“ค์ด ์ด๋ฏธ Fedify๋ฅผ ํ™œ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค:

  • Ghost: ์ˆ˜๋ฐฑ๋งŒ ์‚ฌ์šฉ์ž๋ฅผ ๋ณด์œ ํ•œ ์ „๋ฌธ์ ์ธ ์˜คํ”ˆ ์†Œ์Šค(MIT ๋ผ์ด์„ ์Šค) ํผ๋ธ”๋ฆฌ์‹ฑ ํ”Œ๋žซํผ์œผ๋กœ, Fedify์˜ ์ฃผ์š” ํ›„์›์‚ฌ์ด์ž ํŒŒํŠธ๋„ˆ์ž…๋‹ˆ๋‹ค.
  • Hollo: ๊ฐœ์ธ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ๊ฒฝ๋Ÿ‰ ๋งˆ์ดํฌ๋กœ๋ธ”๋กœ๊ทธ (์˜คํ”ˆ ์†Œ์Šค, AGPL-3.0)
  • Hackers' Pub: ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๋ฅผ ์œ„ํ•œ ์—ฐํ•ฉ์šฐ์ฃผ ๋ธ”๋กœ๊ทธ ํ”Œ๋žซํผ (์˜คํ”ˆ ์†Œ์Šค, AGPL-3.0)
  • Encyclia: ORCID ํ•™์ˆ  ๊ธฐ๋ก์„ ActivityPub์„ ํ†ตํ•ด ์ œ๊ณตํ•˜๋Š” ๋ธŒ๋ฆฌ์ง€ ์„œ๋น„์Šค

๐Ÿš€ Fedify๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ฐ€์น˜

  • ๊ฐœ๋ฐœ ์‹œ๊ฐ„ 80% ๋‹จ์ถ•: ActivityPub์˜ ๋ณต์žกํ•œ ๊ตฌํ˜„ ๋Œ€์‹  ๊ฒ€์ฆ๋œ ํ”„๋ ˆ์ž„์›Œํฌ ํ™œ์šฉ
  • ์ฆ‰๊ฐ์ ์ธ ์—ฐํ•ฉ์šฐ์ฃผ ํ˜ธํ™˜์„ฑ: Mastodon, Misskey, Pleroma, Pixelfed, PeerTube ๋“ฑ ๋‹ค์–‘ํ•œ ์—ฐํ•ฉ์šฐ์ฃผ ์„œ๋น„์Šค์™€ ์ฆ‰์‹œ ํ˜ธํ™˜
  • ์ „๋ฌธ ๊ธฐ์ˆ  ์ง€์›: ActivityPub ๋ฐ ์—ฐํ•ฉ ํ”„๋กœํ† ์ฝœ ์ „๋ฌธ๊ฐ€์˜ ์ง์ ‘ ์ง€์›
  • ๋งž์ถคํ˜• ๊ฐœ๋ฐœ: ๊ท€์‚ฌ์˜ ํŠน์ • ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž๋Š” ๋งž์ถคํ˜• ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ

๐Ÿค ๊ฐ€๋Šฅํ•œ ํ˜‘๋ ฅ ๋ชจ๋ธ

  • ๋งž์ถคํ˜• ์ปจ์„คํŒ… ๋ฐ ํ†ตํ•ฉ ์ง€์›: ๊ท€์‚ฌ ํ”Œ๋žซํผ์— ํ†ตํ•ฉ์„ ์œ„ํ•œ ์ „๋ฌธ์  ์ง€์›
  • ๋งž์ถคํ˜• ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ์˜๋ขฐ: ๊ท€์‚ฌ์— ํ•„์š”ํ•œ ํŠน์ • ๊ธฐ๋Šฅ์˜ ๊ฐœ๋ฐœ ๋ฐ ๊ตฌํ˜„
  • ์žฅ๊ธฐ์ ์ธ ๊ธฐ์ˆ  ํŒŒํŠธ๋„ˆ์‹ญ: ์ง€์†์ ์ธ ๊ฐœ๋ฐœ ๋ฐ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์œ„ํ•œ ์žฅ๊ธฐ ํ˜‘๋ ฅ ๊ด€๊ณ„

๐ŸŒŸ Fedify์™€ ํ˜‘๋ ฅํ–ˆ์„ ๋•Œ์˜ ์ด์ 

  • ๊ธฐ์ˆ ์  ์ด์ : ์ž์ฒด ๊ตฌํ˜„ ๋Œ€๋น„ ์‹œ๊ฐ„๊ณผ ๋ฆฌ์†Œ์Šค ์ ˆ์•ฝ
  • ๋ธŒ๋žœ๋“œ ์ด๋ฏธ์ง€: ์˜คํ”ˆ ์†Œ์Šค ์ƒํƒœ๊ณ„ ์ง€์›์„ ํ†ตํ•œ ๊ธฐ์—… ์ด๋ฏธ์ง€ ๊ฐ•ํ™”
  • ๋ถ„์‚ฐํ˜• ์†Œ์…œ ๋„คํŠธ์›Œํฌ ์ง„์ž…: ์—ฐํ•ฉ์šฐ์ฃผ ์ƒํƒœ๊ณ„์— ์‰ฝ๊ฒŒ ์ฐธ์—ฌ
  • ๊ฒฝ์Ÿ ์šฐ์œ„: ์†Œ์…œ ๊ธฐ๋Šฅ์„ ํ†ตํ•œ ์ œํ’ˆ ๊ฒฝ์Ÿ๋ ฅ ๊ฐ•ํ™”

๐Ÿ“ฉ ๊ด€์‹ฌ์ด ์žˆ์œผ์‹ ๊ฐ€์š”?

ActivityPub ๊ตฌํ˜„์„ ๊ณ ๋ ค ์ค‘์ด์‹œ๊ฑฐ๋‚˜, Fedify ํ”„๋กœ์ ํŠธ์™€ ํ˜‘๋ ฅํ•˜๊ณ  ์‹ถ์œผ์‹œ๋‹ค๋ฉด ์—ฐ๋ฝ ์ฃผ์„ธ์š”:

๊ท€์‚ฌ์˜ ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ๋ชฉํ‘œ์— ๋งž๋Š” ๋งž์ถคํ˜• ํ˜‘๋ ฅ ๋ฐฉ์•ˆ์„ ํ•จ๊ป˜ ๋ชจ์ƒ‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

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

@fedify@hollo.social

Fedify is looking for new partnership opportunities!

:fedify: What is Fedify?

is an -based federated server framework that helps developers easily integrate their applications with the , 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:

We're excited to explore customized collaboration opportunities that align with your requirements and goals.

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I talked about and on @guu's wonderful podcast, Software Sessions. I'm embarrassed by my poor English, but if you're interested, please listen!

https://www.softwaresessions.com/episodes/activitypub/

https://notacult.social/@guu/114080341111989473

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

@fedify@hollo.social

We're considering packaging the Fedify CLI for Homebrew to make installation easier on macOS and Linux (via Linuxbrew).

Would you use a formula for CLI?

OptionVoters
Yes, I'd definitely use it on macOS.8 (32%)
Yes, I'd definitely use it on Linux.3 (12%)
Maybe, depending on the implementation.4 (16%)
No, I prefer other installation methods.10 (40%)
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

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

If you answered โ€œNoโ€, which installation method do you prefer?

Your feedback helps us prioritize distribution channels! Thanks for contributing to the Fedify ecosystem.

OptionVoters
npm3 (25%)
Deno3 (25%)
Manual download5 (42%)
Other (please specify in replies)1 (8%)
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We're considering packaging the Fedify CLI for Homebrew to make installation easier on macOS and Linux (via Linuxbrew).

Would you use a formula for CLI?

OptionVoters
Yes, I'd definitely use it on macOS.8 (32%)
Yes, I'd definitely use it on Linux.3 (12%)
Maybe, depending on the implementation.4 (16%)
No, I prefer other installation methods.10 (40%)
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We're considering packaging the Fedify CLI for Homebrew to make installation easier on macOS and Linux (via Linuxbrew).

Would you use a formula for CLI?

OptionVoters
Yes, I'd definitely use it on macOS.8 (32%)
Yes, I'd definitely use it on Linux.3 (12%)
Maybe, depending on the implementation.4 (16%)
No, I prefer other installation methods.10 (40%)
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

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

If you answered โ€œNoโ€, which installation method do you prefer?

Your feedback helps us prioritize distribution channels! Thanks for contributing to the Fedify ecosystem.

OptionVoters
npm3 (25%)
Deno3 (25%)
Manual download5 (42%)
Other (please specify in replies)1 (8%)
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

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

If you answered โ€œNoโ€, which installation method do you prefer?

Your feedback helps us prioritize distribution channels! Thanks for contributing to the Fedify ecosystem.

OptionVoters
npm3 (25%)
Deno3 (25%)
Manual download5 (42%)
Other (please specify in replies)1 (8%)
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We're considering packaging the Fedify CLI for Homebrew to make installation easier on macOS and Linux (via Linuxbrew).

Would you use a formula for CLI?

OptionVoters
Yes, I'd definitely use it on macOS.8 (32%)
Yes, I'd definitely use it on Linux.3 (12%)
Maybe, depending on the implementation.4 (16%)
No, I prefer other installation methods.10 (40%)
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

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

If you answered โ€œNoโ€, which installation method do you prefer?

Your feedback helps us prioritize distribution channels! Thanks for contributing to the Fedify ecosystem.

OptionVoters
npm3 (25%)
Deno3 (25%)
Manual download5 (42%)
Other (please specify in replies)1 (8%)
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We're considering packaging the Fedify CLI for Homebrew to make installation easier on macOS and Linux (via Linuxbrew).

Would you use a formula for CLI?

OptionVoters
Yes, I'd definitely use it on macOS.8 (32%)
Yes, I'd definitely use it on Linux.3 (12%)
Maybe, depending on the implementation.4 (16%)
No, I prefer other installation methods.10 (40%)
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I talked about and on @guu's wonderful podcast, Software Sessions. I'm embarrassed by my poor English, but if you're interested, please listen!

https://www.softwaresessions.com/episodes/activitypub/

https://notacult.social/@guu/114080341111989473

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I talked about and on @guu's wonderful podcast, Software Sessions. I'm embarrassed by my poor English, but if you're interested, please listen!

https://www.softwaresessions.com/episodes/activitypub/

https://notacult.social/@guu/114080341111989473

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I talked about and on @guu's wonderful podcast, Software Sessions. I'm embarrassed by my poor English, but if you're interested, please listen!

https://www.softwaresessions.com/episodes/activitypub/

https://notacult.social/@guu/114080341111989473

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I talked about and on @guu's wonderful podcast, Software Sessions. I'm embarrassed by my poor English, but if you're interested, please listen!

https://www.softwaresessions.com/episodes/activitypub/

https://notacult.social/@guu/114080341111989473

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I talked about and on @guu's wonderful podcast, Software Sessions. I'm embarrassed by my poor English, but if you're interested, please listen!

https://www.softwaresessions.com/episodes/activitypub/

https://notacult.social/@guu/114080341111989473

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I talked about and on @guu's wonderful podcast, Software Sessions. I'm embarrassed by my poor English, but if you're interested, please listen!

https://www.softwaresessions.com/episodes/activitypub/

https://notacult.social/@guu/114080341111989473

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

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

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

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

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

We'd like to introduce the project familyโ€”a set of related tools that make building applications more accessible:

Fedify :fedify:

Fedify (@fedify) is a library for building federated server applications powered by ActivityPub and other 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:

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. 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:

BotKit (@botkit) is our newest family memberโ€”a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, 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: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

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

Fedifyใฎ้–ข้€ฃใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‚’ใ”็ดนไป‹ใ—ใŸใ„ใจๆ€ใ„ใพใ™ใ€‚ActivityPubใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณ้–‹็™บใ‚’ใ‚ˆใ‚Š็ฐกๅ˜ใซใ™ใ‚‹ใƒ„ใƒผใƒซ็พคใงใ™๏ผš

Fedify :fedify:

Fedify๏ผˆ@fedify๏ผ‰ใฏActivityPubใ‚„ใใฎไป–ใฎใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นๆจ™ๆบ–ใ‚’ๆดป็”จใ™ใ‚‹้€ฃๅˆๅž‹ใ‚ตใƒผใƒใƒผใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใ‚’ๆง‹็ฏ‰ใ™ใ‚‹ใŸใ‚ใฎTypeScriptใƒฉใ‚คใƒ–ใƒฉใƒชใงใ™ใ€‚Activity Vocabularyใฎๅž‹ๅฎ‰ๅ…จใชใ‚ชใƒ–ใ‚ธใ‚งใ‚ฏใƒˆใ€WebFingerใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใƒปใ‚ตใƒผใƒใƒผใ€HTTP Signaturesใชใฉใ‚’ๆไพ›ใ—ใ€ใƒœใ‚คใƒฉใƒผใƒ—ใƒฌใƒผใƒˆใ‚ณใƒผใƒ‰ใ‚’ๅ‰Šๆธ›ใ—ใฆใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใƒญใ‚ธใƒƒใ‚ฏใซ้›†ไธญใงใใ‚‹ใ‚ˆใ†ใซใ—ใพใ™ใ€‚

Hollo :hollo:

Hollo๏ผˆ@hollo๏ผ‰ใฏFedifyใงๅ‹•ไฝœใ™ใ‚‹ใŠไธ€ไบบๆง˜็”จใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐใ‚ตใƒผใƒใƒผใงใ™ใ€‚ๅ€‹ไบบๅ‘ใ‘ใซ่จญ่จˆใ•ใ‚Œใฆใ„ใพใ™ใŒใ€ActivityPubใ‚’้€šใ˜ใฆๅฎŒๅ…จใซ้€ฃๅˆๅŒ–ใ•ใ‚ŒใฆใŠใ‚Šใ€ใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นๅ…จไฝ“ใฎใƒฆใƒผใ‚ถใƒผใจไบคๆตใ™ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚HolloใฏMastodonไบ’ๆ›APIใ‚’ๅฎŸ่ฃ…ใ—ใฆใ„ใ‚‹ใŸใ‚ใ€็‹ฌ่‡ชใฎใ‚ฆใ‚งใƒ–ใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚นใŒใชใใฆใ‚‚ใ€ใปใจใ‚“ใฉใฎMastodonใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใจไบ’ๆ›ๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚

HolloใฏใพใŸใ€ๆญฃๅผใƒชใƒชใƒผใ‚นๅ‰ใฎๆœ€ๆ–ฐFedifyๆฉŸ่ƒฝใ‚’ใƒ†ใ‚นใƒˆใ™ใ‚‹ๅฎŸ้จ“ๅ ดใจใ—ใฆใ‚‚ๆดป็”จใ•ใ‚Œใฆใ„ใพใ™ใ€‚

BotKit :botkit:

BotKit๏ผˆ@botkit๏ผ‰ใฏ็งใŸใกใฎๆœ€ใ‚‚ๆ–ฐใ—ใ„ใƒกใƒณใƒใƒผใงใ€ActivityPubใƒœใƒƒใƒˆใ‚’ไฝœๆˆใ™ใ‚‹ใŸใ‚ใซ็‰นๅˆฅใซ่จญ่จˆใ•ใ‚ŒใŸใƒ•ใƒฌใƒผใƒ ใƒฏใƒผใ‚ฏใงใ™ใ€‚ๅพ“ๆฅใฎMastodonใƒœใƒƒใƒˆใจใฏ็•ฐใชใ‚Šใ€BotKitใฏใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ๅ›บๆœ‰ใฎๅˆถ้™๏ผˆๆ–‡ๅญ—ๆ•ฐๅˆถ้™ใชใฉ๏ผ‰ใซ็ธ›ใ‚‰ใ‚Œใชใ„็‹ฌ็ซ‹ใ—ใŸActivityPubใ‚ตใƒผใƒใƒผใ‚’ไฝœๆˆใ—ใพใ™ใ€‚

BotKitใฎAPIใฏๆ„ๅ›ณ็š„ใซใ‚ทใƒณใƒ—ใƒซใซ่จญ่จˆใ•ใ‚ŒใฆใŠใ‚Šใ€ๅ˜ไธ€ใฎTypeScriptใƒ•ใ‚กใ‚คใƒซใงๅฎŒๅ…จใชใƒœใƒƒใƒˆใ‚’ไฝœๆˆใงใใพใ™๏ผ


ใ“ใ‚Œใ‚‰ไธ‰ใคใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใฏใ™ในใฆ@fedify-dev GitHubใ‚ชใƒผใ‚ฌใƒ‹ใ‚ผใƒผใ‚ทใƒงใƒณใงใ‚ชใƒผใƒ—ใƒณใ‚ฝใƒผใ‚นใจใ—ใฆๅ…ฌ้–‹ใ•ใ‚Œใฆใ„ใพใ™ใ€‚ใใ‚Œใžใ‚Œ็•ฐใชใ‚‹็›ฎ็š„ใ‚’ๆŒใฃใฆใ„ใพใ™ใŒใ€ActivityPub้–‹็™บใ‚’ใ‚ˆใ‚Š่บซ่ฟ‘ใซใ—ใ€ใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นใฎใ‚จใ‚ณใ‚ทใ‚นใƒ†ใƒ ใ‚’ๆ‹กๅคงใ™ใ‚‹ใจใ„ใ†ๅ…ฑ้€šใฎ็›ฎๆจ™ใ‚’ๅ…ฑๆœ‰ใ—ใฆใ„ใพใ™ใ€‚

ใ“ใ‚Œใ‚‰ใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‚’่ฉฆใ—ใฆใฟใŸใ‚Šใ€้–‹็™บใซ่ฒข็Œฎใ—ใŸใ‚Šใ™ใ‚‹ใ“ใจใซ่ˆˆๅ‘ณใŒใ‚ใ‚‹ๅ ดๅˆใฏใ€ไปฅไธ‹ใ‚’ใ”่ฆงใใ ใ•ใ„๏ผš

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

@fedify@hollo.social

We'd like to introduce the project familyโ€”a set of related tools that make building applications more accessible:

Fedify :fedify:

Fedify (@fedify) is a library for building federated server applications powered by ActivityPub and other 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:

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. 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:

BotKit (@botkit) is our newest family memberโ€”a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, 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: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

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

Fedifyใฎ้–ข้€ฃใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‚’ใ”็ดนไป‹ใ—ใŸใ„ใจๆ€ใ„ใพใ™ใ€‚ActivityPubใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณ้–‹็™บใ‚’ใ‚ˆใ‚Š็ฐกๅ˜ใซใ™ใ‚‹ใƒ„ใƒผใƒซ็พคใงใ™๏ผš

Fedify :fedify:

Fedify๏ผˆ@fedify๏ผ‰ใฏActivityPubใ‚„ใใฎไป–ใฎใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นๆจ™ๆบ–ใ‚’ๆดป็”จใ™ใ‚‹้€ฃๅˆๅž‹ใ‚ตใƒผใƒใƒผใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใ‚’ๆง‹็ฏ‰ใ™ใ‚‹ใŸใ‚ใฎTypeScriptใƒฉใ‚คใƒ–ใƒฉใƒชใงใ™ใ€‚Activity Vocabularyใฎๅž‹ๅฎ‰ๅ…จใชใ‚ชใƒ–ใ‚ธใ‚งใ‚ฏใƒˆใ€WebFingerใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใƒปใ‚ตใƒผใƒใƒผใ€HTTP Signaturesใชใฉใ‚’ๆไพ›ใ—ใ€ใƒœใ‚คใƒฉใƒผใƒ—ใƒฌใƒผใƒˆใ‚ณใƒผใƒ‰ใ‚’ๅ‰Šๆธ›ใ—ใฆใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใƒญใ‚ธใƒƒใ‚ฏใซ้›†ไธญใงใใ‚‹ใ‚ˆใ†ใซใ—ใพใ™ใ€‚

Hollo :hollo:

Hollo๏ผˆ@hollo๏ผ‰ใฏFedifyใงๅ‹•ไฝœใ™ใ‚‹ใŠไธ€ไบบๆง˜็”จใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐใ‚ตใƒผใƒใƒผใงใ™ใ€‚ๅ€‹ไบบๅ‘ใ‘ใซ่จญ่จˆใ•ใ‚Œใฆใ„ใพใ™ใŒใ€ActivityPubใ‚’้€šใ˜ใฆๅฎŒๅ…จใซ้€ฃๅˆๅŒ–ใ•ใ‚ŒใฆใŠใ‚Šใ€ใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นๅ…จไฝ“ใฎใƒฆใƒผใ‚ถใƒผใจไบคๆตใ™ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚HolloใฏMastodonไบ’ๆ›APIใ‚’ๅฎŸ่ฃ…ใ—ใฆใ„ใ‚‹ใŸใ‚ใ€็‹ฌ่‡ชใฎใ‚ฆใ‚งใƒ–ใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚นใŒใชใใฆใ‚‚ใ€ใปใจใ‚“ใฉใฎMastodonใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใจไบ’ๆ›ๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚

HolloใฏใพใŸใ€ๆญฃๅผใƒชใƒชใƒผใ‚นๅ‰ใฎๆœ€ๆ–ฐFedifyๆฉŸ่ƒฝใ‚’ใƒ†ใ‚นใƒˆใ™ใ‚‹ๅฎŸ้จ“ๅ ดใจใ—ใฆใ‚‚ๆดป็”จใ•ใ‚Œใฆใ„ใพใ™ใ€‚

BotKit :botkit:

BotKit๏ผˆ@botkit๏ผ‰ใฏ็งใŸใกใฎๆœ€ใ‚‚ๆ–ฐใ—ใ„ใƒกใƒณใƒใƒผใงใ€ActivityPubใƒœใƒƒใƒˆใ‚’ไฝœๆˆใ™ใ‚‹ใŸใ‚ใซ็‰นๅˆฅใซ่จญ่จˆใ•ใ‚ŒใŸใƒ•ใƒฌใƒผใƒ ใƒฏใƒผใ‚ฏใงใ™ใ€‚ๅพ“ๆฅใฎMastodonใƒœใƒƒใƒˆใจใฏ็•ฐใชใ‚Šใ€BotKitใฏใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ๅ›บๆœ‰ใฎๅˆถ้™๏ผˆๆ–‡ๅญ—ๆ•ฐๅˆถ้™ใชใฉ๏ผ‰ใซ็ธ›ใ‚‰ใ‚Œใชใ„็‹ฌ็ซ‹ใ—ใŸActivityPubใ‚ตใƒผใƒใƒผใ‚’ไฝœๆˆใ—ใพใ™ใ€‚

BotKitใฎAPIใฏๆ„ๅ›ณ็š„ใซใ‚ทใƒณใƒ—ใƒซใซ่จญ่จˆใ•ใ‚ŒใฆใŠใ‚Šใ€ๅ˜ไธ€ใฎTypeScriptใƒ•ใ‚กใ‚คใƒซใงๅฎŒๅ…จใชใƒœใƒƒใƒˆใ‚’ไฝœๆˆใงใใพใ™๏ผ


ใ“ใ‚Œใ‚‰ไธ‰ใคใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใฏใ™ในใฆ@fedify-dev GitHubใ‚ชใƒผใ‚ฌใƒ‹ใ‚ผใƒผใ‚ทใƒงใƒณใงใ‚ชใƒผใƒ—ใƒณใ‚ฝใƒผใ‚นใจใ—ใฆๅ…ฌ้–‹ใ•ใ‚Œใฆใ„ใพใ™ใ€‚ใใ‚Œใžใ‚Œ็•ฐใชใ‚‹็›ฎ็š„ใ‚’ๆŒใฃใฆใ„ใพใ™ใŒใ€ActivityPub้–‹็™บใ‚’ใ‚ˆใ‚Š่บซ่ฟ‘ใซใ—ใ€ใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นใฎใ‚จใ‚ณใ‚ทใ‚นใƒ†ใƒ ใ‚’ๆ‹กๅคงใ™ใ‚‹ใจใ„ใ†ๅ…ฑ้€šใฎ็›ฎๆจ™ใ‚’ๅ…ฑๆœ‰ใ—ใฆใ„ใพใ™ใ€‚

ใ“ใ‚Œใ‚‰ใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‚’่ฉฆใ—ใฆใฟใŸใ‚Šใ€้–‹็™บใซ่ฒข็Œฎใ—ใŸใ‚Šใ™ใ‚‹ใ“ใจใซ่ˆˆๅ‘ณใŒใ‚ใ‚‹ๅ ดๅˆใฏใ€ไปฅไธ‹ใ‚’ใ”่ฆงใใ ใ•ใ„๏ผš

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(@fedify)๋Š” ActivityPub์™€ ๋‹ค๋ฅธ () ํ‘œ์ค€์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์—ฐํ•ฉ ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. Activity Vocabulary๋ฅผ ์œ„ํ•œ ํƒ€์ž… ์•ˆ์ „ํ•œ ๊ฐ์ฒด, WebFinger ํด๋ผ์ด์–ธํŠธ·์„œ๋ฒ„, HTTP Signatures ๋“ฑ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋ฐ˜๋ณต์ ์ธ ์ฝ”๋“œ๋ฅผ ์ค„์ด๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

Hollo :hollo:

Hollo(@hollo)๋Š” Fedify๋กœ ๊ตฌ๋™๋˜๋Š” 1์ธ ์‚ฌ์šฉ์ž์šฉ ๋งˆ์ดํฌ๋กœ๋ธ”๋กœ๊น… ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค. 1์ธ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์ง€๋งŒ, ActivityPub๋ฅผ ํ†ตํ•ด ์™„์ „ํžˆ ์—ฐํ•ฉ๋˜์–ด ์—ฐํ•ฉ์šฐ์ฃผ ์ „์ฒด์˜ ์‚ฌ์šฉ์ž๋“ค๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Hollo๋Š” Mastodon ํ˜ธํ™˜ API๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ์ž์ฒด ์›น ์ธํ„ฐํŽ˜์ด์Šค ์—†์ด๋„ ๋Œ€๋ถ€๋ถ„์˜ Mastodon ํด๋ผ์ด์–ธํŠธ์™€ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค.

Hollo๋Š” ๋˜ํ•œ ์ •์‹ ์ถœ์‹œ ์ „์— ์ตœ์‹  Fedify ๊ธฐ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ์‹คํ—˜์žฅ์œผ๋กœ๋„ ํ™œ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

BotKit :botkit:

BotKit(@botkit)์€ ์ €ํฌ์˜ ๊ฐ€์žฅ ์ƒˆ๋กœ์šด ๊ตฌ์„ฑ์›์œผ๋กœ, ActivityPub ๋ด‡์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํŠน๋ณ„ํžˆ ์„ค๊ณ„๋œ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ „ํ†ต์ ์ธ Mastodon ๋ด‡๊ณผ ๋‹ฌ๋ฆฌ, BotKit์€ ํ”Œ๋žซํผ๋ณ„ ์ œํ•œ(๊ธ€์ž ์ˆ˜ ์ œํ•œ ๋“ฑ)์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๋Š” ๋…๋ฆฝ์ ์ธ ActivityPub ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

BotKit์˜ API๋Š” ์˜๋„์ ์œผ๋กœ ๋‹จ์ˆœํ•˜๊ฒŒ ์„ค๊ณ„๋˜์–ด ๋‹จ์ผ TypeScript ํŒŒ์ผ๋กœ ์™„์ „ํ•œ ๋ด‡์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!


์„ธ ํ”„๋กœ์ ํŠธ ๋ชจ๋‘ @fedify-dev GitHub ์กฐ์ง์—์„œ ์˜คํ”ˆ ์†Œ์Šค๋กœ ๊ณต๊ฐœ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๋ชฉ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ, ActivityPub ๊ฐœ๋ฐœ์„ ๋” ์ ‘๊ทผํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ณ  ์—ฐํ•ฉ์šฐ์ฃผ ์ƒํƒœ๊ณ„๋ฅผ ํ™•์žฅํ•œ๋‹ค๋Š” ๊ณตํ†ต๋œ ๋ชฉํ‘œ๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๊ฑฐ๋‚˜ ๊ฐœ๋ฐœ์— ๊ธฐ์—ฌํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์œผ์‹œ๋‹ค๋ฉด, ๋‹ค์Œ์„ ํ™•์ธํ•ด๋ณด์„ธ์š”:

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

@fedify@hollo.social

We'd like to introduce the project familyโ€”a set of related tools that make building applications more accessible:

Fedify :fedify:

Fedify (@fedify) is a library for building federated server applications powered by ActivityPub and other 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:

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. 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:

BotKit (@botkit) is our newest family memberโ€”a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, 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: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We'd like to introduce the project familyโ€”a set of related tools that make building applications more accessible:

Fedify :fedify:

Fedify (@fedify) is a library for building federated server applications powered by ActivityPub and other 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:

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. 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:

BotKit (@botkit) is our newest family memberโ€”a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, 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: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We'd like to introduce the project familyโ€”a set of related tools that make building applications more accessible:

Fedify :fedify:

Fedify (@fedify) is a library for building federated server applications powered by ActivityPub and other 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:

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. 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:

BotKit (@botkit) is our newest family memberโ€”a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, 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: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We'd like to introduce the project familyโ€”a set of related tools that make building applications more accessible:

Fedify :fedify:

Fedify (@fedify) is a library for building federated server applications powered by ActivityPub and other 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:

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. 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:

BotKit (@botkit) is our newest family memberโ€”a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, 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: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We'd like to introduce the project familyโ€”a set of related tools that make building applications more accessible:

Fedify :fedify:

Fedify (@fedify) is a library for building federated server applications powered by ActivityPub and other 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:

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. 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:

BotKit (@botkit) is our newest family memberโ€”a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, 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: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We'd like to introduce the project familyโ€”a set of related tools that make building applications more accessible:

Fedify :fedify:

Fedify (@fedify) is a library for building federated server applications powered by ActivityPub and other 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:

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. 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:

BotKit (@botkit) is our newest family memberโ€”a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, 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: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We'd like to introduce the project familyโ€”a set of related tools that make building applications more accessible:

Fedify :fedify:

Fedify (@fedify) is a library for building federated server applications powered by ActivityPub and other 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:

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. 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:

BotKit (@botkit) is our newest family memberโ€”a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, 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: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We'd like to introduce the project familyโ€”a set of related tools that make building applications more accessible:

Fedify :fedify:

Fedify (@fedify) is a library for building federated server applications powered by ActivityPub and other 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:

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. 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:

BotKit (@botkit) is our newest family memberโ€”a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, 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: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We'd like to introduce the project familyโ€”a set of related tools that make building applications more accessible:

Fedify :fedify:

Fedify (@fedify) is a library for building federated server applications powered by ActivityPub and other 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:

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. 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:

BotKit (@botkit) is our newest family memberโ€”a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, 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: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We'd like to introduce the project familyโ€”a set of related tools that make building applications more accessible:

Fedify :fedify:

Fedify (@fedify) is a library for building federated server applications powered by ActivityPub and other 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:

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. 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:

BotKit (@botkit) is our newest family memberโ€”a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, 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: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We'd like to introduce the project familyโ€”a set of related tools that make building applications more accessible:

Fedify :fedify:

Fedify (@fedify) is a library for building federated server applications powered by ActivityPub and other 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:

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. 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:

BotKit (@botkit) is our newest family memberโ€”a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, 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:

Chris Trottier's avatar
Chris Trottier

@atomicpoet@atomicpoet.org

Two new features are coming to #Fedify! Both have to do with controls over domain names:

  1. Different domains for WebFinger handles and server URIs.
  2. Canonical origin support to explicitly set your serverโ€™s authoritative domain

https://hollo.social/@fedify/01953693-1afd-7430-988a-23d649099e1c

@fediversenews

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

@fedify@hollo.social

We'd like to introduce the project familyโ€”a set of related tools that make building applications more accessible:

Fedify :fedify:

Fedify (@fedify) is a library for building federated server applications powered by ActivityPub and other 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:

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. 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:

BotKit (@botkit) is our newest family memberโ€”a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, 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: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

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

Fedifyใฎ้–ข้€ฃใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‚’ใ”็ดนไป‹ใ—ใŸใ„ใจๆ€ใ„ใพใ™ใ€‚ActivityPubใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณ้–‹็™บใ‚’ใ‚ˆใ‚Š็ฐกๅ˜ใซใ™ใ‚‹ใƒ„ใƒผใƒซ็พคใงใ™๏ผš

Fedify :fedify:

Fedify๏ผˆ@fedify๏ผ‰ใฏActivityPubใ‚„ใใฎไป–ใฎใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นๆจ™ๆบ–ใ‚’ๆดป็”จใ™ใ‚‹้€ฃๅˆๅž‹ใ‚ตใƒผใƒใƒผใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใ‚’ๆง‹็ฏ‰ใ™ใ‚‹ใŸใ‚ใฎTypeScriptใƒฉใ‚คใƒ–ใƒฉใƒชใงใ™ใ€‚Activity Vocabularyใฎๅž‹ๅฎ‰ๅ…จใชใ‚ชใƒ–ใ‚ธใ‚งใ‚ฏใƒˆใ€WebFingerใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใƒปใ‚ตใƒผใƒใƒผใ€HTTP Signaturesใชใฉใ‚’ๆไพ›ใ—ใ€ใƒœใ‚คใƒฉใƒผใƒ—ใƒฌใƒผใƒˆใ‚ณใƒผใƒ‰ใ‚’ๅ‰Šๆธ›ใ—ใฆใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใƒญใ‚ธใƒƒใ‚ฏใซ้›†ไธญใงใใ‚‹ใ‚ˆใ†ใซใ—ใพใ™ใ€‚

Hollo :hollo:

Hollo๏ผˆ@hollo๏ผ‰ใฏFedifyใงๅ‹•ไฝœใ™ใ‚‹ใŠไธ€ไบบๆง˜็”จใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐใ‚ตใƒผใƒใƒผใงใ™ใ€‚ๅ€‹ไบบๅ‘ใ‘ใซ่จญ่จˆใ•ใ‚Œใฆใ„ใพใ™ใŒใ€ActivityPubใ‚’้€šใ˜ใฆๅฎŒๅ…จใซ้€ฃๅˆๅŒ–ใ•ใ‚ŒใฆใŠใ‚Šใ€ใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นๅ…จไฝ“ใฎใƒฆใƒผใ‚ถใƒผใจไบคๆตใ™ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚HolloใฏMastodonไบ’ๆ›APIใ‚’ๅฎŸ่ฃ…ใ—ใฆใ„ใ‚‹ใŸใ‚ใ€็‹ฌ่‡ชใฎใ‚ฆใ‚งใƒ–ใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚นใŒใชใใฆใ‚‚ใ€ใปใจใ‚“ใฉใฎMastodonใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใจไบ’ๆ›ๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚

HolloใฏใพใŸใ€ๆญฃๅผใƒชใƒชใƒผใ‚นๅ‰ใฎๆœ€ๆ–ฐFedifyๆฉŸ่ƒฝใ‚’ใƒ†ใ‚นใƒˆใ™ใ‚‹ๅฎŸ้จ“ๅ ดใจใ—ใฆใ‚‚ๆดป็”จใ•ใ‚Œใฆใ„ใพใ™ใ€‚

BotKit :botkit:

BotKit๏ผˆ@botkit๏ผ‰ใฏ็งใŸใกใฎๆœ€ใ‚‚ๆ–ฐใ—ใ„ใƒกใƒณใƒใƒผใงใ€ActivityPubใƒœใƒƒใƒˆใ‚’ไฝœๆˆใ™ใ‚‹ใŸใ‚ใซ็‰นๅˆฅใซ่จญ่จˆใ•ใ‚ŒใŸใƒ•ใƒฌใƒผใƒ ใƒฏใƒผใ‚ฏใงใ™ใ€‚ๅพ“ๆฅใฎMastodonใƒœใƒƒใƒˆใจใฏ็•ฐใชใ‚Šใ€BotKitใฏใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ๅ›บๆœ‰ใฎๅˆถ้™๏ผˆๆ–‡ๅญ—ๆ•ฐๅˆถ้™ใชใฉ๏ผ‰ใซ็ธ›ใ‚‰ใ‚Œใชใ„็‹ฌ็ซ‹ใ—ใŸActivityPubใ‚ตใƒผใƒใƒผใ‚’ไฝœๆˆใ—ใพใ™ใ€‚

BotKitใฎAPIใฏๆ„ๅ›ณ็š„ใซใ‚ทใƒณใƒ—ใƒซใซ่จญ่จˆใ•ใ‚ŒใฆใŠใ‚Šใ€ๅ˜ไธ€ใฎTypeScriptใƒ•ใ‚กใ‚คใƒซใงๅฎŒๅ…จใชใƒœใƒƒใƒˆใ‚’ไฝœๆˆใงใใพใ™๏ผ


ใ“ใ‚Œใ‚‰ไธ‰ใคใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใฏใ™ในใฆ@fedify-dev GitHubใ‚ชใƒผใ‚ฌใƒ‹ใ‚ผใƒผใ‚ทใƒงใƒณใงใ‚ชใƒผใƒ—ใƒณใ‚ฝใƒผใ‚นใจใ—ใฆๅ…ฌ้–‹ใ•ใ‚Œใฆใ„ใพใ™ใ€‚ใใ‚Œใžใ‚Œ็•ฐใชใ‚‹็›ฎ็š„ใ‚’ๆŒใฃใฆใ„ใพใ™ใŒใ€ActivityPub้–‹็™บใ‚’ใ‚ˆใ‚Š่บซ่ฟ‘ใซใ—ใ€ใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นใฎใ‚จใ‚ณใ‚ทใ‚นใƒ†ใƒ ใ‚’ๆ‹กๅคงใ™ใ‚‹ใจใ„ใ†ๅ…ฑ้€šใฎ็›ฎๆจ™ใ‚’ๅ…ฑๆœ‰ใ—ใฆใ„ใพใ™ใ€‚

ใ“ใ‚Œใ‚‰ใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‚’่ฉฆใ—ใฆใฟใŸใ‚Šใ€้–‹็™บใซ่ฒข็Œฎใ—ใŸใ‚Šใ™ใ‚‹ใ“ใจใซ่ˆˆๅ‘ณใŒใ‚ใ‚‹ๅ ดๅˆใฏใ€ไปฅไธ‹ใ‚’ใ”่ฆงใใ ใ•ใ„๏ผš

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(@fedify)๋Š” ActivityPub์™€ ๋‹ค๋ฅธ () ํ‘œ์ค€์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์—ฐํ•ฉ ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. Activity Vocabulary๋ฅผ ์œ„ํ•œ ํƒ€์ž… ์•ˆ์ „ํ•œ ๊ฐ์ฒด, WebFinger ํด๋ผ์ด์–ธํŠธ·์„œ๋ฒ„, HTTP Signatures ๋“ฑ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋ฐ˜๋ณต์ ์ธ ์ฝ”๋“œ๋ฅผ ์ค„์ด๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

Hollo :hollo:

Hollo(@hollo)๋Š” Fedify๋กœ ๊ตฌ๋™๋˜๋Š” 1์ธ ์‚ฌ์šฉ์ž์šฉ ๋งˆ์ดํฌ๋กœ๋ธ”๋กœ๊น… ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค. 1์ธ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์ง€๋งŒ, ActivityPub๋ฅผ ํ†ตํ•ด ์™„์ „ํžˆ ์—ฐํ•ฉ๋˜์–ด ์—ฐํ•ฉ์šฐ์ฃผ ์ „์ฒด์˜ ์‚ฌ์šฉ์ž๋“ค๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Hollo๋Š” Mastodon ํ˜ธํ™˜ API๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ์ž์ฒด ์›น ์ธํ„ฐํŽ˜์ด์Šค ์—†์ด๋„ ๋Œ€๋ถ€๋ถ„์˜ Mastodon ํด๋ผ์ด์–ธํŠธ์™€ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค.

Hollo๋Š” ๋˜ํ•œ ์ •์‹ ์ถœ์‹œ ์ „์— ์ตœ์‹  Fedify ๊ธฐ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ์‹คํ—˜์žฅ์œผ๋กœ๋„ ํ™œ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

BotKit :botkit:

BotKit(@botkit)์€ ์ €ํฌ์˜ ๊ฐ€์žฅ ์ƒˆ๋กœ์šด ๊ตฌ์„ฑ์›์œผ๋กœ, ActivityPub ๋ด‡์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํŠน๋ณ„ํžˆ ์„ค๊ณ„๋œ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ „ํ†ต์ ์ธ Mastodon ๋ด‡๊ณผ ๋‹ฌ๋ฆฌ, BotKit์€ ํ”Œ๋žซํผ๋ณ„ ์ œํ•œ(๊ธ€์ž ์ˆ˜ ์ œํ•œ ๋“ฑ)์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๋Š” ๋…๋ฆฝ์ ์ธ ActivityPub ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

BotKit์˜ API๋Š” ์˜๋„์ ์œผ๋กœ ๋‹จ์ˆœํ•˜๊ฒŒ ์„ค๊ณ„๋˜์–ด ๋‹จ์ผ TypeScript ํŒŒ์ผ๋กœ ์™„์ „ํ•œ ๋ด‡์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!


์„ธ ํ”„๋กœ์ ํŠธ ๋ชจ๋‘ @fedify-dev GitHub ์กฐ์ง์—์„œ ์˜คํ”ˆ ์†Œ์Šค๋กœ ๊ณต๊ฐœ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๋ชฉ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ, ActivityPub ๊ฐœ๋ฐœ์„ ๋” ์ ‘๊ทผํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ณ  ์—ฐํ•ฉ์šฐ์ฃผ ์ƒํƒœ๊ณ„๋ฅผ ํ™•์žฅํ•œ๋‹ค๋Š” ๊ณตํ†ต๋œ ๋ชฉํ‘œ๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๊ฑฐ๋‚˜ ๊ฐœ๋ฐœ์— ๊ธฐ์—ฌํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์œผ์‹œ๋‹ค๋ฉด, ๋‹ค์Œ์„ ํ™•์ธํ•ด๋ณด์„ธ์š”:

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

@fedify@hollo.social

We'd like to introduce the project familyโ€”a set of related tools that make building applications more accessible:

Fedify :fedify:

Fedify (@fedify) is a library for building federated server applications powered by ActivityPub and other 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:

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. 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:

BotKit (@botkit) is our newest family memberโ€”a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, 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:

Chris Trottier's avatar
Chris Trottier

@atomicpoet@atomicpoet.org

Two new features are coming to #Fedify! Both have to do with controls over domain names:

  1. Different domains for WebFinger handles and server URIs.
  2. Canonical origin support to explicitly set your serverโ€™s authoritative domain

https://hollo.social/@fedify/01953693-1afd-7430-988a-23d649099e1c

@fediversenews

Chris Trottier's avatar
Chris Trottier

@atomicpoet@atomicpoet.org

Two new features are coming to #Fedify! Both have to do with controls over domain names:

  1. Different domains for WebFinger handles and server URIs.
  2. Canonical origin support to explicitly set your serverโ€™s authoritative domain

https://hollo.social/@fedify/01953693-1afd-7430-988a-23d649099e1c

@fediversenews

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

@fedify@hollo.social

We'd like to introduce the project familyโ€”a set of related tools that make building applications more accessible:

Fedify :fedify:

Fedify (@fedify) is a library for building federated server applications powered by ActivityPub and other 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:

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. 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:

BotKit (@botkit) is our newest family memberโ€”a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, 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: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We'd like to introduce the project familyโ€”a set of related tools that make building applications more accessible:

Fedify :fedify:

Fedify (@fedify) is a library for building federated server applications powered by ActivityPub and other 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:

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. 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:

BotKit (@botkit) is our newest family memberโ€”a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, 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: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We'd like to introduce the project familyโ€”a set of related tools that make building applications more accessible:

Fedify :fedify:

Fedify (@fedify) is a library for building federated server applications powered by ActivityPub and other 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:

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. 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:

BotKit (@botkit) is our newest family memberโ€”a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, 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: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We'd like to introduce the project familyโ€”a set of related tools that make building applications more accessible:

Fedify :fedify:

Fedify (@fedify) is a library for building federated server applications powered by ActivityPub and other 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:

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. 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:

BotKit (@botkit) is our newest family memberโ€”a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, 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: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We'd like to introduce the project familyโ€”a set of related tools that make building applications more accessible:

Fedify :fedify:

Fedify (@fedify) is a library for building federated server applications powered by ActivityPub and other 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:

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. 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:

BotKit (@botkit) is our newest family memberโ€”a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, 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: 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(@fedify)๋Š” ActivityPub์™€ ๋‹ค๋ฅธ () ํ‘œ์ค€์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์—ฐํ•ฉ ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. Activity Vocabulary๋ฅผ ์œ„ํ•œ ํƒ€์ž… ์•ˆ์ „ํ•œ ๊ฐ์ฒด, WebFinger ํด๋ผ์ด์–ธํŠธ·์„œ๋ฒ„, HTTP Signatures ๋“ฑ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋ฐ˜๋ณต์ ์ธ ์ฝ”๋“œ๋ฅผ ์ค„์ด๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

Hollo :hollo:

Hollo(@hollo)๋Š” Fedify๋กœ ๊ตฌ๋™๋˜๋Š” 1์ธ ์‚ฌ์šฉ์ž์šฉ ๋งˆ์ดํฌ๋กœ๋ธ”๋กœ๊น… ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค. 1์ธ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์ง€๋งŒ, ActivityPub๋ฅผ ํ†ตํ•ด ์™„์ „ํžˆ ์—ฐํ•ฉ๋˜์–ด ์—ฐํ•ฉ์šฐ์ฃผ ์ „์ฒด์˜ ์‚ฌ์šฉ์ž๋“ค๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Hollo๋Š” Mastodon ํ˜ธํ™˜ API๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ์ž์ฒด ์›น ์ธํ„ฐํŽ˜์ด์Šค ์—†์ด๋„ ๋Œ€๋ถ€๋ถ„์˜ Mastodon ํด๋ผ์ด์–ธํŠธ์™€ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค.

Hollo๋Š” ๋˜ํ•œ ์ •์‹ ์ถœ์‹œ ์ „์— ์ตœ์‹  Fedify ๊ธฐ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ์‹คํ—˜์žฅ์œผ๋กœ๋„ ํ™œ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

BotKit :botkit:

BotKit(@botkit)์€ ์ €ํฌ์˜ ๊ฐ€์žฅ ์ƒˆ๋กœ์šด ๊ตฌ์„ฑ์›์œผ๋กœ, ActivityPub ๋ด‡์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํŠน๋ณ„ํžˆ ์„ค๊ณ„๋œ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ „ํ†ต์ ์ธ Mastodon ๋ด‡๊ณผ ๋‹ฌ๋ฆฌ, BotKit์€ ํ”Œ๋žซํผ๋ณ„ ์ œํ•œ(๊ธ€์ž ์ˆ˜ ์ œํ•œ ๋“ฑ)์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๋Š” ๋…๋ฆฝ์ ์ธ ActivityPub ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

BotKit์˜ API๋Š” ์˜๋„์ ์œผ๋กœ ๋‹จ์ˆœํ•˜๊ฒŒ ์„ค๊ณ„๋˜์–ด ๋‹จ์ผ TypeScript ํŒŒ์ผ๋กœ ์™„์ „ํ•œ ๋ด‡์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!


์„ธ ํ”„๋กœ์ ํŠธ ๋ชจ๋‘ @fedify-dev GitHub ์กฐ์ง์—์„œ ์˜คํ”ˆ ์†Œ์Šค๋กœ ๊ณต๊ฐœ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๋ชฉ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ, ActivityPub ๊ฐœ๋ฐœ์„ ๋” ์ ‘๊ทผํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ณ  ์—ฐํ•ฉ์šฐ์ฃผ ์ƒํƒœ๊ณ„๋ฅผ ํ™•์žฅํ•œ๋‹ค๋Š” ๊ณตํ†ต๋œ ๋ชฉํ‘œ๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๊ฑฐ๋‚˜ ๊ฐœ๋ฐœ์— ๊ธฐ์—ฌํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์œผ์‹œ๋‹ค๋ฉด, ๋‹ค์Œ์„ ํ™•์ธํ•ด๋ณด์„ธ์š”:

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

@fedify@hollo.social

We'd like to introduce the project familyโ€”a set of related tools that make building applications more accessible:

Fedify :fedify:

Fedify (@fedify) is a library for building federated server applications powered by ActivityPub and other 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:

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. 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:

BotKit (@botkit) is our newest family memberโ€”a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, 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: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We'd like to introduce the project familyโ€”a set of related tools that make building applications more accessible:

Fedify :fedify:

Fedify (@fedify) is a library for building federated server applications powered by ActivityPub and other 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:

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. 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:

BotKit (@botkit) is our newest family memberโ€”a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, 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: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We'd like to introduce the project familyโ€”a set of related tools that make building applications more accessible:

Fedify :fedify:

Fedify (@fedify) is a library for building federated server applications powered by ActivityPub and other 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:

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. 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:

BotKit (@botkit) is our newest family memberโ€”a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, 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: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We'd like to introduce the project familyโ€”a set of related tools that make building applications more accessible:

Fedify :fedify:

Fedify (@fedify) is a library for building federated server applications powered by ActivityPub and other 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:

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. 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:

BotKit (@botkit) is our newest family memberโ€”a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, 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: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We'd like to introduce the project familyโ€”a set of related tools that make building applications more accessible:

Fedify :fedify:

Fedify (@fedify) is a library for building federated server applications powered by ActivityPub and other 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:

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. 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:

BotKit (@botkit) is our newest family memberโ€”a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, 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: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We'd like to introduce the project familyโ€”a set of related tools that make building applications more accessible:

Fedify :fedify:

Fedify (@fedify) is a library for building federated server applications powered by ActivityPub and other 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:

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. 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:

BotKit (@botkit) is our newest family memberโ€”a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, 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: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We'd like to introduce the project familyโ€”a set of related tools that make building applications more accessible:

Fedify :fedify:

Fedify (@fedify) is a library for building federated server applications powered by ActivityPub and other 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:

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. 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:

BotKit (@botkit) is our newest family memberโ€”a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, 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: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

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

Fedifyใฎ้–ข้€ฃใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‚’ใ”็ดนไป‹ใ—ใŸใ„ใจๆ€ใ„ใพใ™ใ€‚ActivityPubใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณ้–‹็™บใ‚’ใ‚ˆใ‚Š็ฐกๅ˜ใซใ™ใ‚‹ใƒ„ใƒผใƒซ็พคใงใ™๏ผš

Fedify :fedify:

Fedify๏ผˆ@fedify๏ผ‰ใฏActivityPubใ‚„ใใฎไป–ใฎใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นๆจ™ๆบ–ใ‚’ๆดป็”จใ™ใ‚‹้€ฃๅˆๅž‹ใ‚ตใƒผใƒใƒผใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใ‚’ๆง‹็ฏ‰ใ™ใ‚‹ใŸใ‚ใฎTypeScriptใƒฉใ‚คใƒ–ใƒฉใƒชใงใ™ใ€‚Activity Vocabularyใฎๅž‹ๅฎ‰ๅ…จใชใ‚ชใƒ–ใ‚ธใ‚งใ‚ฏใƒˆใ€WebFingerใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใƒปใ‚ตใƒผใƒใƒผใ€HTTP Signaturesใชใฉใ‚’ๆไพ›ใ—ใ€ใƒœใ‚คใƒฉใƒผใƒ—ใƒฌใƒผใƒˆใ‚ณใƒผใƒ‰ใ‚’ๅ‰Šๆธ›ใ—ใฆใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใƒญใ‚ธใƒƒใ‚ฏใซ้›†ไธญใงใใ‚‹ใ‚ˆใ†ใซใ—ใพใ™ใ€‚

Hollo :hollo:

Hollo๏ผˆ@hollo๏ผ‰ใฏFedifyใงๅ‹•ไฝœใ™ใ‚‹ใŠไธ€ไบบๆง˜็”จใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐใ‚ตใƒผใƒใƒผใงใ™ใ€‚ๅ€‹ไบบๅ‘ใ‘ใซ่จญ่จˆใ•ใ‚Œใฆใ„ใพใ™ใŒใ€ActivityPubใ‚’้€šใ˜ใฆๅฎŒๅ…จใซ้€ฃๅˆๅŒ–ใ•ใ‚ŒใฆใŠใ‚Šใ€ใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นๅ…จไฝ“ใฎใƒฆใƒผใ‚ถใƒผใจไบคๆตใ™ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚HolloใฏMastodonไบ’ๆ›APIใ‚’ๅฎŸ่ฃ…ใ—ใฆใ„ใ‚‹ใŸใ‚ใ€็‹ฌ่‡ชใฎใ‚ฆใ‚งใƒ–ใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚นใŒใชใใฆใ‚‚ใ€ใปใจใ‚“ใฉใฎMastodonใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใจไบ’ๆ›ๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚

HolloใฏใพใŸใ€ๆญฃๅผใƒชใƒชใƒผใ‚นๅ‰ใฎๆœ€ๆ–ฐFedifyๆฉŸ่ƒฝใ‚’ใƒ†ใ‚นใƒˆใ™ใ‚‹ๅฎŸ้จ“ๅ ดใจใ—ใฆใ‚‚ๆดป็”จใ•ใ‚Œใฆใ„ใพใ™ใ€‚

BotKit :botkit:

BotKit๏ผˆ@botkit๏ผ‰ใฏ็งใŸใกใฎๆœ€ใ‚‚ๆ–ฐใ—ใ„ใƒกใƒณใƒใƒผใงใ€ActivityPubใƒœใƒƒใƒˆใ‚’ไฝœๆˆใ™ใ‚‹ใŸใ‚ใซ็‰นๅˆฅใซ่จญ่จˆใ•ใ‚ŒใŸใƒ•ใƒฌใƒผใƒ ใƒฏใƒผใ‚ฏใงใ™ใ€‚ๅพ“ๆฅใฎMastodonใƒœใƒƒใƒˆใจใฏ็•ฐใชใ‚Šใ€BotKitใฏใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ๅ›บๆœ‰ใฎๅˆถ้™๏ผˆๆ–‡ๅญ—ๆ•ฐๅˆถ้™ใชใฉ๏ผ‰ใซ็ธ›ใ‚‰ใ‚Œใชใ„็‹ฌ็ซ‹ใ—ใŸActivityPubใ‚ตใƒผใƒใƒผใ‚’ไฝœๆˆใ—ใพใ™ใ€‚

BotKitใฎAPIใฏๆ„ๅ›ณ็š„ใซใ‚ทใƒณใƒ—ใƒซใซ่จญ่จˆใ•ใ‚ŒใฆใŠใ‚Šใ€ๅ˜ไธ€ใฎTypeScriptใƒ•ใ‚กใ‚คใƒซใงๅฎŒๅ…จใชใƒœใƒƒใƒˆใ‚’ไฝœๆˆใงใใพใ™๏ผ


ใ“ใ‚Œใ‚‰ไธ‰ใคใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใฏใ™ในใฆ@fedify-dev GitHubใ‚ชใƒผใ‚ฌใƒ‹ใ‚ผใƒผใ‚ทใƒงใƒณใงใ‚ชใƒผใƒ—ใƒณใ‚ฝใƒผใ‚นใจใ—ใฆๅ…ฌ้–‹ใ•ใ‚Œใฆใ„ใพใ™ใ€‚ใใ‚Œใžใ‚Œ็•ฐใชใ‚‹็›ฎ็š„ใ‚’ๆŒใฃใฆใ„ใพใ™ใŒใ€ActivityPub้–‹็™บใ‚’ใ‚ˆใ‚Š่บซ่ฟ‘ใซใ—ใ€ใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นใฎใ‚จใ‚ณใ‚ทใ‚นใƒ†ใƒ ใ‚’ๆ‹กๅคงใ™ใ‚‹ใจใ„ใ†ๅ…ฑ้€šใฎ็›ฎๆจ™ใ‚’ๅ…ฑๆœ‰ใ—ใฆใ„ใพใ™ใ€‚

ใ“ใ‚Œใ‚‰ใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‚’่ฉฆใ—ใฆใฟใŸใ‚Šใ€้–‹็™บใซ่ฒข็Œฎใ—ใŸใ‚Šใ™ใ‚‹ใ“ใจใซ่ˆˆๅ‘ณใŒใ‚ใ‚‹ๅ ดๅˆใฏใ€ไปฅไธ‹ใ‚’ใ”่ฆงใใ ใ•ใ„๏ผš

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(@fedify)๋Š” ActivityPub์™€ ๋‹ค๋ฅธ () ํ‘œ์ค€์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์—ฐํ•ฉ ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. Activity Vocabulary๋ฅผ ์œ„ํ•œ ํƒ€์ž… ์•ˆ์ „ํ•œ ๊ฐ์ฒด, WebFinger ํด๋ผ์ด์–ธํŠธ·์„œ๋ฒ„, HTTP Signatures ๋“ฑ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋ฐ˜๋ณต์ ์ธ ์ฝ”๋“œ๋ฅผ ์ค„์ด๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

Hollo :hollo:

Hollo(@hollo)๋Š” Fedify๋กœ ๊ตฌ๋™๋˜๋Š” 1์ธ ์‚ฌ์šฉ์ž์šฉ ๋งˆ์ดํฌ๋กœ๋ธ”๋กœ๊น… ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค. 1์ธ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์ง€๋งŒ, ActivityPub๋ฅผ ํ†ตํ•ด ์™„์ „ํžˆ ์—ฐํ•ฉ๋˜์–ด ์—ฐํ•ฉ์šฐ์ฃผ ์ „์ฒด์˜ ์‚ฌ์šฉ์ž๋“ค๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Hollo๋Š” Mastodon ํ˜ธํ™˜ API๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ์ž์ฒด ์›น ์ธํ„ฐํŽ˜์ด์Šค ์—†์ด๋„ ๋Œ€๋ถ€๋ถ„์˜ Mastodon ํด๋ผ์ด์–ธํŠธ์™€ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค.

Hollo๋Š” ๋˜ํ•œ ์ •์‹ ์ถœ์‹œ ์ „์— ์ตœ์‹  Fedify ๊ธฐ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ์‹คํ—˜์žฅ์œผ๋กœ๋„ ํ™œ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

BotKit :botkit:

BotKit(@botkit)์€ ์ €ํฌ์˜ ๊ฐ€์žฅ ์ƒˆ๋กœ์šด ๊ตฌ์„ฑ์›์œผ๋กœ, ActivityPub ๋ด‡์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํŠน๋ณ„ํžˆ ์„ค๊ณ„๋œ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ „ํ†ต์ ์ธ Mastodon ๋ด‡๊ณผ ๋‹ฌ๋ฆฌ, BotKit์€ ํ”Œ๋žซํผ๋ณ„ ์ œํ•œ(๊ธ€์ž ์ˆ˜ ์ œํ•œ ๋“ฑ)์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๋Š” ๋…๋ฆฝ์ ์ธ ActivityPub ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

BotKit์˜ API๋Š” ์˜๋„์ ์œผ๋กœ ๋‹จ์ˆœํ•˜๊ฒŒ ์„ค๊ณ„๋˜์–ด ๋‹จ์ผ TypeScript ํŒŒ์ผ๋กœ ์™„์ „ํ•œ ๋ด‡์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!


์„ธ ํ”„๋กœ์ ํŠธ ๋ชจ๋‘ @fedify-dev GitHub ์กฐ์ง์—์„œ ์˜คํ”ˆ ์†Œ์Šค๋กœ ๊ณต๊ฐœ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๋ชฉ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ, ActivityPub ๊ฐœ๋ฐœ์„ ๋” ์ ‘๊ทผํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ณ  ์—ฐํ•ฉ์šฐ์ฃผ ์ƒํƒœ๊ณ„๋ฅผ ํ™•์žฅํ•œ๋‹ค๋Š” ๊ณตํ†ต๋œ ๋ชฉํ‘œ๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๊ฑฐ๋‚˜ ๊ฐœ๋ฐœ์— ๊ธฐ์—ฌํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์œผ์‹œ๋‹ค๋ฉด, ๋‹ค์Œ์„ ํ™•์ธํ•ด๋ณด์„ธ์š”:

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ใฎ้–ข้€ฃใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‚’ใ”็ดนไป‹ใ—ใŸใ„ใจๆ€ใ„ใพใ™ใ€‚ActivityPubใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณ้–‹็™บใ‚’ใ‚ˆใ‚Š็ฐกๅ˜ใซใ™ใ‚‹ใƒ„ใƒผใƒซ็พคใงใ™๏ผš

Fedify :fedify:

Fedify๏ผˆ@fedify๏ผ‰ใฏActivityPubใ‚„ใใฎไป–ใฎใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นๆจ™ๆบ–ใ‚’ๆดป็”จใ™ใ‚‹้€ฃๅˆๅž‹ใ‚ตใƒผใƒใƒผใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใ‚’ๆง‹็ฏ‰ใ™ใ‚‹ใŸใ‚ใฎTypeScriptใƒฉใ‚คใƒ–ใƒฉใƒชใงใ™ใ€‚Activity Vocabularyใฎๅž‹ๅฎ‰ๅ…จใชใ‚ชใƒ–ใ‚ธใ‚งใ‚ฏใƒˆใ€WebFingerใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใƒปใ‚ตใƒผใƒใƒผใ€HTTP Signaturesใชใฉใ‚’ๆไพ›ใ—ใ€ใƒœใ‚คใƒฉใƒผใƒ—ใƒฌใƒผใƒˆใ‚ณใƒผใƒ‰ใ‚’ๅ‰Šๆธ›ใ—ใฆใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใƒญใ‚ธใƒƒใ‚ฏใซ้›†ไธญใงใใ‚‹ใ‚ˆใ†ใซใ—ใพใ™ใ€‚

Hollo :hollo:

Hollo๏ผˆ@hollo๏ผ‰ใฏFedifyใงๅ‹•ไฝœใ™ใ‚‹ใŠไธ€ไบบๆง˜็”จใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐใ‚ตใƒผใƒใƒผใงใ™ใ€‚ๅ€‹ไบบๅ‘ใ‘ใซ่จญ่จˆใ•ใ‚Œใฆใ„ใพใ™ใŒใ€ActivityPubใ‚’้€šใ˜ใฆๅฎŒๅ…จใซ้€ฃๅˆๅŒ–ใ•ใ‚ŒใฆใŠใ‚Šใ€ใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นๅ…จไฝ“ใฎใƒฆใƒผใ‚ถใƒผใจไบคๆตใ™ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚HolloใฏMastodonไบ’ๆ›APIใ‚’ๅฎŸ่ฃ…ใ—ใฆใ„ใ‚‹ใŸใ‚ใ€็‹ฌ่‡ชใฎใ‚ฆใ‚งใƒ–ใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚นใŒใชใใฆใ‚‚ใ€ใปใจใ‚“ใฉใฎMastodonใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใจไบ’ๆ›ๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚

HolloใฏใพใŸใ€ๆญฃๅผใƒชใƒชใƒผใ‚นๅ‰ใฎๆœ€ๆ–ฐFedifyๆฉŸ่ƒฝใ‚’ใƒ†ใ‚นใƒˆใ™ใ‚‹ๅฎŸ้จ“ๅ ดใจใ—ใฆใ‚‚ๆดป็”จใ•ใ‚Œใฆใ„ใพใ™ใ€‚

BotKit :botkit:

BotKit๏ผˆ@botkit๏ผ‰ใฏ็งใŸใกใฎๆœ€ใ‚‚ๆ–ฐใ—ใ„ใƒกใƒณใƒใƒผใงใ€ActivityPubใƒœใƒƒใƒˆใ‚’ไฝœๆˆใ™ใ‚‹ใŸใ‚ใซ็‰นๅˆฅใซ่จญ่จˆใ•ใ‚ŒใŸใƒ•ใƒฌใƒผใƒ ใƒฏใƒผใ‚ฏใงใ™ใ€‚ๅพ“ๆฅใฎMastodonใƒœใƒƒใƒˆใจใฏ็•ฐใชใ‚Šใ€BotKitใฏใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ๅ›บๆœ‰ใฎๅˆถ้™๏ผˆๆ–‡ๅญ—ๆ•ฐๅˆถ้™ใชใฉ๏ผ‰ใซ็ธ›ใ‚‰ใ‚Œใชใ„็‹ฌ็ซ‹ใ—ใŸActivityPubใ‚ตใƒผใƒใƒผใ‚’ไฝœๆˆใ—ใพใ™ใ€‚

BotKitใฎAPIใฏๆ„ๅ›ณ็š„ใซใ‚ทใƒณใƒ—ใƒซใซ่จญ่จˆใ•ใ‚ŒใฆใŠใ‚Šใ€ๅ˜ไธ€ใฎTypeScriptใƒ•ใ‚กใ‚คใƒซใงๅฎŒๅ…จใชใƒœใƒƒใƒˆใ‚’ไฝœๆˆใงใใพใ™๏ผ


ใ“ใ‚Œใ‚‰ไธ‰ใคใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใฏใ™ในใฆ@fedify-dev GitHubใ‚ชใƒผใ‚ฌใƒ‹ใ‚ผใƒผใ‚ทใƒงใƒณใงใ‚ชใƒผใƒ—ใƒณใ‚ฝใƒผใ‚นใจใ—ใฆๅ…ฌ้–‹ใ•ใ‚Œใฆใ„ใพใ™ใ€‚ใใ‚Œใžใ‚Œ็•ฐใชใ‚‹็›ฎ็š„ใ‚’ๆŒใฃใฆใ„ใพใ™ใŒใ€ActivityPub้–‹็™บใ‚’ใ‚ˆใ‚Š่บซ่ฟ‘ใซใ—ใ€ใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นใฎใ‚จใ‚ณใ‚ทใ‚นใƒ†ใƒ ใ‚’ๆ‹กๅคงใ™ใ‚‹ใจใ„ใ†ๅ…ฑ้€šใฎ็›ฎๆจ™ใ‚’ๅ…ฑๆœ‰ใ—ใฆใ„ใพใ™ใ€‚

ใ“ใ‚Œใ‚‰ใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‚’่ฉฆใ—ใฆใฟใŸใ‚Šใ€้–‹็™บใซ่ฒข็Œฎใ—ใŸใ‚Šใ™ใ‚‹ใ“ใจใซ่ˆˆๅ‘ณใŒใ‚ใ‚‹ๅ ดๅˆใฏใ€ไปฅไธ‹ใ‚’ใ”่ฆงใใ ใ•ใ„๏ผš

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ใฎ้–ข้€ฃใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‚’ใ”็ดนไป‹ใ—ใŸใ„ใจๆ€ใ„ใพใ™ใ€‚ActivityPubใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณ้–‹็™บใ‚’ใ‚ˆใ‚Š็ฐกๅ˜ใซใ™ใ‚‹ใƒ„ใƒผใƒซ็พคใงใ™๏ผš

Fedify :fedify:

Fedify๏ผˆ@fedify๏ผ‰ใฏActivityPubใ‚„ใใฎไป–ใฎใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นๆจ™ๆบ–ใ‚’ๆดป็”จใ™ใ‚‹้€ฃๅˆๅž‹ใ‚ตใƒผใƒใƒผใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใ‚’ๆง‹็ฏ‰ใ™ใ‚‹ใŸใ‚ใฎTypeScriptใƒฉใ‚คใƒ–ใƒฉใƒชใงใ™ใ€‚Activity Vocabularyใฎๅž‹ๅฎ‰ๅ…จใชใ‚ชใƒ–ใ‚ธใ‚งใ‚ฏใƒˆใ€WebFingerใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใƒปใ‚ตใƒผใƒใƒผใ€HTTP Signaturesใชใฉใ‚’ๆไพ›ใ—ใ€ใƒœใ‚คใƒฉใƒผใƒ—ใƒฌใƒผใƒˆใ‚ณใƒผใƒ‰ใ‚’ๅ‰Šๆธ›ใ—ใฆใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใƒญใ‚ธใƒƒใ‚ฏใซ้›†ไธญใงใใ‚‹ใ‚ˆใ†ใซใ—ใพใ™ใ€‚

Hollo :hollo:

Hollo๏ผˆ@hollo๏ผ‰ใฏFedifyใงๅ‹•ไฝœใ™ใ‚‹ใŠไธ€ไบบๆง˜็”จใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐใ‚ตใƒผใƒใƒผใงใ™ใ€‚ๅ€‹ไบบๅ‘ใ‘ใซ่จญ่จˆใ•ใ‚Œใฆใ„ใพใ™ใŒใ€ActivityPubใ‚’้€šใ˜ใฆๅฎŒๅ…จใซ้€ฃๅˆๅŒ–ใ•ใ‚ŒใฆใŠใ‚Šใ€ใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นๅ…จไฝ“ใฎใƒฆใƒผใ‚ถใƒผใจไบคๆตใ™ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚HolloใฏMastodonไบ’ๆ›APIใ‚’ๅฎŸ่ฃ…ใ—ใฆใ„ใ‚‹ใŸใ‚ใ€็‹ฌ่‡ชใฎใ‚ฆใ‚งใƒ–ใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚นใŒใชใใฆใ‚‚ใ€ใปใจใ‚“ใฉใฎMastodonใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใจไบ’ๆ›ๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚

HolloใฏใพใŸใ€ๆญฃๅผใƒชใƒชใƒผใ‚นๅ‰ใฎๆœ€ๆ–ฐFedifyๆฉŸ่ƒฝใ‚’ใƒ†ใ‚นใƒˆใ™ใ‚‹ๅฎŸ้จ“ๅ ดใจใ—ใฆใ‚‚ๆดป็”จใ•ใ‚Œใฆใ„ใพใ™ใ€‚

BotKit :botkit:

BotKit๏ผˆ@botkit๏ผ‰ใฏ็งใŸใกใฎๆœ€ใ‚‚ๆ–ฐใ—ใ„ใƒกใƒณใƒใƒผใงใ€ActivityPubใƒœใƒƒใƒˆใ‚’ไฝœๆˆใ™ใ‚‹ใŸใ‚ใซ็‰นๅˆฅใซ่จญ่จˆใ•ใ‚ŒใŸใƒ•ใƒฌใƒผใƒ ใƒฏใƒผใ‚ฏใงใ™ใ€‚ๅพ“ๆฅใฎMastodonใƒœใƒƒใƒˆใจใฏ็•ฐใชใ‚Šใ€BotKitใฏใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ๅ›บๆœ‰ใฎๅˆถ้™๏ผˆๆ–‡ๅญ—ๆ•ฐๅˆถ้™ใชใฉ๏ผ‰ใซ็ธ›ใ‚‰ใ‚Œใชใ„็‹ฌ็ซ‹ใ—ใŸActivityPubใ‚ตใƒผใƒใƒผใ‚’ไฝœๆˆใ—ใพใ™ใ€‚

BotKitใฎAPIใฏๆ„ๅ›ณ็š„ใซใ‚ทใƒณใƒ—ใƒซใซ่จญ่จˆใ•ใ‚ŒใฆใŠใ‚Šใ€ๅ˜ไธ€ใฎTypeScriptใƒ•ใ‚กใ‚คใƒซใงๅฎŒๅ…จใชใƒœใƒƒใƒˆใ‚’ไฝœๆˆใงใใพใ™๏ผ


ใ“ใ‚Œใ‚‰ไธ‰ใคใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใฏใ™ในใฆ@fedify-dev GitHubใ‚ชใƒผใ‚ฌใƒ‹ใ‚ผใƒผใ‚ทใƒงใƒณใงใ‚ชใƒผใƒ—ใƒณใ‚ฝใƒผใ‚นใจใ—ใฆๅ…ฌ้–‹ใ•ใ‚Œใฆใ„ใพใ™ใ€‚ใใ‚Œใžใ‚Œ็•ฐใชใ‚‹็›ฎ็š„ใ‚’ๆŒใฃใฆใ„ใพใ™ใŒใ€ActivityPub้–‹็™บใ‚’ใ‚ˆใ‚Š่บซ่ฟ‘ใซใ—ใ€ใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นใฎใ‚จใ‚ณใ‚ทใ‚นใƒ†ใƒ ใ‚’ๆ‹กๅคงใ™ใ‚‹ใจใ„ใ†ๅ…ฑ้€šใฎ็›ฎๆจ™ใ‚’ๅ…ฑๆœ‰ใ—ใฆใ„ใพใ™ใ€‚

ใ“ใ‚Œใ‚‰ใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‚’่ฉฆใ—ใฆใฟใŸใ‚Šใ€้–‹็™บใซ่ฒข็Œฎใ—ใŸใ‚Šใ™ใ‚‹ใ“ใจใซ่ˆˆๅ‘ณใŒใ‚ใ‚‹ๅ ดๅˆใฏใ€ไปฅไธ‹ใ‚’ใ”่ฆงใใ ใ•ใ„๏ผš

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

@fedify@hollo.social

We'd like to introduce the project familyโ€”a set of related tools that make building applications more accessible:

Fedify :fedify:

Fedify (@fedify) is a library for building federated server applications powered by ActivityPub and other 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:

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. 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:

BotKit (@botkit) is our newest family memberโ€”a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, 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: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

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

Fedifyใฎ้–ข้€ฃใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‚’ใ”็ดนไป‹ใ—ใŸใ„ใจๆ€ใ„ใพใ™ใ€‚ActivityPubใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณ้–‹็™บใ‚’ใ‚ˆใ‚Š็ฐกๅ˜ใซใ™ใ‚‹ใƒ„ใƒผใƒซ็พคใงใ™๏ผš

Fedify :fedify:

Fedify๏ผˆ@fedify๏ผ‰ใฏActivityPubใ‚„ใใฎไป–ใฎใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นๆจ™ๆบ–ใ‚’ๆดป็”จใ™ใ‚‹้€ฃๅˆๅž‹ใ‚ตใƒผใƒใƒผใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใ‚’ๆง‹็ฏ‰ใ™ใ‚‹ใŸใ‚ใฎTypeScriptใƒฉใ‚คใƒ–ใƒฉใƒชใงใ™ใ€‚Activity Vocabularyใฎๅž‹ๅฎ‰ๅ…จใชใ‚ชใƒ–ใ‚ธใ‚งใ‚ฏใƒˆใ€WebFingerใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใƒปใ‚ตใƒผใƒใƒผใ€HTTP Signaturesใชใฉใ‚’ๆไพ›ใ—ใ€ใƒœใ‚คใƒฉใƒผใƒ—ใƒฌใƒผใƒˆใ‚ณใƒผใƒ‰ใ‚’ๅ‰Šๆธ›ใ—ใฆใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใƒญใ‚ธใƒƒใ‚ฏใซ้›†ไธญใงใใ‚‹ใ‚ˆใ†ใซใ—ใพใ™ใ€‚

Hollo :hollo:

Hollo๏ผˆ@hollo๏ผ‰ใฏFedifyใงๅ‹•ไฝœใ™ใ‚‹ใŠไธ€ไบบๆง˜็”จใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐใ‚ตใƒผใƒใƒผใงใ™ใ€‚ๅ€‹ไบบๅ‘ใ‘ใซ่จญ่จˆใ•ใ‚Œใฆใ„ใพใ™ใŒใ€ActivityPubใ‚’้€šใ˜ใฆๅฎŒๅ…จใซ้€ฃๅˆๅŒ–ใ•ใ‚ŒใฆใŠใ‚Šใ€ใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นๅ…จไฝ“ใฎใƒฆใƒผใ‚ถใƒผใจไบคๆตใ™ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚HolloใฏMastodonไบ’ๆ›APIใ‚’ๅฎŸ่ฃ…ใ—ใฆใ„ใ‚‹ใŸใ‚ใ€็‹ฌ่‡ชใฎใ‚ฆใ‚งใƒ–ใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚นใŒใชใใฆใ‚‚ใ€ใปใจใ‚“ใฉใฎMastodonใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใจไบ’ๆ›ๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚

HolloใฏใพใŸใ€ๆญฃๅผใƒชใƒชใƒผใ‚นๅ‰ใฎๆœ€ๆ–ฐFedifyๆฉŸ่ƒฝใ‚’ใƒ†ใ‚นใƒˆใ™ใ‚‹ๅฎŸ้จ“ๅ ดใจใ—ใฆใ‚‚ๆดป็”จใ•ใ‚Œใฆใ„ใพใ™ใ€‚

BotKit :botkit:

BotKit๏ผˆ@botkit๏ผ‰ใฏ็งใŸใกใฎๆœ€ใ‚‚ๆ–ฐใ—ใ„ใƒกใƒณใƒใƒผใงใ€ActivityPubใƒœใƒƒใƒˆใ‚’ไฝœๆˆใ™ใ‚‹ใŸใ‚ใซ็‰นๅˆฅใซ่จญ่จˆใ•ใ‚ŒใŸใƒ•ใƒฌใƒผใƒ ใƒฏใƒผใ‚ฏใงใ™ใ€‚ๅพ“ๆฅใฎMastodonใƒœใƒƒใƒˆใจใฏ็•ฐใชใ‚Šใ€BotKitใฏใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ๅ›บๆœ‰ใฎๅˆถ้™๏ผˆๆ–‡ๅญ—ๆ•ฐๅˆถ้™ใชใฉ๏ผ‰ใซ็ธ›ใ‚‰ใ‚Œใชใ„็‹ฌ็ซ‹ใ—ใŸActivityPubใ‚ตใƒผใƒใƒผใ‚’ไฝœๆˆใ—ใพใ™ใ€‚

BotKitใฎAPIใฏๆ„ๅ›ณ็š„ใซใ‚ทใƒณใƒ—ใƒซใซ่จญ่จˆใ•ใ‚ŒใฆใŠใ‚Šใ€ๅ˜ไธ€ใฎTypeScriptใƒ•ใ‚กใ‚คใƒซใงๅฎŒๅ…จใชใƒœใƒƒใƒˆใ‚’ไฝœๆˆใงใใพใ™๏ผ


ใ“ใ‚Œใ‚‰ไธ‰ใคใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใฏใ™ในใฆ@fedify-dev GitHubใ‚ชใƒผใ‚ฌใƒ‹ใ‚ผใƒผใ‚ทใƒงใƒณใงใ‚ชใƒผใƒ—ใƒณใ‚ฝใƒผใ‚นใจใ—ใฆๅ…ฌ้–‹ใ•ใ‚Œใฆใ„ใพใ™ใ€‚ใใ‚Œใžใ‚Œ็•ฐใชใ‚‹็›ฎ็š„ใ‚’ๆŒใฃใฆใ„ใพใ™ใŒใ€ActivityPub้–‹็™บใ‚’ใ‚ˆใ‚Š่บซ่ฟ‘ใซใ—ใ€ใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นใฎใ‚จใ‚ณใ‚ทใ‚นใƒ†ใƒ ใ‚’ๆ‹กๅคงใ™ใ‚‹ใจใ„ใ†ๅ…ฑ้€šใฎ็›ฎๆจ™ใ‚’ๅ…ฑๆœ‰ใ—ใฆใ„ใพใ™ใ€‚

ใ“ใ‚Œใ‚‰ใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‚’่ฉฆใ—ใฆใฟใŸใ‚Šใ€้–‹็™บใซ่ฒข็Œฎใ—ใŸใ‚Šใ™ใ‚‹ใ“ใจใซ่ˆˆๅ‘ณใŒใ‚ใ‚‹ๅ ดๅˆใฏใ€ไปฅไธ‹ใ‚’ใ”่ฆงใใ ใ•ใ„๏ผš

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ใฎ้–ข้€ฃใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‚’ใ”็ดนไป‹ใ—ใŸใ„ใจๆ€ใ„ใพใ™ใ€‚ActivityPubใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณ้–‹็™บใ‚’ใ‚ˆใ‚Š็ฐกๅ˜ใซใ™ใ‚‹ใƒ„ใƒผใƒซ็พคใงใ™๏ผš

Fedify :fedify:

Fedify๏ผˆ@fedify๏ผ‰ใฏActivityPubใ‚„ใใฎไป–ใฎใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นๆจ™ๆบ–ใ‚’ๆดป็”จใ™ใ‚‹้€ฃๅˆๅž‹ใ‚ตใƒผใƒใƒผใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใ‚’ๆง‹็ฏ‰ใ™ใ‚‹ใŸใ‚ใฎTypeScriptใƒฉใ‚คใƒ–ใƒฉใƒชใงใ™ใ€‚Activity Vocabularyใฎๅž‹ๅฎ‰ๅ…จใชใ‚ชใƒ–ใ‚ธใ‚งใ‚ฏใƒˆใ€WebFingerใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใƒปใ‚ตใƒผใƒใƒผใ€HTTP Signaturesใชใฉใ‚’ๆไพ›ใ—ใ€ใƒœใ‚คใƒฉใƒผใƒ—ใƒฌใƒผใƒˆใ‚ณใƒผใƒ‰ใ‚’ๅ‰Šๆธ›ใ—ใฆใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใƒญใ‚ธใƒƒใ‚ฏใซ้›†ไธญใงใใ‚‹ใ‚ˆใ†ใซใ—ใพใ™ใ€‚

Hollo :hollo:

Hollo๏ผˆ@hollo๏ผ‰ใฏFedifyใงๅ‹•ไฝœใ™ใ‚‹ใŠไธ€ไบบๆง˜็”จใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐใ‚ตใƒผใƒใƒผใงใ™ใ€‚ๅ€‹ไบบๅ‘ใ‘ใซ่จญ่จˆใ•ใ‚Œใฆใ„ใพใ™ใŒใ€ActivityPubใ‚’้€šใ˜ใฆๅฎŒๅ…จใซ้€ฃๅˆๅŒ–ใ•ใ‚ŒใฆใŠใ‚Šใ€ใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นๅ…จไฝ“ใฎใƒฆใƒผใ‚ถใƒผใจไบคๆตใ™ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚HolloใฏMastodonไบ’ๆ›APIใ‚’ๅฎŸ่ฃ…ใ—ใฆใ„ใ‚‹ใŸใ‚ใ€็‹ฌ่‡ชใฎใ‚ฆใ‚งใƒ–ใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚นใŒใชใใฆใ‚‚ใ€ใปใจใ‚“ใฉใฎMastodonใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใจไบ’ๆ›ๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚

HolloใฏใพใŸใ€ๆญฃๅผใƒชใƒชใƒผใ‚นๅ‰ใฎๆœ€ๆ–ฐFedifyๆฉŸ่ƒฝใ‚’ใƒ†ใ‚นใƒˆใ™ใ‚‹ๅฎŸ้จ“ๅ ดใจใ—ใฆใ‚‚ๆดป็”จใ•ใ‚Œใฆใ„ใพใ™ใ€‚

BotKit :botkit:

BotKit๏ผˆ@botkit๏ผ‰ใฏ็งใŸใกใฎๆœ€ใ‚‚ๆ–ฐใ—ใ„ใƒกใƒณใƒใƒผใงใ€ActivityPubใƒœใƒƒใƒˆใ‚’ไฝœๆˆใ™ใ‚‹ใŸใ‚ใซ็‰นๅˆฅใซ่จญ่จˆใ•ใ‚ŒใŸใƒ•ใƒฌใƒผใƒ ใƒฏใƒผใ‚ฏใงใ™ใ€‚ๅพ“ๆฅใฎMastodonใƒœใƒƒใƒˆใจใฏ็•ฐใชใ‚Šใ€BotKitใฏใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ๅ›บๆœ‰ใฎๅˆถ้™๏ผˆๆ–‡ๅญ—ๆ•ฐๅˆถ้™ใชใฉ๏ผ‰ใซ็ธ›ใ‚‰ใ‚Œใชใ„็‹ฌ็ซ‹ใ—ใŸActivityPubใ‚ตใƒผใƒใƒผใ‚’ไฝœๆˆใ—ใพใ™ใ€‚

BotKitใฎAPIใฏๆ„ๅ›ณ็š„ใซใ‚ทใƒณใƒ—ใƒซใซ่จญ่จˆใ•ใ‚ŒใฆใŠใ‚Šใ€ๅ˜ไธ€ใฎTypeScriptใƒ•ใ‚กใ‚คใƒซใงๅฎŒๅ…จใชใƒœใƒƒใƒˆใ‚’ไฝœๆˆใงใใพใ™๏ผ


ใ“ใ‚Œใ‚‰ไธ‰ใคใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใฏใ™ในใฆ@fedify-dev GitHubใ‚ชใƒผใ‚ฌใƒ‹ใ‚ผใƒผใ‚ทใƒงใƒณใงใ‚ชใƒผใƒ—ใƒณใ‚ฝใƒผใ‚นใจใ—ใฆๅ…ฌ้–‹ใ•ใ‚Œใฆใ„ใพใ™ใ€‚ใใ‚Œใžใ‚Œ็•ฐใชใ‚‹็›ฎ็š„ใ‚’ๆŒใฃใฆใ„ใพใ™ใŒใ€ActivityPub้–‹็™บใ‚’ใ‚ˆใ‚Š่บซ่ฟ‘ใซใ—ใ€ใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นใฎใ‚จใ‚ณใ‚ทใ‚นใƒ†ใƒ ใ‚’ๆ‹กๅคงใ™ใ‚‹ใจใ„ใ†ๅ…ฑ้€šใฎ็›ฎๆจ™ใ‚’ๅ…ฑๆœ‰ใ—ใฆใ„ใพใ™ใ€‚

ใ“ใ‚Œใ‚‰ใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‚’่ฉฆใ—ใฆใฟใŸใ‚Šใ€้–‹็™บใซ่ฒข็Œฎใ—ใŸใ‚Šใ™ใ‚‹ใ“ใจใซ่ˆˆๅ‘ณใŒใ‚ใ‚‹ๅ ดๅˆใฏใ€ไปฅไธ‹ใ‚’ใ”่ฆงใใ ใ•ใ„๏ผš

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ใฎ้–ข้€ฃใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‚’ใ”็ดนไป‹ใ—ใŸใ„ใจๆ€ใ„ใพใ™ใ€‚ActivityPubใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณ้–‹็™บใ‚’ใ‚ˆใ‚Š็ฐกๅ˜ใซใ™ใ‚‹ใƒ„ใƒผใƒซ็พคใงใ™๏ผš

Fedify :fedify:

Fedify๏ผˆ@fedify๏ผ‰ใฏActivityPubใ‚„ใใฎไป–ใฎใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นๆจ™ๆบ–ใ‚’ๆดป็”จใ™ใ‚‹้€ฃๅˆๅž‹ใ‚ตใƒผใƒใƒผใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใ‚’ๆง‹็ฏ‰ใ™ใ‚‹ใŸใ‚ใฎTypeScriptใƒฉใ‚คใƒ–ใƒฉใƒชใงใ™ใ€‚Activity Vocabularyใฎๅž‹ๅฎ‰ๅ…จใชใ‚ชใƒ–ใ‚ธใ‚งใ‚ฏใƒˆใ€WebFingerใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใƒปใ‚ตใƒผใƒใƒผใ€HTTP Signaturesใชใฉใ‚’ๆไพ›ใ—ใ€ใƒœใ‚คใƒฉใƒผใƒ—ใƒฌใƒผใƒˆใ‚ณใƒผใƒ‰ใ‚’ๅ‰Šๆธ›ใ—ใฆใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใƒญใ‚ธใƒƒใ‚ฏใซ้›†ไธญใงใใ‚‹ใ‚ˆใ†ใซใ—ใพใ™ใ€‚

Hollo :hollo:

Hollo๏ผˆ@hollo๏ผ‰ใฏFedifyใงๅ‹•ไฝœใ™ใ‚‹ใŠไธ€ไบบๆง˜็”จใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐใ‚ตใƒผใƒใƒผใงใ™ใ€‚ๅ€‹ไบบๅ‘ใ‘ใซ่จญ่จˆใ•ใ‚Œใฆใ„ใพใ™ใŒใ€ActivityPubใ‚’้€šใ˜ใฆๅฎŒๅ…จใซ้€ฃๅˆๅŒ–ใ•ใ‚ŒใฆใŠใ‚Šใ€ใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นๅ…จไฝ“ใฎใƒฆใƒผใ‚ถใƒผใจไบคๆตใ™ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚HolloใฏMastodonไบ’ๆ›APIใ‚’ๅฎŸ่ฃ…ใ—ใฆใ„ใ‚‹ใŸใ‚ใ€็‹ฌ่‡ชใฎใ‚ฆใ‚งใƒ–ใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚นใŒใชใใฆใ‚‚ใ€ใปใจใ‚“ใฉใฎMastodonใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใจไบ’ๆ›ๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚

HolloใฏใพใŸใ€ๆญฃๅผใƒชใƒชใƒผใ‚นๅ‰ใฎๆœ€ๆ–ฐFedifyๆฉŸ่ƒฝใ‚’ใƒ†ใ‚นใƒˆใ™ใ‚‹ๅฎŸ้จ“ๅ ดใจใ—ใฆใ‚‚ๆดป็”จใ•ใ‚Œใฆใ„ใพใ™ใ€‚

BotKit :botkit:

BotKit๏ผˆ@botkit๏ผ‰ใฏ็งใŸใกใฎๆœ€ใ‚‚ๆ–ฐใ—ใ„ใƒกใƒณใƒใƒผใงใ€ActivityPubใƒœใƒƒใƒˆใ‚’ไฝœๆˆใ™ใ‚‹ใŸใ‚ใซ็‰นๅˆฅใซ่จญ่จˆใ•ใ‚ŒใŸใƒ•ใƒฌใƒผใƒ ใƒฏใƒผใ‚ฏใงใ™ใ€‚ๅพ“ๆฅใฎMastodonใƒœใƒƒใƒˆใจใฏ็•ฐใชใ‚Šใ€BotKitใฏใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ๅ›บๆœ‰ใฎๅˆถ้™๏ผˆๆ–‡ๅญ—ๆ•ฐๅˆถ้™ใชใฉ๏ผ‰ใซ็ธ›ใ‚‰ใ‚Œใชใ„็‹ฌ็ซ‹ใ—ใŸActivityPubใ‚ตใƒผใƒใƒผใ‚’ไฝœๆˆใ—ใพใ™ใ€‚

BotKitใฎAPIใฏๆ„ๅ›ณ็š„ใซใ‚ทใƒณใƒ—ใƒซใซ่จญ่จˆใ•ใ‚ŒใฆใŠใ‚Šใ€ๅ˜ไธ€ใฎTypeScriptใƒ•ใ‚กใ‚คใƒซใงๅฎŒๅ…จใชใƒœใƒƒใƒˆใ‚’ไฝœๆˆใงใใพใ™๏ผ


ใ“ใ‚Œใ‚‰ไธ‰ใคใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใฏใ™ในใฆ@fedify-dev GitHubใ‚ชใƒผใ‚ฌใƒ‹ใ‚ผใƒผใ‚ทใƒงใƒณใงใ‚ชใƒผใƒ—ใƒณใ‚ฝใƒผใ‚นใจใ—ใฆๅ…ฌ้–‹ใ•ใ‚Œใฆใ„ใพใ™ใ€‚ใใ‚Œใžใ‚Œ็•ฐใชใ‚‹็›ฎ็š„ใ‚’ๆŒใฃใฆใ„ใพใ™ใŒใ€ActivityPub้–‹็™บใ‚’ใ‚ˆใ‚Š่บซ่ฟ‘ใซใ—ใ€ใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นใฎใ‚จใ‚ณใ‚ทใ‚นใƒ†ใƒ ใ‚’ๆ‹กๅคงใ™ใ‚‹ใจใ„ใ†ๅ…ฑ้€šใฎ็›ฎๆจ™ใ‚’ๅ…ฑๆœ‰ใ—ใฆใ„ใพใ™ใ€‚

ใ“ใ‚Œใ‚‰ใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‚’่ฉฆใ—ใฆใฟใŸใ‚Šใ€้–‹็™บใซ่ฒข็Œฎใ—ใŸใ‚Šใ™ใ‚‹ใ“ใจใซ่ˆˆๅ‘ณใŒใ‚ใ‚‹ๅ ดๅˆใฏใ€ไปฅไธ‹ใ‚’ใ”่ฆงใใ ใ•ใ„๏ผš

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ใฎ้–ข้€ฃใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‚’ใ”็ดนไป‹ใ—ใŸใ„ใจๆ€ใ„ใพใ™ใ€‚ActivityPubใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณ้–‹็™บใ‚’ใ‚ˆใ‚Š็ฐกๅ˜ใซใ™ใ‚‹ใƒ„ใƒผใƒซ็พคใงใ™๏ผš

Fedify :fedify:

Fedify๏ผˆ@fedify๏ผ‰ใฏActivityPubใ‚„ใใฎไป–ใฎใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นๆจ™ๆบ–ใ‚’ๆดป็”จใ™ใ‚‹้€ฃๅˆๅž‹ใ‚ตใƒผใƒใƒผใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใ‚’ๆง‹็ฏ‰ใ™ใ‚‹ใŸใ‚ใฎTypeScriptใƒฉใ‚คใƒ–ใƒฉใƒชใงใ™ใ€‚Activity Vocabularyใฎๅž‹ๅฎ‰ๅ…จใชใ‚ชใƒ–ใ‚ธใ‚งใ‚ฏใƒˆใ€WebFingerใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใƒปใ‚ตใƒผใƒใƒผใ€HTTP Signaturesใชใฉใ‚’ๆไพ›ใ—ใ€ใƒœใ‚คใƒฉใƒผใƒ—ใƒฌใƒผใƒˆใ‚ณใƒผใƒ‰ใ‚’ๅ‰Šๆธ›ใ—ใฆใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใƒญใ‚ธใƒƒใ‚ฏใซ้›†ไธญใงใใ‚‹ใ‚ˆใ†ใซใ—ใพใ™ใ€‚

Hollo :hollo:

Hollo๏ผˆ@hollo๏ผ‰ใฏFedifyใงๅ‹•ไฝœใ™ใ‚‹ใŠไธ€ไบบๆง˜็”จใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐใ‚ตใƒผใƒใƒผใงใ™ใ€‚ๅ€‹ไบบๅ‘ใ‘ใซ่จญ่จˆใ•ใ‚Œใฆใ„ใพใ™ใŒใ€ActivityPubใ‚’้€šใ˜ใฆๅฎŒๅ…จใซ้€ฃๅˆๅŒ–ใ•ใ‚ŒใฆใŠใ‚Šใ€ใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นๅ…จไฝ“ใฎใƒฆใƒผใ‚ถใƒผใจไบคๆตใ™ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚HolloใฏMastodonไบ’ๆ›APIใ‚’ๅฎŸ่ฃ…ใ—ใฆใ„ใ‚‹ใŸใ‚ใ€็‹ฌ่‡ชใฎใ‚ฆใ‚งใƒ–ใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚นใŒใชใใฆใ‚‚ใ€ใปใจใ‚“ใฉใฎMastodonใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใจไบ’ๆ›ๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚

HolloใฏใพใŸใ€ๆญฃๅผใƒชใƒชใƒผใ‚นๅ‰ใฎๆœ€ๆ–ฐFedifyๆฉŸ่ƒฝใ‚’ใƒ†ใ‚นใƒˆใ™ใ‚‹ๅฎŸ้จ“ๅ ดใจใ—ใฆใ‚‚ๆดป็”จใ•ใ‚Œใฆใ„ใพใ™ใ€‚

BotKit :botkit:

BotKit๏ผˆ@botkit๏ผ‰ใฏ็งใŸใกใฎๆœ€ใ‚‚ๆ–ฐใ—ใ„ใƒกใƒณใƒใƒผใงใ€ActivityPubใƒœใƒƒใƒˆใ‚’ไฝœๆˆใ™ใ‚‹ใŸใ‚ใซ็‰นๅˆฅใซ่จญ่จˆใ•ใ‚ŒใŸใƒ•ใƒฌใƒผใƒ ใƒฏใƒผใ‚ฏใงใ™ใ€‚ๅพ“ๆฅใฎMastodonใƒœใƒƒใƒˆใจใฏ็•ฐใชใ‚Šใ€BotKitใฏใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ๅ›บๆœ‰ใฎๅˆถ้™๏ผˆๆ–‡ๅญ—ๆ•ฐๅˆถ้™ใชใฉ๏ผ‰ใซ็ธ›ใ‚‰ใ‚Œใชใ„็‹ฌ็ซ‹ใ—ใŸActivityPubใ‚ตใƒผใƒใƒผใ‚’ไฝœๆˆใ—ใพใ™ใ€‚

BotKitใฎAPIใฏๆ„ๅ›ณ็š„ใซใ‚ทใƒณใƒ—ใƒซใซ่จญ่จˆใ•ใ‚ŒใฆใŠใ‚Šใ€ๅ˜ไธ€ใฎTypeScriptใƒ•ใ‚กใ‚คใƒซใงๅฎŒๅ…จใชใƒœใƒƒใƒˆใ‚’ไฝœๆˆใงใใพใ™๏ผ


ใ“ใ‚Œใ‚‰ไธ‰ใคใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใฏใ™ในใฆ@fedify-dev GitHubใ‚ชใƒผใ‚ฌใƒ‹ใ‚ผใƒผใ‚ทใƒงใƒณใงใ‚ชใƒผใƒ—ใƒณใ‚ฝใƒผใ‚นใจใ—ใฆๅ…ฌ้–‹ใ•ใ‚Œใฆใ„ใพใ™ใ€‚ใใ‚Œใžใ‚Œ็•ฐใชใ‚‹็›ฎ็š„ใ‚’ๆŒใฃใฆใ„ใพใ™ใŒใ€ActivityPub้–‹็™บใ‚’ใ‚ˆใ‚Š่บซ่ฟ‘ใซใ—ใ€ใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นใฎใ‚จใ‚ณใ‚ทใ‚นใƒ†ใƒ ใ‚’ๆ‹กๅคงใ™ใ‚‹ใจใ„ใ†ๅ…ฑ้€šใฎ็›ฎๆจ™ใ‚’ๅ…ฑๆœ‰ใ—ใฆใ„ใพใ™ใ€‚

ใ“ใ‚Œใ‚‰ใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‚’่ฉฆใ—ใฆใฟใŸใ‚Šใ€้–‹็™บใซ่ฒข็Œฎใ—ใŸใ‚Šใ™ใ‚‹ใ“ใจใซ่ˆˆๅ‘ณใŒใ‚ใ‚‹ๅ ดๅˆใฏใ€ไปฅไธ‹ใ‚’ใ”่ฆงใใ ใ•ใ„๏ผš

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(@fedify)๋Š” ActivityPub์™€ ๋‹ค๋ฅธ () ํ‘œ์ค€์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์—ฐํ•ฉ ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. Activity Vocabulary๋ฅผ ์œ„ํ•œ ํƒ€์ž… ์•ˆ์ „ํ•œ ๊ฐ์ฒด, WebFinger ํด๋ผ์ด์–ธํŠธ·์„œ๋ฒ„, HTTP Signatures ๋“ฑ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋ฐ˜๋ณต์ ์ธ ์ฝ”๋“œ๋ฅผ ์ค„์ด๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

Hollo :hollo:

Hollo(@hollo)๋Š” Fedify๋กœ ๊ตฌ๋™๋˜๋Š” 1์ธ ์‚ฌ์šฉ์ž์šฉ ๋งˆ์ดํฌ๋กœ๋ธ”๋กœ๊น… ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค. 1์ธ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์ง€๋งŒ, ActivityPub๋ฅผ ํ†ตํ•ด ์™„์ „ํžˆ ์—ฐํ•ฉ๋˜์–ด ์—ฐํ•ฉ์šฐ์ฃผ ์ „์ฒด์˜ ์‚ฌ์šฉ์ž๋“ค๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Hollo๋Š” Mastodon ํ˜ธํ™˜ API๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ์ž์ฒด ์›น ์ธํ„ฐํŽ˜์ด์Šค ์—†์ด๋„ ๋Œ€๋ถ€๋ถ„์˜ Mastodon ํด๋ผ์ด์–ธํŠธ์™€ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค.

Hollo๋Š” ๋˜ํ•œ ์ •์‹ ์ถœ์‹œ ์ „์— ์ตœ์‹  Fedify ๊ธฐ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ์‹คํ—˜์žฅ์œผ๋กœ๋„ ํ™œ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

BotKit :botkit:

BotKit(@botkit)์€ ์ €ํฌ์˜ ๊ฐ€์žฅ ์ƒˆ๋กœ์šด ๊ตฌ์„ฑ์›์œผ๋กœ, ActivityPub ๋ด‡์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํŠน๋ณ„ํžˆ ์„ค๊ณ„๋œ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ „ํ†ต์ ์ธ Mastodon ๋ด‡๊ณผ ๋‹ฌ๋ฆฌ, BotKit์€ ํ”Œ๋žซํผ๋ณ„ ์ œํ•œ(๊ธ€์ž ์ˆ˜ ์ œํ•œ ๋“ฑ)์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๋Š” ๋…๋ฆฝ์ ์ธ ActivityPub ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

BotKit์˜ API๋Š” ์˜๋„์ ์œผ๋กœ ๋‹จ์ˆœํ•˜๊ฒŒ ์„ค๊ณ„๋˜์–ด ๋‹จ์ผ TypeScript ํŒŒ์ผ๋กœ ์™„์ „ํ•œ ๋ด‡์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!


์„ธ ํ”„๋กœ์ ํŠธ ๋ชจ๋‘ @fedify-dev GitHub ์กฐ์ง์—์„œ ์˜คํ”ˆ ์†Œ์Šค๋กœ ๊ณต๊ฐœ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๋ชฉ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ, ActivityPub ๊ฐœ๋ฐœ์„ ๋” ์ ‘๊ทผํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ณ  ์—ฐํ•ฉ์šฐ์ฃผ ์ƒํƒœ๊ณ„๋ฅผ ํ™•์žฅํ•œ๋‹ค๋Š” ๊ณตํ†ต๋œ ๋ชฉํ‘œ๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๊ฑฐ๋‚˜ ๊ฐœ๋ฐœ์— ๊ธฐ์—ฌํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์œผ์‹œ๋‹ค๋ฉด, ๋‹ค์Œ์„ ํ™•์ธํ•ด๋ณด์„ธ์š”:

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

@fedify@hollo.social

We'd like to introduce the project familyโ€”a set of related tools that make building applications more accessible:

Fedify :fedify:

Fedify (@fedify) is a library for building federated server applications powered by ActivityPub and other 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:

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. 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:

BotKit (@botkit) is our newest family memberโ€”a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, 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: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

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

Fedifyใฎ้–ข้€ฃใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‚’ใ”็ดนไป‹ใ—ใŸใ„ใจๆ€ใ„ใพใ™ใ€‚ActivityPubใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณ้–‹็™บใ‚’ใ‚ˆใ‚Š็ฐกๅ˜ใซใ™ใ‚‹ใƒ„ใƒผใƒซ็พคใงใ™๏ผš

Fedify :fedify:

Fedify๏ผˆ@fedify๏ผ‰ใฏActivityPubใ‚„ใใฎไป–ใฎใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นๆจ™ๆบ–ใ‚’ๆดป็”จใ™ใ‚‹้€ฃๅˆๅž‹ใ‚ตใƒผใƒใƒผใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใ‚’ๆง‹็ฏ‰ใ™ใ‚‹ใŸใ‚ใฎTypeScriptใƒฉใ‚คใƒ–ใƒฉใƒชใงใ™ใ€‚Activity Vocabularyใฎๅž‹ๅฎ‰ๅ…จใชใ‚ชใƒ–ใ‚ธใ‚งใ‚ฏใƒˆใ€WebFingerใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใƒปใ‚ตใƒผใƒใƒผใ€HTTP Signaturesใชใฉใ‚’ๆไพ›ใ—ใ€ใƒœใ‚คใƒฉใƒผใƒ—ใƒฌใƒผใƒˆใ‚ณใƒผใƒ‰ใ‚’ๅ‰Šๆธ›ใ—ใฆใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใƒญใ‚ธใƒƒใ‚ฏใซ้›†ไธญใงใใ‚‹ใ‚ˆใ†ใซใ—ใพใ™ใ€‚

Hollo :hollo:

Hollo๏ผˆ@hollo๏ผ‰ใฏFedifyใงๅ‹•ไฝœใ™ใ‚‹ใŠไธ€ไบบๆง˜็”จใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐใ‚ตใƒผใƒใƒผใงใ™ใ€‚ๅ€‹ไบบๅ‘ใ‘ใซ่จญ่จˆใ•ใ‚Œใฆใ„ใพใ™ใŒใ€ActivityPubใ‚’้€šใ˜ใฆๅฎŒๅ…จใซ้€ฃๅˆๅŒ–ใ•ใ‚ŒใฆใŠใ‚Šใ€ใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นๅ…จไฝ“ใฎใƒฆใƒผใ‚ถใƒผใจไบคๆตใ™ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚HolloใฏMastodonไบ’ๆ›APIใ‚’ๅฎŸ่ฃ…ใ—ใฆใ„ใ‚‹ใŸใ‚ใ€็‹ฌ่‡ชใฎใ‚ฆใ‚งใƒ–ใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚นใŒใชใใฆใ‚‚ใ€ใปใจใ‚“ใฉใฎMastodonใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใจไบ’ๆ›ๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚

HolloใฏใพใŸใ€ๆญฃๅผใƒชใƒชใƒผใ‚นๅ‰ใฎๆœ€ๆ–ฐFedifyๆฉŸ่ƒฝใ‚’ใƒ†ใ‚นใƒˆใ™ใ‚‹ๅฎŸ้จ“ๅ ดใจใ—ใฆใ‚‚ๆดป็”จใ•ใ‚Œใฆใ„ใพใ™ใ€‚

BotKit :botkit:

BotKit๏ผˆ@botkit๏ผ‰ใฏ็งใŸใกใฎๆœ€ใ‚‚ๆ–ฐใ—ใ„ใƒกใƒณใƒใƒผใงใ€ActivityPubใƒœใƒƒใƒˆใ‚’ไฝœๆˆใ™ใ‚‹ใŸใ‚ใซ็‰นๅˆฅใซ่จญ่จˆใ•ใ‚ŒใŸใƒ•ใƒฌใƒผใƒ ใƒฏใƒผใ‚ฏใงใ™ใ€‚ๅพ“ๆฅใฎMastodonใƒœใƒƒใƒˆใจใฏ็•ฐใชใ‚Šใ€BotKitใฏใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ๅ›บๆœ‰ใฎๅˆถ้™๏ผˆๆ–‡ๅญ—ๆ•ฐๅˆถ้™ใชใฉ๏ผ‰ใซ็ธ›ใ‚‰ใ‚Œใชใ„็‹ฌ็ซ‹ใ—ใŸActivityPubใ‚ตใƒผใƒใƒผใ‚’ไฝœๆˆใ—ใพใ™ใ€‚

BotKitใฎAPIใฏๆ„ๅ›ณ็š„ใซใ‚ทใƒณใƒ—ใƒซใซ่จญ่จˆใ•ใ‚ŒใฆใŠใ‚Šใ€ๅ˜ไธ€ใฎTypeScriptใƒ•ใ‚กใ‚คใƒซใงๅฎŒๅ…จใชใƒœใƒƒใƒˆใ‚’ไฝœๆˆใงใใพใ™๏ผ


ใ“ใ‚Œใ‚‰ไธ‰ใคใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใฏใ™ในใฆ@fedify-dev GitHubใ‚ชใƒผใ‚ฌใƒ‹ใ‚ผใƒผใ‚ทใƒงใƒณใงใ‚ชใƒผใƒ—ใƒณใ‚ฝใƒผใ‚นใจใ—ใฆๅ…ฌ้–‹ใ•ใ‚Œใฆใ„ใพใ™ใ€‚ใใ‚Œใžใ‚Œ็•ฐใชใ‚‹็›ฎ็š„ใ‚’ๆŒใฃใฆใ„ใพใ™ใŒใ€ActivityPub้–‹็™บใ‚’ใ‚ˆใ‚Š่บซ่ฟ‘ใซใ—ใ€ใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นใฎใ‚จใ‚ณใ‚ทใ‚นใƒ†ใƒ ใ‚’ๆ‹กๅคงใ™ใ‚‹ใจใ„ใ†ๅ…ฑ้€šใฎ็›ฎๆจ™ใ‚’ๅ…ฑๆœ‰ใ—ใฆใ„ใพใ™ใ€‚

ใ“ใ‚Œใ‚‰ใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‚’่ฉฆใ—ใฆใฟใŸใ‚Šใ€้–‹็™บใซ่ฒข็Œฎใ—ใŸใ‚Šใ™ใ‚‹ใ“ใจใซ่ˆˆๅ‘ณใŒใ‚ใ‚‹ๅ ดๅˆใฏใ€ไปฅไธ‹ใ‚’ใ”่ฆงใใ ใ•ใ„๏ผš

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(@fedify)๋Š” ActivityPub์™€ ๋‹ค๋ฅธ () ํ‘œ์ค€์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์—ฐํ•ฉ ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. Activity Vocabulary๋ฅผ ์œ„ํ•œ ํƒ€์ž… ์•ˆ์ „ํ•œ ๊ฐ์ฒด, WebFinger ํด๋ผ์ด์–ธํŠธ·์„œ๋ฒ„, HTTP Signatures ๋“ฑ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋ฐ˜๋ณต์ ์ธ ์ฝ”๋“œ๋ฅผ ์ค„์ด๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

Hollo :hollo:

Hollo(@hollo)๋Š” Fedify๋กœ ๊ตฌ๋™๋˜๋Š” 1์ธ ์‚ฌ์šฉ์ž์šฉ ๋งˆ์ดํฌ๋กœ๋ธ”๋กœ๊น… ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค. 1์ธ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์ง€๋งŒ, ActivityPub๋ฅผ ํ†ตํ•ด ์™„์ „ํžˆ ์—ฐํ•ฉ๋˜์–ด ์—ฐํ•ฉ์šฐ์ฃผ ์ „์ฒด์˜ ์‚ฌ์šฉ์ž๋“ค๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Hollo๋Š” Mastodon ํ˜ธํ™˜ API๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ์ž์ฒด ์›น ์ธํ„ฐํŽ˜์ด์Šค ์—†์ด๋„ ๋Œ€๋ถ€๋ถ„์˜ Mastodon ํด๋ผ์ด์–ธํŠธ์™€ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค.

Hollo๋Š” ๋˜ํ•œ ์ •์‹ ์ถœ์‹œ ์ „์— ์ตœ์‹  Fedify ๊ธฐ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ์‹คํ—˜์žฅ์œผ๋กœ๋„ ํ™œ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

BotKit :botkit:

BotKit(@botkit)์€ ์ €ํฌ์˜ ๊ฐ€์žฅ ์ƒˆ๋กœ์šด ๊ตฌ์„ฑ์›์œผ๋กœ, ActivityPub ๋ด‡์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํŠน๋ณ„ํžˆ ์„ค๊ณ„๋œ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ „ํ†ต์ ์ธ Mastodon ๋ด‡๊ณผ ๋‹ฌ๋ฆฌ, BotKit์€ ํ”Œ๋žซํผ๋ณ„ ์ œํ•œ(๊ธ€์ž ์ˆ˜ ์ œํ•œ ๋“ฑ)์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๋Š” ๋…๋ฆฝ์ ์ธ ActivityPub ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

BotKit์˜ API๋Š” ์˜๋„์ ์œผ๋กœ ๋‹จ์ˆœํ•˜๊ฒŒ ์„ค๊ณ„๋˜์–ด ๋‹จ์ผ TypeScript ํŒŒ์ผ๋กœ ์™„์ „ํ•œ ๋ด‡์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!


์„ธ ํ”„๋กœ์ ํŠธ ๋ชจ๋‘ @fedify-dev GitHub ์กฐ์ง์—์„œ ์˜คํ”ˆ ์†Œ์Šค๋กœ ๊ณต๊ฐœ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๋ชฉ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ, ActivityPub ๊ฐœ๋ฐœ์„ ๋” ์ ‘๊ทผํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ณ  ์—ฐํ•ฉ์šฐ์ฃผ ์ƒํƒœ๊ณ„๋ฅผ ํ™•์žฅํ•œ๋‹ค๋Š” ๊ณตํ†ต๋œ ๋ชฉํ‘œ๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๊ฑฐ๋‚˜ ๊ฐœ๋ฐœ์— ๊ธฐ์—ฌํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์œผ์‹œ๋‹ค๋ฉด, ๋‹ค์Œ์„ ํ™•์ธํ•ด๋ณด์„ธ์š”:

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

@fedify@hollo.social

We'd like to introduce the project familyโ€”a set of related tools that make building applications more accessible:

Fedify :fedify:

Fedify (@fedify) is a library for building federated server applications powered by ActivityPub and other 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:

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. 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:

BotKit (@botkit) is our newest family memberโ€”a framework specifically designed for creating ActivityPub bots. Unlike traditional Mastodon bots, 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:

Chris Trottier's avatar
Chris Trottier

@atomicpoet@atomicpoet.org

Two new features are coming to #Fedify! Both have to do with controls over domain names:

  1. Different domains for WebFinger handles and server URIs.
  2. Canonical origin support to explicitly set your serverโ€™s authoritative domain

https://hollo.social/@fedify/01953693-1afd-7430-988a-23d649099e1c

@fediversenews

Chris Trottier's avatar
Chris Trottier

@atomicpoet@atomicpoet.org

Two new features are coming to #Fedify! Both have to do with controls over domain names:

  1. Different domains for WebFinger handles and server URIs.
  2. Canonical origin support to explicitly set your serverโ€™s authoritative domain

https://hollo.social/@fedify/01953693-1afd-7430-988a-23d649099e1c

@fediversenews

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

Yes, we probably should have had this soonerโ€ฆ but hey, proper domain handling is coming to 1.5.0!

https://hollo.social/@fedify/01953693-1afd-7430-988a-23d649099e1c

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

@fedify@hollo.social

We're excited to announce two major features coming in 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.

Canonical Origin Support

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!

Separating WebFinger host from the server origin

This API is available since Fedify 1.5.0.

Sometimes you may want to use different domain names for WebFinger handles (i.e., fediverse handles) and the server origin. For example, you may want to use https://ap.example.com/actors/alice as an actor URI but want to use @alice@example.com as its fediverse handle.

In such cases, you can set the handleHost different from the webOrigin in the origin option. The handleHost is used to construct the WebFinger handles, and the webOrigin is used to construct the URLs in the Context object:

const federation = createFederation({
  origin: {
    handleHost: "example.com",
    webOrigin: "https://ap.example.com",
  },
});

NOTE

Even if you set the handleHost different from the webOrigin, the other fediverse handle with the same domain name as the webOrigin will still be recognized.

In the above example, two fediverse handles are recognized as the same:

โ€ข @alice@example.com
โ€ข @alice@ap.example.com
ALT text detailsSeparating WebFinger host from the server origin This API is available since Fedify 1.5.0. Sometimes you may want to use different domain names for WebFinger handles (i.e., fediverse handles) and the server origin. For example, you may want to use https://ap.example.com/actors/alice as an actor URI but want to use @alice@example.com as its fediverse handle. In such cases, you can set the handleHost different from the webOrigin in the origin option. The handleHost is used to construct the WebFinger handles, and the webOrigin is used to construct the URLs in the Context object: const federation = createFederation({ origin: { handleHost: "example.com", webOrigin: "https://ap.example.com", }, }); NOTE Even if you set the handleHost different from the webOrigin, the other fediverse handle with the same domain name as the webOrigin will still be recognized. In the above example, two fediverse handles are recognized as the same: โ€ข @alice@example.com โ€ข @alice@ap.example.com
Explicitly setting the canonical origin

This API is available since Fedify 1.5.0.

Or you can explicitly set the canonical origin of the server by passing the origin option to the createFederation() function. The origin option is either a string or a FederationOrigin object, which consists of two fields: handleHost and webOrigin.

For example, if you want to set the canonical origin to https://example.com, you can pass the string:

const federation = createFederation({
  origin: "https://example.com",
});

NOTE

The origin option has to include the leading https:// or http:// scheme.

Such a configuration leads the constructed URLs using Context to use the canonical origin instead of the origin from the incoming HTTP requests, which avoids constructing unexpected URLs when a request bypasses a reverse proxy or a load balancer.

CAUTION

For example, suppose that your federated server (upstream) is accessible at the http://1.2.3.4:8000 and your load balancer (downstream) is accessible at the https://example.com and forwards the requests to the upstream server. In this case, you should set the canonical origin to https://example.com to construct the correct URLs. Otherwise, when some malicious actor directly sends a request to the upstream server, the constructed URLs will start with http://1.2.3.4:8000 instead of https://example.com, which can lead to security issues.
ALT text detailsExplicitly setting the canonical origin This API is available since Fedify 1.5.0. Or you can explicitly set the canonical origin of the server by passing the origin option to the createFederation() function. The origin option is either a string or a FederationOrigin object, which consists of two fields: handleHost and webOrigin. For example, if you want to set the canonical origin to https://example.com, you can pass the string: const federation = createFederation({ origin: "https://example.com", }); NOTE The origin option has to include the leading https:// or http:// scheme. Such a configuration leads the constructed URLs using Context to use the canonical origin instead of the origin from the incoming HTTP requests, which avoids constructing unexpected URLs when a request bypasses a reverse proxy or a load balancer. CAUTION For example, suppose that your federated server (upstream) is accessible at the http://1.2.3.4:8000 and your load balancer (downstream) is accessible at the https://example.com and forwards the requests to the upstream server. In this case, you should set the canonical origin to https://example.com to construct the correct URLs. Otherwise, when some malicious actor directly sends a request to the upstream server, the constructed URLs will start with http://1.2.3.4:8000 instead of https://example.com, which can lead to security issues.
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We're excited to announce two major features coming in 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.

Canonical Origin Support

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!

Separating WebFinger host from the server origin

This API is available since Fedify 1.5.0.

Sometimes you may want to use different domain names for WebFinger handles (i.e., fediverse handles) and the server origin. For example, you may want to use https://ap.example.com/actors/alice as an actor URI but want to use @alice@example.com as its fediverse handle.

In such cases, you can set the handleHost different from the webOrigin in the origin option. The handleHost is used to construct the WebFinger handles, and the webOrigin is used to construct the URLs in the Context object:

const federation = createFederation({
  origin: {
    handleHost: "example.com",
    webOrigin: "https://ap.example.com",
  },
});

NOTE

Even if you set the handleHost different from the webOrigin, the other fediverse handle with the same domain name as the webOrigin will still be recognized.

In the above example, two fediverse handles are recognized as the same:

โ€ข @alice@example.com
โ€ข @alice@ap.example.com
ALT text detailsSeparating WebFinger host from the server origin This API is available since Fedify 1.5.0. Sometimes you may want to use different domain names for WebFinger handles (i.e., fediverse handles) and the server origin. For example, you may want to use https://ap.example.com/actors/alice as an actor URI but want to use @alice@example.com as its fediverse handle. In such cases, you can set the handleHost different from the webOrigin in the origin option. The handleHost is used to construct the WebFinger handles, and the webOrigin is used to construct the URLs in the Context object: const federation = createFederation({ origin: { handleHost: "example.com", webOrigin: "https://ap.example.com", }, }); NOTE Even if you set the handleHost different from the webOrigin, the other fediverse handle with the same domain name as the webOrigin will still be recognized. In the above example, two fediverse handles are recognized as the same: โ€ข @alice@example.com โ€ข @alice@ap.example.com
Explicitly setting the canonical origin

This API is available since Fedify 1.5.0.

Or you can explicitly set the canonical origin of the server by passing the origin option to the createFederation() function. The origin option is either a string or a FederationOrigin object, which consists of two fields: handleHost and webOrigin.

For example, if you want to set the canonical origin to https://example.com, you can pass the string:

const federation = createFederation({
  origin: "https://example.com",
});

NOTE

The origin option has to include the leading https:// or http:// scheme.

Such a configuration leads the constructed URLs using Context to use the canonical origin instead of the origin from the incoming HTTP requests, which avoids constructing unexpected URLs when a request bypasses a reverse proxy or a load balancer.

CAUTION

For example, suppose that your federated server (upstream) is accessible at the http://1.2.3.4:8000 and your load balancer (downstream) is accessible at the https://example.com and forwards the requests to the upstream server. In this case, you should set the canonical origin to https://example.com to construct the correct URLs. Otherwise, when some malicious actor directly sends a request to the upstream server, the constructed URLs will start with http://1.2.3.4:8000 instead of https://example.com, which can lead to security issues.
ALT text detailsExplicitly setting the canonical origin This API is available since Fedify 1.5.0. Or you can explicitly set the canonical origin of the server by passing the origin option to the createFederation() function. The origin option is either a string or a FederationOrigin object, which consists of two fields: handleHost and webOrigin. For example, if you want to set the canonical origin to https://example.com, you can pass the string: const federation = createFederation({ origin: "https://example.com", }); NOTE The origin option has to include the leading https:// or http:// scheme. Such a configuration leads the constructed URLs using Context to use the canonical origin instead of the origin from the incoming HTTP requests, which avoids constructing unexpected URLs when a request bypasses a reverse proxy or a load balancer. CAUTION For example, suppose that your federated server (upstream) is accessible at the http://1.2.3.4:8000 and your load balancer (downstream) is accessible at the https://example.com and forwards the requests to the upstream server. In this case, you should set the canonical origin to https://example.com to construct the correct URLs. Otherwise, when some malicious actor directly sends a request to the upstream server, the constructed URLs will start with http://1.2.3.4:8000 instead of https://example.com, which can lead to security issues.
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We're excited to announce two major features coming in 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.

Canonical Origin Support

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!

Separating WebFinger host from the server origin

This API is available since Fedify 1.5.0.

Sometimes you may want to use different domain names for WebFinger handles (i.e., fediverse handles) and the server origin. For example, you may want to use https://ap.example.com/actors/alice as an actor URI but want to use @alice@example.com as its fediverse handle.

In such cases, you can set the handleHost different from the webOrigin in the origin option. The handleHost is used to construct the WebFinger handles, and the webOrigin is used to construct the URLs in the Context object:

const federation = createFederation({
  origin: {
    handleHost: "example.com",
    webOrigin: "https://ap.example.com",
  },
});

NOTE

Even if you set the handleHost different from the webOrigin, the other fediverse handle with the same domain name as the webOrigin will still be recognized.

In the above example, two fediverse handles are recognized as the same:

โ€ข @alice@example.com
โ€ข @alice@ap.example.com
ALT text detailsSeparating WebFinger host from the server origin This API is available since Fedify 1.5.0. Sometimes you may want to use different domain names for WebFinger handles (i.e., fediverse handles) and the server origin. For example, you may want to use https://ap.example.com/actors/alice as an actor URI but want to use @alice@example.com as its fediverse handle. In such cases, you can set the handleHost different from the webOrigin in the origin option. The handleHost is used to construct the WebFinger handles, and the webOrigin is used to construct the URLs in the Context object: const federation = createFederation({ origin: { handleHost: "example.com", webOrigin: "https://ap.example.com", }, }); NOTE Even if you set the handleHost different from the webOrigin, the other fediverse handle with the same domain name as the webOrigin will still be recognized. In the above example, two fediverse handles are recognized as the same: โ€ข @alice@example.com โ€ข @alice@ap.example.com
Explicitly setting the canonical origin

This API is available since Fedify 1.5.0.

Or you can explicitly set the canonical origin of the server by passing the origin option to the createFederation() function. The origin option is either a string or a FederationOrigin object, which consists of two fields: handleHost and webOrigin.

For example, if you want to set the canonical origin to https://example.com, you can pass the string:

const federation = createFederation({
  origin: "https://example.com",
});

NOTE

The origin option has to include the leading https:// or http:// scheme.

Such a configuration leads the constructed URLs using Context to use the canonical origin instead of the origin from the incoming HTTP requests, which avoids constructing unexpected URLs when a request bypasses a reverse proxy or a load balancer.

CAUTION

For example, suppose that your federated server (upstream) is accessible at the http://1.2.3.4:8000 and your load balancer (downstream) is accessible at the https://example.com and forwards the requests to the upstream server. In this case, you should set the canonical origin to https://example.com to construct the correct URLs. Otherwise, when some malicious actor directly sends a request to the upstream server, the constructed URLs will start with http://1.2.3.4:8000 instead of https://example.com, which can lead to security issues.
ALT text detailsExplicitly setting the canonical origin This API is available since Fedify 1.5.0. Or you can explicitly set the canonical origin of the server by passing the origin option to the createFederation() function. The origin option is either a string or a FederationOrigin object, which consists of two fields: handleHost and webOrigin. For example, if you want to set the canonical origin to https://example.com, you can pass the string: const federation = createFederation({ origin: "https://example.com", }); NOTE The origin option has to include the leading https:// or http:// scheme. Such a configuration leads the constructed URLs using Context to use the canonical origin instead of the origin from the incoming HTTP requests, which avoids constructing unexpected URLs when a request bypasses a reverse proxy or a load balancer. CAUTION For example, suppose that your federated server (upstream) is accessible at the http://1.2.3.4:8000 and your load balancer (downstream) is accessible at the https://example.com and forwards the requests to the upstream server. In this case, you should set the canonical origin to https://example.com to construct the correct URLs. Otherwise, when some malicious actor directly sends a request to the upstream server, the constructed URLs will start with http://1.2.3.4:8000 instead of https://example.com, which can lead to security issues.
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We're excited to announce two major features coming in 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.

Canonical Origin Support

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!

Separating WebFinger host from the server origin

This API is available since Fedify 1.5.0.

Sometimes you may want to use different domain names for WebFinger handles (i.e., fediverse handles) and the server origin. For example, you may want to use https://ap.example.com/actors/alice as an actor URI but want to use @alice@example.com as its fediverse handle.

In such cases, you can set the handleHost different from the webOrigin in the origin option. The handleHost is used to construct the WebFinger handles, and the webOrigin is used to construct the URLs in the Context object:

const federation = createFederation({
  origin: {
    handleHost: "example.com",
    webOrigin: "https://ap.example.com",
  },
});

NOTE

Even if you set the handleHost different from the webOrigin, the other fediverse handle with the same domain name as the webOrigin will still be recognized.

In the above example, two fediverse handles are recognized as the same:

โ€ข @alice@example.com
โ€ข @alice@ap.example.com
ALT text detailsSeparating WebFinger host from the server origin This API is available since Fedify 1.5.0. Sometimes you may want to use different domain names for WebFinger handles (i.e., fediverse handles) and the server origin. For example, you may want to use https://ap.example.com/actors/alice as an actor URI but want to use @alice@example.com as its fediverse handle. In such cases, you can set the handleHost different from the webOrigin in the origin option. The handleHost is used to construct the WebFinger handles, and the webOrigin is used to construct the URLs in the Context object: const federation = createFederation({ origin: { handleHost: "example.com", webOrigin: "https://ap.example.com", }, }); NOTE Even if you set the handleHost different from the webOrigin, the other fediverse handle with the same domain name as the webOrigin will still be recognized. In the above example, two fediverse handles are recognized as the same: โ€ข @alice@example.com โ€ข @alice@ap.example.com
Explicitly setting the canonical origin

This API is available since Fedify 1.5.0.

Or you can explicitly set the canonical origin of the server by passing the origin option to the createFederation() function. The origin option is either a string or a FederationOrigin object, which consists of two fields: handleHost and webOrigin.

For example, if you want to set the canonical origin to https://example.com, you can pass the string:

const federation = createFederation({
  origin: "https://example.com",
});

NOTE

The origin option has to include the leading https:// or http:// scheme.

Such a configuration leads the constructed URLs using Context to use the canonical origin instead of the origin from the incoming HTTP requests, which avoids constructing unexpected URLs when a request bypasses a reverse proxy or a load balancer.

CAUTION

For example, suppose that your federated server (upstream) is accessible at the http://1.2.3.4:8000 and your load balancer (downstream) is accessible at the https://example.com and forwards the requests to the upstream server. In this case, you should set the canonical origin to https://example.com to construct the correct URLs. Otherwise, when some malicious actor directly sends a request to the upstream server, the constructed URLs will start with http://1.2.3.4:8000 instead of https://example.com, which can lead to security issues.
ALT text detailsExplicitly setting the canonical origin This API is available since Fedify 1.5.0. Or you can explicitly set the canonical origin of the server by passing the origin option to the createFederation() function. The origin option is either a string or a FederationOrigin object, which consists of two fields: handleHost and webOrigin. For example, if you want to set the canonical origin to https://example.com, you can pass the string: const federation = createFederation({ origin: "https://example.com", }); NOTE The origin option has to include the leading https:// or http:// scheme. Such a configuration leads the constructed URLs using Context to use the canonical origin instead of the origin from the incoming HTTP requests, which avoids constructing unexpected URLs when a request bypasses a reverse proxy or a load balancer. CAUTION For example, suppose that your federated server (upstream) is accessible at the http://1.2.3.4:8000 and your load balancer (downstream) is accessible at the https://example.com and forwards the requests to the upstream server. In this case, you should set the canonical origin to https://example.com to construct the correct URLs. Otherwise, when some malicious actor directly sends a request to the upstream server, the constructed URLs will start with http://1.2.3.4:8000 instead of https://example.com, which can lead to security issues.
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We're excited to announce two major features coming in 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.

Canonical Origin Support

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!

Separating WebFinger host from the server origin

This API is available since Fedify 1.5.0.

Sometimes you may want to use different domain names for WebFinger handles (i.e., fediverse handles) and the server origin. For example, you may want to use https://ap.example.com/actors/alice as an actor URI but want to use @alice@example.com as its fediverse handle.

In such cases, you can set the handleHost different from the webOrigin in the origin option. The handleHost is used to construct the WebFinger handles, and the webOrigin is used to construct the URLs in the Context object:

const federation = createFederation({
  origin: {
    handleHost: "example.com",
    webOrigin: "https://ap.example.com",
  },
});

NOTE

Even if you set the handleHost different from the webOrigin, the other fediverse handle with the same domain name as the webOrigin will still be recognized.

In the above example, two fediverse handles are recognized as the same:

โ€ข @alice@example.com
โ€ข @alice@ap.example.com
ALT text detailsSeparating WebFinger host from the server origin This API is available since Fedify 1.5.0. Sometimes you may want to use different domain names for WebFinger handles (i.e., fediverse handles) and the server origin. For example, you may want to use https://ap.example.com/actors/alice as an actor URI but want to use @alice@example.com as its fediverse handle. In such cases, you can set the handleHost different from the webOrigin in the origin option. The handleHost is used to construct the WebFinger handles, and the webOrigin is used to construct the URLs in the Context object: const federation = createFederation({ origin: { handleHost: "example.com", webOrigin: "https://ap.example.com", }, }); NOTE Even if you set the handleHost different from the webOrigin, the other fediverse handle with the same domain name as the webOrigin will still be recognized. In the above example, two fediverse handles are recognized as the same: โ€ข @alice@example.com โ€ข @alice@ap.example.com
Explicitly setting the canonical origin

This API is available since Fedify 1.5.0.

Or you can explicitly set the canonical origin of the server by passing the origin option to the createFederation() function. The origin option is either a string or a FederationOrigin object, which consists of two fields: handleHost and webOrigin.

For example, if you want to set the canonical origin to https://example.com, you can pass the string:

const federation = createFederation({
  origin: "https://example.com",
});

NOTE

The origin option has to include the leading https:// or http:// scheme.

Such a configuration leads the constructed URLs using Context to use the canonical origin instead of the origin from the incoming HTTP requests, which avoids constructing unexpected URLs when a request bypasses a reverse proxy or a load balancer.

CAUTION

For example, suppose that your federated server (upstream) is accessible at the http://1.2.3.4:8000 and your load balancer (downstream) is accessible at the https://example.com and forwards the requests to the upstream server. In this case, you should set the canonical origin to https://example.com to construct the correct URLs. Otherwise, when some malicious actor directly sends a request to the upstream server, the constructed URLs will start with http://1.2.3.4:8000 instead of https://example.com, which can lead to security issues.
ALT text detailsExplicitly setting the canonical origin This API is available since Fedify 1.5.0. Or you can explicitly set the canonical origin of the server by passing the origin option to the createFederation() function. The origin option is either a string or a FederationOrigin object, which consists of two fields: handleHost and webOrigin. For example, if you want to set the canonical origin to https://example.com, you can pass the string: const federation = createFederation({ origin: "https://example.com", }); NOTE The origin option has to include the leading https:// or http:// scheme. Such a configuration leads the constructed URLs using Context to use the canonical origin instead of the origin from the incoming HTTP requests, which avoids constructing unexpected URLs when a request bypasses a reverse proxy or a load balancer. CAUTION For example, suppose that your federated server (upstream) is accessible at the http://1.2.3.4:8000 and your load balancer (downstream) is accessible at the https://example.com and forwards the requests to the upstream server. In this case, you should set the canonical origin to https://example.com to construct the correct URLs. Otherwise, when some malicious actor directly sends a request to the upstream server, the constructed URLs will start with http://1.2.3.4:8000 instead of https://example.com, which can lead to security issues.
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

Yes, we probably should have had this soonerโ€ฆ but hey, proper domain handling is coming to 1.5.0!

https://hollo.social/@fedify/01953693-1afd-7430-988a-23d649099e1c

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

@fedify@hollo.social

We're excited to announce two major features coming in 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.

Canonical Origin Support

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!

Separating WebFinger host from the server origin

This API is available since Fedify 1.5.0.

Sometimes you may want to use different domain names for WebFinger handles (i.e., fediverse handles) and the server origin. For example, you may want to use https://ap.example.com/actors/alice as an actor URI but want to use @alice@example.com as its fediverse handle.

In such cases, you can set the handleHost different from the webOrigin in the origin option. The handleHost is used to construct the WebFinger handles, and the webOrigin is used to construct the URLs in the Context object:

const federation = createFederation({
  origin: {
    handleHost: "example.com",
    webOrigin: "https://ap.example.com",
  },
});

NOTE

Even if you set the handleHost different from the webOrigin, the other fediverse handle with the same domain name as the webOrigin will still be recognized.

In the above example, two fediverse handles are recognized as the same:

โ€ข @alice@example.com
โ€ข @alice@ap.example.com
ALT text detailsSeparating WebFinger host from the server origin This API is available since Fedify 1.5.0. Sometimes you may want to use different domain names for WebFinger handles (i.e., fediverse handles) and the server origin. For example, you may want to use https://ap.example.com/actors/alice as an actor URI but want to use @alice@example.com as its fediverse handle. In such cases, you can set the handleHost different from the webOrigin in the origin option. The handleHost is used to construct the WebFinger handles, and the webOrigin is used to construct the URLs in the Context object: const federation = createFederation({ origin: { handleHost: "example.com", webOrigin: "https://ap.example.com", }, }); NOTE Even if you set the handleHost different from the webOrigin, the other fediverse handle with the same domain name as the webOrigin will still be recognized. In the above example, two fediverse handles are recognized as the same: โ€ข @alice@example.com โ€ข @alice@ap.example.com
Explicitly setting the canonical origin

This API is available since Fedify 1.5.0.

Or you can explicitly set the canonical origin of the server by passing the origin option to the createFederation() function. The origin option is either a string or a FederationOrigin object, which consists of two fields: handleHost and webOrigin.

For example, if you want to set the canonical origin to https://example.com, you can pass the string:

const federation = createFederation({
  origin: "https://example.com",
});

NOTE

The origin option has to include the leading https:// or http:// scheme.

Such a configuration leads the constructed URLs using Context to use the canonical origin instead of the origin from the incoming HTTP requests, which avoids constructing unexpected URLs when a request bypasses a reverse proxy or a load balancer.

CAUTION

For example, suppose that your federated server (upstream) is accessible at the http://1.2.3.4:8000 and your load balancer (downstream) is accessible at the https://example.com and forwards the requests to the upstream server. In this case, you should set the canonical origin to https://example.com to construct the correct URLs. Otherwise, when some malicious actor directly sends a request to the upstream server, the constructed URLs will start with http://1.2.3.4:8000 instead of https://example.com, which can lead to security issues.
ALT text detailsExplicitly setting the canonical origin This API is available since Fedify 1.5.0. Or you can explicitly set the canonical origin of the server by passing the origin option to the createFederation() function. The origin option is either a string or a FederationOrigin object, which consists of two fields: handleHost and webOrigin. For example, if you want to set the canonical origin to https://example.com, you can pass the string: const federation = createFederation({ origin: "https://example.com", }); NOTE The origin option has to include the leading https:// or http:// scheme. Such a configuration leads the constructed URLs using Context to use the canonical origin instead of the origin from the incoming HTTP requests, which avoids constructing unexpected URLs when a request bypasses a reverse proxy or a load balancer. CAUTION For example, suppose that your federated server (upstream) is accessible at the http://1.2.3.4:8000 and your load balancer (downstream) is accessible at the https://example.com and forwards the requests to the upstream server. In this case, you should set the canonical origin to https://example.com to construct the correct URLs. Otherwise, when some malicious actor directly sends a request to the upstream server, the constructed URLs will start with http://1.2.3.4:8000 instead of https://example.com, which can lead to security issues.
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We're excited to announce two major features coming in 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.

Canonical Origin Support

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!

Separating WebFinger host from the server origin

This API is available since Fedify 1.5.0.

Sometimes you may want to use different domain names for WebFinger handles (i.e., fediverse handles) and the server origin. For example, you may want to use https://ap.example.com/actors/alice as an actor URI but want to use @alice@example.com as its fediverse handle.

In such cases, you can set the handleHost different from the webOrigin in the origin option. The handleHost is used to construct the WebFinger handles, and the webOrigin is used to construct the URLs in the Context object:

const federation = createFederation({
  origin: {
    handleHost: "example.com",
    webOrigin: "https://ap.example.com",
  },
});

NOTE

Even if you set the handleHost different from the webOrigin, the other fediverse handle with the same domain name as the webOrigin will still be recognized.

In the above example, two fediverse handles are recognized as the same:

โ€ข @alice@example.com
โ€ข @alice@ap.example.com
ALT text detailsSeparating WebFinger host from the server origin This API is available since Fedify 1.5.0. Sometimes you may want to use different domain names for WebFinger handles (i.e., fediverse handles) and the server origin. For example, you may want to use https://ap.example.com/actors/alice as an actor URI but want to use @alice@example.com as its fediverse handle. In such cases, you can set the handleHost different from the webOrigin in the origin option. The handleHost is used to construct the WebFinger handles, and the webOrigin is used to construct the URLs in the Context object: const federation = createFederation({ origin: { handleHost: "example.com", webOrigin: "https://ap.example.com", }, }); NOTE Even if you set the handleHost different from the webOrigin, the other fediverse handle with the same domain name as the webOrigin will still be recognized. In the above example, two fediverse handles are recognized as the same: โ€ข @alice@example.com โ€ข @alice@ap.example.com
Explicitly setting the canonical origin

This API is available since Fedify 1.5.0.

Or you can explicitly set the canonical origin of the server by passing the origin option to the createFederation() function. The origin option is either a string or a FederationOrigin object, which consists of two fields: handleHost and webOrigin.

For example, if you want to set the canonical origin to https://example.com, you can pass the string:

const federation = createFederation({
  origin: "https://example.com",
});

NOTE

The origin option has to include the leading https:// or http:// scheme.

Such a configuration leads the constructed URLs using Context to use the canonical origin instead of the origin from the incoming HTTP requests, which avoids constructing unexpected URLs when a request bypasses a reverse proxy or a load balancer.

CAUTION

For example, suppose that your federated server (upstream) is accessible at the http://1.2.3.4:8000 and your load balancer (downstream) is accessible at the https://example.com and forwards the requests to the upstream server. In this case, you should set the canonical origin to https://example.com to construct the correct URLs. Otherwise, when some malicious actor directly sends a request to the upstream server, the constructed URLs will start with http://1.2.3.4:8000 instead of https://example.com, which can lead to security issues.
ALT text detailsExplicitly setting the canonical origin This API is available since Fedify 1.5.0. Or you can explicitly set the canonical origin of the server by passing the origin option to the createFederation() function. The origin option is either a string or a FederationOrigin object, which consists of two fields: handleHost and webOrigin. For example, if you want to set the canonical origin to https://example.com, you can pass the string: const federation = createFederation({ origin: "https://example.com", }); NOTE The origin option has to include the leading https:// or http:// scheme. Such a configuration leads the constructed URLs using Context to use the canonical origin instead of the origin from the incoming HTTP requests, which avoids constructing unexpected URLs when a request bypasses a reverse proxy or a load balancer. CAUTION For example, suppose that your federated server (upstream) is accessible at the http://1.2.3.4:8000 and your load balancer (downstream) is accessible at the https://example.com and forwards the requests to the upstream server. In this case, you should set the canonical origin to https://example.com to construct the correct URLs. Otherwise, when some malicious actor directly sends a request to the upstream server, the constructed URLs will start with http://1.2.3.4:8000 instead of https://example.com, which can lead to security issues.
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

We're excited to announce two major features coming in 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.

Canonical Origin Support

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!

Separating WebFinger host from the server origin

This API is available since Fedify 1.5.0.

Sometimes you may want to use different domain names for WebFinger handles (i.e., fediverse handles) and the server origin. For example, you may want to use https://ap.example.com/actors/alice as an actor URI but want to use @alice@example.com as its fediverse handle.

In such cases, you can set the handleHost different from the webOrigin in the origin option. The handleHost is used to construct the WebFinger handles, and the webOrigin is used to construct the URLs in the Context object:

const federation = createFederation({
  origin: {
    handleHost: "example.com",
    webOrigin: "https://ap.example.com",
  },
});

NOTE

Even if you set the handleHost different from the webOrigin, the other fediverse handle with the same domain name as the webOrigin will still be recognized.

In the above example, two fediverse handles are recognized as the same:

โ€ข @alice@example.com
โ€ข @alice@ap.example.com
ALT text detailsSeparating WebFinger host from the server origin This API is available since Fedify 1.5.0. Sometimes you may want to use different domain names for WebFinger handles (i.e., fediverse handles) and the server origin. For example, you may want to use https://ap.example.com/actors/alice as an actor URI but want to use @alice@example.com as its fediverse handle. In such cases, you can set the handleHost different from the webOrigin in the origin option. The handleHost is used to construct the WebFinger handles, and the webOrigin is used to construct the URLs in the Context object: const federation = createFederation({ origin: { handleHost: "example.com", webOrigin: "https://ap.example.com", }, }); NOTE Even if you set the handleHost different from the webOrigin, the other fediverse handle with the same domain name as the webOrigin will still be recognized. In the above example, two fediverse handles are recognized as the same: โ€ข @alice@example.com โ€ข @alice@ap.example.com
Explicitly setting the canonical origin

This API is available since Fedify 1.5.0.

Or you can explicitly set the canonical origin of the server by passing the origin option to the createFederation() function. The origin option is either a string or a FederationOrigin object, which consists of two fields: handleHost and webOrigin.

For example, if you want to set the canonical origin to https://example.com, you can pass the string:

const federation = createFederation({
  origin: "https://example.com",
});

NOTE

The origin option has to include the leading https:// or http:// scheme.

Such a configuration leads the constructed URLs using Context to use the canonical origin instead of the origin from the incoming HTTP requests, which avoids constructing unexpected URLs when a request bypasses a reverse proxy or a load balancer.

CAUTION

For example, suppose that your federated server (upstream) is accessible at the http://1.2.3.4:8000 and your load balancer (downstream) is accessible at the https://example.com and forwards the requests to the upstream server. In this case, you should set the canonical origin to https://example.com to construct the correct URLs. Otherwise, when some malicious actor directly sends a request to the upstream server, the constructed URLs will start with http://1.2.3.4:8000 instead of https://example.com, which can lead to security issues.
ALT text detailsExplicitly setting the canonical origin This API is available since Fedify 1.5.0. Or you can explicitly set the canonical origin of the server by passing the origin option to the createFederation() function. The origin option is either a string or a FederationOrigin object, which consists of two fields: handleHost and webOrigin. For example, if you want to set the canonical origin to https://example.com, you can pass the string: const federation = createFederation({ origin: "https://example.com", }); NOTE The origin option has to include the leading https:// or http:// scheme. Such a configuration leads the constructed URLs using Context to use the canonical origin instead of the origin from the incoming HTTP requests, which avoids constructing unexpected URLs when a request bypasses a reverse proxy or a load balancer. CAUTION For example, suppose that your federated server (upstream) is accessible at the http://1.2.3.4:8000 and your load balancer (downstream) is accessible at the https://example.com and forwards the requests to the upstream server. In this case, you should set the canonical origin to https://example.com to construct the correct URLs. Otherwise, when some malicious actor directly sends a request to the upstream server, the constructed URLs will start with http://1.2.3.4:8000 instead of https://example.com, which can lead to security issues.
Dr James Ravenscroft's avatar
Dr James Ravenscroft

@jamesravey@fosstodon.org

I set up a fedi bot that creates Severance "facts about your outie" after I saw some amusing ones floating around this morning. Good opportunity to get familiar with and outiebot.jamesravey.me/message

Dr James Ravenscroft's avatar
Dr James Ravenscroft

@jamesravey@fosstodon.org

I set up a fedi bot that creates Severance "facts about your outie" after I saw some amusing ones floating around this morning. Good opportunity to get familiar with and outiebot.jamesravey.me/message

Dr James Ravenscroft's avatar
Dr James Ravenscroft

@jamesravey@fosstodon.org

I set up a fedi bot that creates Severance "facts about your outie" after I saw some amusing ones floating around this morning. Good opportunity to get familiar with and outiebot.jamesravey.me/message

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

Today's my work on : Support PEM-PKCS#1 besides PEM-SPKI for RSA public keys.

Although the vast majority of ActivityPub software encodes RSA public keys in PEM-SPKI format, some software encodes RSA public keys in PEM-PKCS format (see: https://github.com/fedify-dev/hollo/pull/109#issuecomment-2662591619). Fedify currently only accepts PEM-SPKI format, so it needs to accept PEM-PKCS format as well for better interoperability.

https://github.com/fedify-dev/fedify/issues/209

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

Today's my work on : Support PEM-PKCS#1 besides PEM-SPKI for RSA public keys.

Although the vast majority of ActivityPub software encodes RSA public keys in PEM-SPKI format, some software encodes RSA public keys in PEM-PKCS format (see: https://github.com/fedify-dev/hollo/pull/109#issuecomment-2662591619). Fedify currently only accepts PEM-SPKI format, so it needs to accept PEM-PKCS format as well for better interoperability.

https://github.com/fedify-dev/fedify/issues/209

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

Today's my work on : Support PEM-PKCS#1 besides PEM-SPKI for RSA public keys.

Although the vast majority of ActivityPub software encodes RSA public keys in PEM-SPKI format, some software encodes RSA public keys in PEM-PKCS format (see: https://github.com/fedify-dev/hollo/pull/109#issuecomment-2662591619). Fedify currently only accepts PEM-SPKI format, so it needs to accept PEM-PKCS format as well for better interoperability.

https://github.com/fedify-dev/fedify/issues/209

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

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

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

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๋Š” ํ”„๋กœํ† ์ฝœ ๊ตฌํ˜„์„ ๋„์™€์ฃผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ์—ฐํ•ฉ ํ”„๋กœํ† ์ฝœ์„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”? 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ใฏ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ใฏActivityPubใƒ—ใƒญใƒˆใ‚ณใƒซใฎๅฎŸ่ฃ…ใ‚’็ฐกๅ˜ใซใ™ใ‚‹TypeScriptใƒ•ใƒฌใƒผใƒ ใƒฏใƒผใ‚ฏใงใ™ใ€‚้€ฃๅˆใƒ—ใƒญใƒˆใ‚ณใƒซใฎ่ค‡้›‘ใชๅฎŸ่ฃ…ใซๅ›ฐใฃใฆใ„ใพใ›ใ‚“ใ‹๏ผŸFedifyใŒใŠๆ‰‹ไผใ„ใ—ใพใ™๏ผ

โœจ ไธปใชๆฉŸ่ƒฝ

๐Ÿ”ง CLIใƒ„ใƒผใƒซ

๐Ÿš€ ใƒฉใƒณใ‚ฟใ‚คใƒ ใ‚ตใƒใƒผใƒˆ

๐Ÿ“š ๅญฆ็ฟ’ใŒ็ฐกๅ˜

MITใƒฉใ‚คใ‚ปใƒณใ‚นใง่‡ช็”ฑใซๅˆฉ็”จๅฏ่ƒฝใชใ‚ชใƒผใƒ—ใƒณใ‚ฝใƒผใ‚นใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใงใ™๏ผ

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

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 ยท 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

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

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

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

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

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

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

Just integrated 's new workspaces feature into the repository! This means we can now manage the main package, CLI tool, and examples all in one place. The best part? No more custom import map generatorsโ€”everything's simpler and more intuitive for new contributors. Loving how Deno 2.0's workspace support makes managing monorepos so much cleaner.

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

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

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

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

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

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

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

We're considering adding custom background task support to 1.5.0. Got thoughts on whether Fedify should support user-defined background tasks alongside ActivityPub operations? Check out the proposal and share your feedback: https://github.com/fedify-dev/fedify/issues/206.

https://hollo.social/@fedify/0194ea5a-9856-703f-b098-d4f52936b500

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

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).

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

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

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

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

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

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

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

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

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

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

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

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
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

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
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.
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

ใŠ—๏ธ ็ธฝ(์ด) ๋ฆด๋ฆฌ์Šค ๆ•ธ(์ˆ˜) 100็•ช(๋ฒˆ) ๋„˜๋‹ค! :fedify:

https://hollo.social/@fedify/0194efd6-a7c2-79f6-925b-737fc57138b8

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

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.

Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

Introducing . Hollo is an -enabled single-user microblogging software. Although it's for a single user, it also supports creating and running multiple accounts for different topics.

It's headless, meaning you can use existing client apps instead, with its Mastodon-compatible APIs. It has most feature parity with Mastodon. Two big differences with Mastodon is that you can use in the content of your posts and you can quote another post.

Oh, and Hollo is built using and .

https://github.com/dahlia/hollo

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.

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.

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

We're considering adding custom background task support to 1.5.0. Got thoughts on whether Fedify should support user-defined background tasks alongside ActivityPub operations? Check out the proposal and share your feedback: https://github.com/fedify-dev/fedify/issues/206.

https://hollo.social/@fedify/0194ea5a-9856-703f-b098-d4f52936b500

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.

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

Just released 1.4.0!

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!

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!

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!

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!

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!

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!

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!

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!

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!

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!

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!

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

Just released 1.4.0!

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!

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

Just released 1.4.0!

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!

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

Just released 1.4.0!

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!

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!

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!

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

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

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

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

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

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

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

ๆดช ๆฐ‘ๆ†™ (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

Made a little bit of progress on my project yesterday. Spun my wheels testing a few ORMs and running into compatibility problems with each of them. By the time I went to bed, the preferences page was capable of storing and loading account-local form data for the first time. ๐Ÿฅณ

For this project, when progress looks slow from the outside, it's because I'm learning the ecosystem pretty much from scratch. Not letting myself get discouraged. ๐Ÿ™‚

Julian Fietkau's avatar
Julian Fietkau

@julian@fietkau.social

Made a little bit of progress on my project yesterday. Spun my wheels testing a few ORMs and running into compatibility problems with each of them. By the time I went to bed, the preferences page was capable of storing and loading account-local form data for the first time. ๐Ÿฅณ

For this project, when progress looks slow from the outside, it's because I'm learning the ecosystem pretty much from scratch. Not letting myself get discouraged. ๐Ÿ™‚

ๆดช ๆฐ‘ๆ†™ (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.
ๆดช ๆฐ‘ๆ†™ (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.
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

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

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

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

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

ๆดช ๆฐ‘ๆ†™ (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.
ๆดช ๆฐ‘ๆ†™ (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 ยท 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 ยท 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 ยท 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

๐ŸŽ‰ 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

๐ŸŽ‰ 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.
ๆดช ๆฐ‘ๆ†™ (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.
ๆดช ๆฐ‘ๆ†™ (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 ยท 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.

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

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.

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.
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I want to automatically list the names of people who have sponsored with Open Collective in README.md. Is there a good way to do this? (I think I can use GitHub Actions or Open Collective's webhooks, but it's a bit of a hassle to create it myself.)

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.

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.

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

๐ŸŽ‰ 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.
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I want to automatically list the names of people who have sponsored with Open Collective in README.md. Is there a good way to do this? (I think I can use GitHub Actions or Open Collective's webhooks, but it's a bit of a hassle to create it myself.)

ๆดช ๆฐ‘ๆ†™ (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.
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I want to automatically list the names of people who have sponsored with Open Collective in README.md. Is there a good way to do this? (I think I can use GitHub Actions or Open Collective's webhooks, but it's a bit of a hassle to create it myself.)

ๆดช ๆฐ‘ๆ†™ (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

๐ŸŽ‰ 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.
ๆดช ๆฐ‘ๆ†™ (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 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

๐ŸŽ‰ 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

๐ŸŽ‰ 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

๐ŸŽ‰ 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.
ๆดช ๆฐ‘ๆ†™ (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

๐ŸŽ‰ 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

๐ŸŽ‰ 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

Valtteri Laitinen (@valtlai) managed to get running on Workers!

https://fedi.valtlai.fi/@valtlai/113906145660141267

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

@fedify@hollo.social

Valtteri Laitinen (@valtlai) managed to get running on Workers!

https://fedi.valtlai.fi/@valtlai/113906145660141267

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

@fedify@hollo.social

Valtteri Laitinen (@valtlai) managed to get running on Workers!

https://fedi.valtlai.fi/@valtlai/113906145660141267

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

@fedify@hollo.social

Valtteri Laitinen (@valtlai) managed to get running on Workers!

https://fedi.valtlai.fi/@valtlai/113906145660141267

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

@fedify@hollo.social

Valtteri Laitinen (@valtlai) managed to get running on Workers!

https://fedi.valtlai.fi/@valtlai/113906145660141267

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

@fedify@hollo.social

Valtteri Laitinen (@valtlai) managed to get running on Workers!

https://fedi.valtlai.fi/@valtlai/113906145660141267

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

@fedify@hollo.social

Valtteri Laitinen (@valtlai) managed to get running on Workers!

https://fedi.valtlai.fi/@valtlai/113906145660141267

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I passed the review to open a :fedify: collective on Open Collective, and now I'm thinking about how to structure the contribution tiers. ๐Ÿค”

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 moved the project and related repositories to our new GitHub organization account, @fedify-dev! ๐ŸŽ‰

Here's what moved:

All repositories have been transferred and GitHub's automatic redirects are in place, so existing links will continue to work. Also, the project's core functionality and development process remain unchanged.

Thanks to everyone who participated in our naming poll. Looking forward to Fedify's continued growth under its new organizational home!

:fedify: New GitHub organization: https://github.com/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

We've just moved the project and related repositories to our new GitHub organization account, @fedify-dev! ๐ŸŽ‰

Here's what moved:

All repositories have been transferred and GitHub's automatic redirects are in place, so existing links will continue to work. Also, the project's core functionality and development process remain unchanged.

Thanks to everyone who participated in our naming poll. Looking forward to Fedify's continued growth under its new organizational home!

:fedify: New GitHub organization: https://github.com/fedify-dev.

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

@botkit@hollo.social

๐Ÿ“ข Important announcement! 's repository has moved to a new home! ๐Ÿ 

The repository is now located at @fedify-dev/botkit (previously @dahlia/botkit). All future development will continue at the new location.

Don't worryโ€”everything's the same, just a new address! Please update your bookmarks and project references. Thanks for being part of our community! :botkit:

https://hollo.social/@fedify/0194a851-581d-779c-b777-dc39e753ef14

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 moved the project and related repositories to our new GitHub organization account, @fedify-dev! ๐ŸŽ‰

Here's what moved:

All repositories have been transferred and GitHub's automatic redirects are in place, so existing links will continue to work. Also, the project's core functionality and development process remain unchanged.

Thanks to everyone who participated in our naming poll. Looking forward to Fedify's continued growth under its new organizational home!

:fedify: New GitHub organization: https://github.com/fedify-dev.

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I passed the review to open a :fedify: collective on Open Collective, and now I'm thinking about how to structure the contribution tiers. ๐Ÿค”

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I passed the review to open a :fedify: collective on Open Collective, and now I'm thinking about how to structure the contribution tiers. ๐Ÿค”

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

@botkit@hollo.social

๐Ÿ“ข Important announcement! 's repository has moved to a new home! ๐Ÿ 

The repository is now located at @fedify-dev/botkit (previously @dahlia/botkit). All future development will continue at the new location.

Don't worryโ€”everything's the same, just a new address! Please update your bookmarks and project references. Thanks for being part of our community! :botkit:

https://hollo.social/@fedify/0194a851-581d-779c-b777-dc39e753ef14

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 moved the project and related repositories to our new GitHub organization account, @fedify-dev! ๐ŸŽ‰

Here's what moved:

All repositories have been transferred and GitHub's automatic redirects are in place, so existing links will continue to work. Also, the project's core functionality and development process remain unchanged.

Thanks to everyone who participated in our naming poll. Looking forward to Fedify's continued growth under its new organizational home!

:fedify: New GitHub organization: https://github.com/fedify-dev.

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

@botkit@hollo.social

๐Ÿ“ข Important announcement! 's repository has moved to a new home! ๐Ÿ 

The repository is now located at @fedify-dev/botkit (previously @dahlia/botkit). All future development will continue at the new location.

Don't worryโ€”everything's the same, just a new address! Please update your bookmarks and project references. Thanks for being part of our community! :botkit:

https://hollo.social/@fedify/0194a851-581d-779c-b777-dc39e753ef14

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 moved the project and related repositories to our new GitHub organization account, @fedify-dev! ๐ŸŽ‰

Here's what moved:

All repositories have been transferred and GitHub's automatic redirects are in place, so existing links will continue to work. Also, the project's core functionality and development process remain unchanged.

Thanks to everyone who participated in our naming poll. Looking forward to Fedify's continued growth under its new organizational home!

:fedify: New GitHub organization: https://github.com/fedify-dev.

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

@botkit@hollo.social

๐Ÿ“ข Important announcement! 's repository has moved to a new home! ๐Ÿ 

The repository is now located at @fedify-dev/botkit (previously @dahlia/botkit). All future development will continue at the new location.

Don't worryโ€”everything's the same, just a new address! Please update your bookmarks and project references. Thanks for being part of our community! :botkit:

https://hollo.social/@fedify/0194a851-581d-779c-b777-dc39e753ef14

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 moved the project and related repositories to our new GitHub organization account, @fedify-dev! ๐ŸŽ‰

Here's what moved:

All repositories have been transferred and GitHub's automatic redirects are in place, so existing links will continue to work. Also, the project's core functionality and development process remain unchanged.

Thanks to everyone who participated in our naming poll. Looking forward to Fedify's continued growth under its new organizational home!

:fedify: New GitHub organization: https://github.com/fedify-dev.

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

@botkit@hollo.social

๐Ÿ“ข Important announcement! 's repository has moved to a new home! ๐Ÿ 

The repository is now located at @fedify-dev/botkit (previously @dahlia/botkit). All future development will continue at the new location.

Don't worryโ€”everything's the same, just a new address! Please update your bookmarks and project references. Thanks for being part of our community! :botkit:

https://hollo.social/@fedify/0194a851-581d-779c-b777-dc39e753ef14

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 moved the project and related repositories to our new GitHub organization account, @fedify-dev! ๐ŸŽ‰

Here's what moved:

All repositories have been transferred and GitHub's automatic redirects are in place, so existing links will continue to work. Also, the project's core functionality and development process remain unchanged.

Thanks to everyone who participated in our naming poll. Looking forward to Fedify's continued growth under its new organizational home!

:fedify: New GitHub organization: https://github.com/fedify-dev.

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

@botkit@hollo.social

๐Ÿ“ข Important announcement! 's repository has moved to a new home! ๐Ÿ 

The repository is now located at @fedify-dev/botkit (previously @dahlia/botkit). All future development will continue at the new location.

Don't worryโ€”everything's the same, just a new address! Please update your bookmarks and project references. Thanks for being part of our community! :botkit:

https://hollo.social/@fedify/0194a851-581d-779c-b777-dc39e753ef14

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 moved the project and related repositories to our new GitHub organization account, @fedify-dev! ๐ŸŽ‰

Here's what moved:

All repositories have been transferred and GitHub's automatic redirects are in place, so existing links will continue to work. Also, the project's core functionality and development process remain unchanged.

Thanks to everyone who participated in our naming poll. Looking forward to Fedify's continued growth under its new organizational home!

:fedify: New GitHub organization: https://github.com/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

We've just moved the project and related repositories to our new GitHub organization account, @fedify-dev! ๐ŸŽ‰

Here's what moved:

All repositories have been transferred and GitHub's automatic redirects are in place, so existing links will continue to work. Also, the project's core functionality and development process remain unchanged.

Thanks to everyone who participated in our naming poll. Looking forward to Fedify's continued growth under its new organizational home!

:fedify: New GitHub organization: https://github.com/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

We've just moved the project and related repositories to our new GitHub organization account, @fedify-dev! ๐ŸŽ‰

Here's what moved:

All repositories have been transferred and GitHub's automatic redirects are in place, so existing links will continue to work. Also, the project's core functionality and development process remain unchanged.

Thanks to everyone who participated in our naming poll. Looking forward to Fedify's continued growth under its new organizational home!

:fedify: New GitHub organization: https://github.com/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

We've just moved the project and related repositories to our new GitHub organization account, @fedify-dev! ๐ŸŽ‰

Here's what moved:

All repositories have been transferred and GitHub's automatic redirects are in place, so existing links will continue to work. Also, the project's core functionality and development process remain unchanged.

Thanks to everyone who participated in our naming poll. Looking forward to Fedify's continued growth under its new organizational home!

:fedify: New GitHub organization: https://github.com/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

We've just moved the project and related repositories to our new GitHub organization account, @fedify-dev! ๐ŸŽ‰

Here's what moved:

All repositories have been transferred and GitHub's automatic redirects are in place, so existing links will continue to work. Also, the project's core functionality and development process remain unchanged.

Thanks to everyone who participated in our naming poll. Looking forward to Fedify's continued growth under its new organizational home!

:fedify: New GitHub organization: https://github.com/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

We've just moved the project and related repositories to our new GitHub organization account, @fedify-dev! ๐ŸŽ‰

Here's what moved:

All repositories have been transferred and GitHub's automatic redirects are in place, so existing links will continue to work. Also, the project's core functionality and development process remain unchanged.

Thanks to everyone who participated in our naming poll. Looking forward to Fedify's continued growth under its new organizational home!

:fedify: New GitHub organization: https://github.com/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

We've just moved the project and related repositories to our new GitHub organization account, @fedify-dev! ๐ŸŽ‰

Here's what moved:

All repositories have been transferred and GitHub's automatic redirects are in place, so existing links will continue to work. Also, the project's core functionality and development process remain unchanged.

Thanks to everyone who participated in our naming poll. Looking forward to Fedify's continued growth under its new organizational home!

:fedify: New GitHub organization: https://github.com/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

We've just moved the project and related repositories to our new GitHub organization account, @fedify-dev! ๐ŸŽ‰

Here's what moved:

All repositories have been transferred and GitHub's automatic redirects are in place, so existing links will continue to work. Also, the project's core functionality and development process remain unchanged.

Thanks to everyone who participated in our naming poll. Looking forward to Fedify's continued growth under its new organizational home!

:fedify: New GitHub organization: https://github.com/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

We've just moved the project and related repositories to our new GitHub organization account, @fedify-dev! ๐ŸŽ‰

Here's what moved:

All repositories have been transferred and GitHub's automatic redirects are in place, so existing links will continue to work. Also, the project's core functionality and development process remain unchanged.

Thanks to everyone who participated in our naming poll. Looking forward to Fedify's continued growth under its new organizational home!

:fedify: New GitHub organization: https://github.com/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

We've just moved the project and related repositories to our new GitHub organization account, @fedify-dev! ๐ŸŽ‰

Here's what moved:

All repositories have been transferred and GitHub's automatic redirects are in place, so existing links will continue to work. Also, the project's core functionality and development process remain unchanged.

Thanks to everyone who participated in our naming poll. Looking forward to Fedify's continued growth under its new organizational home!

:fedify: New GitHub organization: https://github.com/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

We've just moved the project and related repositories to our new GitHub organization account, @fedify-dev! ๐ŸŽ‰

Here's what moved:

All repositories have been transferred and GitHub's automatic redirects are in place, so existing links will continue to work. Also, the project's core functionality and development process remain unchanged.

Thanks to everyone who participated in our naming poll. Looking forward to Fedify's continued growth under its new organizational home!

:fedify: New GitHub organization: https://github.com/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

We've just moved the project and related repositories to our new GitHub organization account, @fedify-dev! ๐ŸŽ‰

Here's what moved:

All repositories have been transferred and GitHub's automatic redirects are in place, so existing links will continue to work. Also, the project's core functionality and development process remain unchanged.

Thanks to everyone who participated in our naming poll. Looking forward to Fedify's continued growth under its new organizational home!

:fedify: New GitHub organization: https://github.com/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

We've just moved the project and related repositories to our new GitHub organization account, @fedify-dev! ๐ŸŽ‰

Here's what moved:

All repositories have been transferred and GitHub's automatic redirects are in place, so existing links will continue to work. Also, the project's core functionality and development process remain unchanged.

Thanks to everyone who participated in our naming poll. Looking forward to Fedify's continued growth under its new organizational home!

:fedify: New GitHub organization: https://github.com/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

We've just moved the project and related repositories to our new GitHub organization account, @fedify-dev! ๐ŸŽ‰

Here's what moved:

All repositories have been transferred and GitHub's automatic redirects are in place, so existing links will continue to work. Also, the project's core functionality and development process remain unchanged.

Thanks to everyone who participated in our naming poll. Looking forward to Fedify's continued growth under its new organizational home!

:fedify: New GitHub organization: https://github.com/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

We've just moved the project and related repositories to our new GitHub organization account, @fedify-dev! ๐ŸŽ‰

Here's what moved:

All repositories have been transferred and GitHub's automatic redirects are in place, so existing links will continue to work. Also, the project's core functionality and development process remain unchanged.

Thanks to everyone who participated in our naming poll. Looking forward to Fedify's continued growth under its new organizational home!

:fedify: New GitHub organization: https://github.com/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

We've just moved the project and related repositories to our new GitHub organization account, @fedify-dev! ๐ŸŽ‰

Here's what moved:

All repositories have been transferred and GitHub's automatic redirects are in place, so existing links will continue to work. Also, the project's core functionality and development process remain unchanged.

Thanks to everyone who participated in our naming poll. Looking forward to Fedify's continued growth under its new organizational home!

:fedify: New GitHub organization: https://github.com/fedify-dev.

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

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

already uses the API exclusively for representing temporal data.

https://developer.mozilla.org/en-US/blog/javascript-temporal-is-coming/

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

@fedify@hollo.social

already uses the API exclusively for representing temporal data.

https://developer.mozilla.org/en-US/blog/javascript-temporal-is-coming/

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

@fedify@hollo.social

already uses the API exclusively for representing temporal data.

https://developer.mozilla.org/en-US/blog/javascript-temporal-is-coming/

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

@fedify@hollo.social

already uses the API exclusively for representing temporal data.

https://developer.mozilla.org/en-US/blog/javascript-temporal-is-coming/

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

@fedify@hollo.social

already uses the API exclusively for representing temporal data.

https://developer.mozilla.org/en-US/blog/javascript-temporal-is-coming/

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

If you'd like to support the development of @fedify or @hollo or @botkit, you can sponsor me on GitHub!

https://github.com/sponsors/dahlia

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

็งใ‚‚ๅพฎๅŠ›ใชใŒใ‚‰ใ€ŽThinking Penguin Magazine Vol.0ใ€ใซใ€Œๅ›ฝๆผขๆ–‡ๆทท็”จไฝ“ใ‹ใ‚‰Holloใพใงใ€ใจใ„ใ†ๆ‹™็จฟใ‚’ๅฏ„็จฟใ—ใพใ—ใŸใ€‚่ˆˆๅ‘ณใฎๆœ‰ใ‚‹ๆ–นใฏใ€็ฌฌๅไธ€ๅ›žๆŠ€่ก“ๆ›ธๅŒไบบ่ชŒๅš่ฆงไผšใงๆ‰‹ใซๅ…ฅใ‚Œใ‚‹ไบ‹ใŒๅ‡บๆฅใพใ™ใ€‚

https://msky.ospn.jp/notes/a35ankd6m2p80nev

Fediverse Linux Users Group's avatar
Fediverse Linux Users Group

@fedilug@msky.ospn.jp

ใ€ๆŠ€่ก“ๆ›ธๅŒไบบ่ชŒๅš่ฆงไผšใพใงใ‚ใจ๏ผ‘้€ฑ้–“โ€ผ๏ธใ€‘
ใฏๆฅ้€ฑใฎไปŠๆ—ฅใ€2025ๅนด1ๆœˆ25ๆ—ฅใซๆจชๆตœ็”ฃ่ฒฟใƒ›ใƒผใƒซ ใƒžใƒชใƒใƒชใ‚ขใง้–‹ๅ‚ฌใ•ใ‚Œใ‚‹็ฌฌ11ๅ›žๆŠ€่ก“ๆ›ธๅŒไบบ่ชŒๅš่ฆงไผš๏ผˆ ๏ผ‰ใซๅ‡บๅฑ•ใ—ใพใ™ใ€‚
ๆ–ฐๅˆŠใจใ—ใฆใ€ŽThinkng Penguin Magazine vol.0ใ€ใ‚’้ ’ๅธƒใ—ใพใ™๏ผ๏ผˆ124ใƒšใƒผใ‚ธใƒป500ๅ††๏ผ‰
ๅง”่จ—ใจใ—ใฆ
@naoki_wjm@k.my-sky.blue ใ•ใ‚“ใฎใ€Žใ•ใฐใ‹ใ‚“ใƒฉใ‚คใƒ•๏ผใ€ใ‚‚้ ’ๅธƒใ„ใŸใ—ใพใ™๏ผ

็š†ใ•ใ‚“ใฎใŠ่ถŠใ—ใ‚’ๅฟƒๅพ…ใกใซใ—ใฆใ„ใพใ™๏ผ๏ผ๏ผ

่ฉณใ—ใใฏๆŠ€่ก“ๆ›ธๅšใฎๅ…ฌๅผใ‚ตใ‚คใƒˆใŠใ‚ˆใณใ€ใ‚ตใƒผใ‚ฏใƒซๆฆ‚่ฆใ‚’ใ”่ฆงใใ ใ•ใ„๏ผ
https://gishohaku.dev/gishohaku11/circles/LOmokXEikphsDCEG9OEb

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

If you'd like to support the development of @fedify or @hollo or @botkit, you can sponsor me on GitHub!

https://github.com/sponsors/dahlia

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

If you'd like to support the development of @fedify or @hollo or @botkit, you can sponsor me on GitHub!

https://github.com/sponsors/dahlia

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

If you'd like to support the development of @fedify or @hollo or @botkit, you can sponsor me on GitHub!

https://github.com/sponsors/dahlia

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

If you'd like to support the development of @fedify or @hollo or @botkit, you can sponsor me on GitHub!

https://github.com/sponsors/dahlia

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

If you'd like to support the development of @fedify or @hollo or @botkit, you can sponsor me on GitHub!

https://github.com/sponsors/dahlia

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

If you'd like to support the development of @fedify or @hollo or @botkit, you can sponsor me on GitHub!

https://github.com/sponsors/dahlia

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

If you'd like to support the development of @fedify or @hollo or @botkit, you can sponsor me on GitHub!

https://github.com/sponsors/dahlia

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

If you'd like to support the development of @fedify or @hollo or @botkit, you can sponsor me on GitHub!

https://github.com/sponsors/dahlia

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

If you'd like to support the development of @fedify or @hollo or @botkit, you can sponsor me on GitHub!

https://github.com/sponsors/dahlia

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

If you'd like to support the development of @fedify or @hollo or @botkit, you can sponsor me on GitHub!

https://github.com/sponsors/dahlia

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

If you'd like to support the development of @fedify or @hollo or @botkit, you can sponsor me on GitHub!

https://github.com/sponsors/dahlia

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

If you'd like to support the development of @fedify or @hollo or @botkit, you can sponsor me on GitHub!

https://github.com/sponsors/dahlia

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

ใ€Œ@fedifyใ€ใ‚„ใ€Œ@holloใ€ใ‚„ใ€Œ@botkitใ€ใฎ้–‹็™บใ‚’ๆ”ฏๆดใ—ใŸใ„ๆ–นใฏใ€GitHubใงใ‚นใƒใƒณใ‚ตใƒผใซใชใฃใฆใใ ใ•ใ„๏ผ

https://github.com/sponsors/dahlia

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

If you'd like to support the development of @fedify or @hollo or @botkit, you can sponsor me on GitHub!

https://github.com/sponsors/dahlia

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

If you'd like to support the development of @fedify or @hollo or @botkit, you can sponsor me on GitHub!

https://github.com/sponsors/dahlia

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

ใ€Œ@fedifyใ€ใ‚„ใ€Œ@holloใ€ใ‚„ใ€Œ@botkitใ€ใฎ้–‹็™บใ‚’ๆ”ฏๆดใ—ใŸใ„ๆ–นใฏใ€GitHubใงใ‚นใƒใƒณใ‚ตใƒผใซใชใฃใฆใใ ใ•ใ„๏ผ

https://github.com/sponsors/dahlia

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

ใ€Œ@fedifyใ€ใ‚„ใ€Œ@holloใ€ใ‚„ใ€Œ@botkitใ€ใฎ้–‹็™บใ‚’ๆ”ฏๆดใ—ใŸใ„ๆ–นใฏใ€GitHubใงใ‚นใƒใƒณใ‚ตใƒผใซใชใฃใฆใใ ใ•ใ„๏ผ

https://github.com/sponsors/dahlia

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

์ œ ํ”„๋กœ์ ํŠธ์ธ @fedify, @hollo, @botkit ็ญ‰(๋“ฑ)์˜ ้–‹็™ผ(๊ฐœ๋ฐœ)์„ ๅพŒๆด(ํ›„์›)ํ•˜๊ณ  ์‹ถ์œผ์‹  ๋ถ„๋“ค๊ป˜์„œ๋Š”, GitHub์—์„œ ์ œ ์Šคํฐ์„œ๊ฐ€ ๋˜์–ด ์ฃผ์„ธ์š”!

https://github.com/sponsors/dahlia

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

If you'd like to support the development of @fedify or @hollo or @botkit, you can sponsor me on GitHub!

https://github.com/sponsors/dahlia

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

ใ€Œ@fedifyใ€ใ‚„ใ€Œ@holloใ€ใ‚„ใ€Œ@botkitใ€ใฎ้–‹็™บใ‚’ๆ”ฏๆดใ—ใŸใ„ๆ–นใฏใ€GitHubใงใ‚นใƒใƒณใ‚ตใƒผใซใชใฃใฆใใ ใ•ใ„๏ผ

https://github.com/sponsors/dahlia

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

If you'd like to support the development of @fedify or @hollo or @botkit, you can sponsor me on GitHub!

https://github.com/sponsors/dahlia

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ใฎWebFingerๅฎŸ่ฃ…ใซใŠใ‘ใ‚‹่„†ๅผฑๆ€งCVE-2025-23221ใซๅฏพใ™ใ‚‹ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ๏ผˆ1.0.14ใ€1.1.11ใ€1.2.11ใ€1.3.4๏ผ‰ใ‚’ใƒชใƒชใƒผใ‚นใ„ใŸใ—ใพใ—ใŸใ€‚ใ™ในใฆใฎใƒฆใƒผใ‚ถใƒผๆง˜ใซใŠใ‹ใ‚Œใพใ—ใฆใฏใ€ใŠไฝฟใ„ใฎใƒใƒผใ‚ธใƒงใƒณใซๅฟœใ˜ใŸๆœ€ๆ–ฐ็‰ˆใธใฎ้€Ÿใ‚„ใ‹ใชใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใ‚’ๆŽจๅฅจใ„ใŸใ—ใพใ™ใ€‚

่„†ๅผฑๆ€งใฎ่ฉณ็ดฐ

ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃ็ ”็ฉถ่€…ใซใ‚ˆใ‚Šใ€FedifyใฎlookupWebFinger()้–ขๆ•ฐใซใŠใ„ใฆไปฅไธ‹ใฎใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃไธŠใฎๅ•้กŒใŒ็™บ่ฆ‹ใ•ใ‚Œใพใ—ใŸ๏ผš

  • ็„ก้™ใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใƒซใƒผใƒ—ใซใ‚ˆใ‚‹ใ‚ตใƒผใƒ“ใ‚นๆ‹’ๅฆๆ”ปๆ’ƒ๏ผˆDoS๏ผ‰ใฎๅฏ่ƒฝๆ€ง
  • ใƒ—ใƒฉใ‚คใƒ™ใƒผใƒˆใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใ‚ขใƒ‰ใƒฌใ‚นใธใฎใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใ‚’ๅˆฉ็”จใ—ใŸSSRF๏ผˆใ‚ตใƒผใƒใƒผใ‚ตใ‚คใƒ‰ใƒชใ‚ฏใ‚จใ‚นใƒˆใƒ•ใ‚ฉใƒผใ‚ธใ‚งใƒช๏ผ‰ๆ”ปๆ’ƒใฎๅฏ่ƒฝๆ€ง
  • ใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆๆ“ไฝœใซใ‚ˆใ‚‹ๆ„ๅ›ณใ—ใชใ„URLใ‚นใ‚ญใƒผใƒ ใธใฎใ‚ขใ‚ฏใ‚ปใ‚นใฎๅฏ่ƒฝๆ€ง

ไฟฎๆญฃใ•ใ‚ŒใŸใƒใƒผใ‚ธใƒงใƒณ

  • 1.3.xใ‚ทใƒชใƒผใ‚บ๏ผš1.3.4ใธใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ
  • 1.2.xใ‚ทใƒชใƒผใ‚บ๏ผš1.2.11ใธใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ
  • 1.1.xใ‚ทใƒชใƒผใ‚บ๏ผš1.1.11ใธใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ
  • 1.0.xใ‚ทใƒชใƒผใ‚บ๏ผš1.0.14ใธใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ

ๅค‰ๆ›ดๅ†…ๅฎน

ๆœฌใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใงใฏใ€ไปฅไธ‹ใฎไฟฎๆญฃใŒๅฎŸๆ–ฝใ•ใ‚Œใพใ—ใŸ๏ผš

  1. ็„ก้™ใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใƒซใƒผใƒ—ใ‚’้˜ฒใใŸใ‚ใ€ๆœ€ๅคงใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆๅ›žๆ•ฐ๏ผˆ5ๅ›ž๏ผ‰ใฎๅˆถ้™ใ‚’ๅฐŽๅ…ฅ
  2. ๅ…ƒใฎใƒชใ‚ฏใ‚จใ‚นใƒˆใจๅŒใ˜ใ‚นใ‚ญใƒผใƒ ๏ผˆHTTP/HTTPS๏ผ‰ใฎใฟใซใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใ‚’ๅˆถ้™
  3. SSRFใ‚’้˜ฒๆญขใ™ใ‚‹ใŸใ‚ใ€ใƒ—ใƒฉใ‚คใƒ™ใƒผใƒˆใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใ‚ขใƒ‰ใƒฌใ‚นใธใฎใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใ‚’ใƒ–ใƒญใƒƒใ‚ฏ

ใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆๆ–นๆณ•

ไปฅไธ‹ใฎใ‚ณใƒžใƒณใƒ‰ใงๆœ€ๆ–ฐใฎใ‚ปใ‚ญใƒฅใ‚ขใƒใƒผใ‚ธใƒงใƒณใซใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใงใใพใ™๏ผš

# npmใƒฆใƒผใ‚ถใƒผใฎๅ ดๅˆ
npm update @fedify/fedify

# Denoใƒฆใƒผใ‚ถใƒผใฎๅ ดๅˆ
deno add jsr:@fedify/fedify

ใ“ใฎ่„†ๅผฑๆ€งใ‚’่ฒฌไปปใ‚’ๆŒใฃใฆๅ ฑๅ‘Šใ—ใฆใ„ใŸใ ใ„ใŸใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃ็ ”็ฉถ่€…ใฎๆ–นใซๆ„Ÿ่ฌ็”ณใ—ไธŠใ’ใพใ™ใ€‚่ฟ…้€ŸใชๅฏพๅฟœใŒๅฏ่ƒฝใจใชใ‚Šใพใ—ใŸใ€‚

ๆœฌ่„†ๅผฑๆ€งใฎ่ฉณ็ดฐใซใคใ„ใฆใฏใ€ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃๅ‹งๅ‘Šใ‚’ใ”ๅ‚็…งใใ ใ•ใ„ใ€‚


ใ”่ณชๅ•ใ‚„ใ”ๆ‡ธๅฟตใŒใ”ใ–ใ„ใพใ—ใŸใ‚‰ใ€GitHub Discussionsใ€Matrixใƒใƒฃใƒƒใƒˆใ‚นใƒšใƒผใ‚นใ€ใพใŸใฏDiscordใ‚ตใƒผใƒใƒผใพใงใŠๆฐ—่ปฝใซใ”้€ฃ็ตกใใ ใ•ใ„ใ€‚

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ใฎWebFingerๅฎŸ่ฃ…ใซใŠใ‘ใ‚‹่„†ๅผฑๆ€งCVE-2025-23221ใซๅฏพใ™ใ‚‹ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ๏ผˆ1.0.14ใ€1.1.11ใ€1.2.11ใ€1.3.4๏ผ‰ใ‚’ใƒชใƒชใƒผใ‚นใ„ใŸใ—ใพใ—ใŸใ€‚ใ™ในใฆใฎใƒฆใƒผใ‚ถใƒผๆง˜ใซใŠใ‹ใ‚Œใพใ—ใฆใฏใ€ใŠไฝฟใ„ใฎใƒใƒผใ‚ธใƒงใƒณใซๅฟœใ˜ใŸๆœ€ๆ–ฐ็‰ˆใธใฎ้€Ÿใ‚„ใ‹ใชใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใ‚’ๆŽจๅฅจใ„ใŸใ—ใพใ™ใ€‚

่„†ๅผฑๆ€งใฎ่ฉณ็ดฐ

ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃ็ ”็ฉถ่€…ใซใ‚ˆใ‚Šใ€FedifyใฎlookupWebFinger()้–ขๆ•ฐใซใŠใ„ใฆไปฅไธ‹ใฎใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃไธŠใฎๅ•้กŒใŒ็™บ่ฆ‹ใ•ใ‚Œใพใ—ใŸ๏ผš

  • ็„ก้™ใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใƒซใƒผใƒ—ใซใ‚ˆใ‚‹ใ‚ตใƒผใƒ“ใ‚นๆ‹’ๅฆๆ”ปๆ’ƒ๏ผˆDoS๏ผ‰ใฎๅฏ่ƒฝๆ€ง
  • ใƒ—ใƒฉใ‚คใƒ™ใƒผใƒˆใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใ‚ขใƒ‰ใƒฌใ‚นใธใฎใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใ‚’ๅˆฉ็”จใ—ใŸSSRF๏ผˆใ‚ตใƒผใƒใƒผใ‚ตใ‚คใƒ‰ใƒชใ‚ฏใ‚จใ‚นใƒˆใƒ•ใ‚ฉใƒผใ‚ธใ‚งใƒช๏ผ‰ๆ”ปๆ’ƒใฎๅฏ่ƒฝๆ€ง
  • ใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆๆ“ไฝœใซใ‚ˆใ‚‹ๆ„ๅ›ณใ—ใชใ„URLใ‚นใ‚ญใƒผใƒ ใธใฎใ‚ขใ‚ฏใ‚ปใ‚นใฎๅฏ่ƒฝๆ€ง

ไฟฎๆญฃใ•ใ‚ŒใŸใƒใƒผใ‚ธใƒงใƒณ

  • 1.3.xใ‚ทใƒชใƒผใ‚บ๏ผš1.3.4ใธใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ
  • 1.2.xใ‚ทใƒชใƒผใ‚บ๏ผš1.2.11ใธใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ
  • 1.1.xใ‚ทใƒชใƒผใ‚บ๏ผš1.1.11ใธใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ
  • 1.0.xใ‚ทใƒชใƒผใ‚บ๏ผš1.0.14ใธใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ

ๅค‰ๆ›ดๅ†…ๅฎน

ๆœฌใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใงใฏใ€ไปฅไธ‹ใฎไฟฎๆญฃใŒๅฎŸๆ–ฝใ•ใ‚Œใพใ—ใŸ๏ผš

  1. ็„ก้™ใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใƒซใƒผใƒ—ใ‚’้˜ฒใใŸใ‚ใ€ๆœ€ๅคงใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆๅ›žๆ•ฐ๏ผˆ5ๅ›ž๏ผ‰ใฎๅˆถ้™ใ‚’ๅฐŽๅ…ฅ
  2. ๅ…ƒใฎใƒชใ‚ฏใ‚จใ‚นใƒˆใจๅŒใ˜ใ‚นใ‚ญใƒผใƒ ๏ผˆHTTP/HTTPS๏ผ‰ใฎใฟใซใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใ‚’ๅˆถ้™
  3. SSRFใ‚’้˜ฒๆญขใ™ใ‚‹ใŸใ‚ใ€ใƒ—ใƒฉใ‚คใƒ™ใƒผใƒˆใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใ‚ขใƒ‰ใƒฌใ‚นใธใฎใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใ‚’ใƒ–ใƒญใƒƒใ‚ฏ

ใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆๆ–นๆณ•

ไปฅไธ‹ใฎใ‚ณใƒžใƒณใƒ‰ใงๆœ€ๆ–ฐใฎใ‚ปใ‚ญใƒฅใ‚ขใƒใƒผใ‚ธใƒงใƒณใซใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใงใใพใ™๏ผš

# npmใƒฆใƒผใ‚ถใƒผใฎๅ ดๅˆ
npm update @fedify/fedify

# Denoใƒฆใƒผใ‚ถใƒผใฎๅ ดๅˆ
deno add jsr:@fedify/fedify

ใ“ใฎ่„†ๅผฑๆ€งใ‚’่ฒฌไปปใ‚’ๆŒใฃใฆๅ ฑๅ‘Šใ—ใฆใ„ใŸใ ใ„ใŸใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃ็ ”็ฉถ่€…ใฎๆ–นใซๆ„Ÿ่ฌ็”ณใ—ไธŠใ’ใพใ™ใ€‚่ฟ…้€ŸใชๅฏพๅฟœใŒๅฏ่ƒฝใจใชใ‚Šใพใ—ใŸใ€‚

ๆœฌ่„†ๅผฑๆ€งใฎ่ฉณ็ดฐใซใคใ„ใฆใฏใ€ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃๅ‹งๅ‘Šใ‚’ใ”ๅ‚็…งใใ ใ•ใ„ใ€‚


ใ”่ณชๅ•ใ‚„ใ”ๆ‡ธๅฟตใŒใ”ใ–ใ„ใพใ—ใŸใ‚‰ใ€GitHub Discussionsใ€Matrixใƒใƒฃใƒƒใƒˆใ‚นใƒšใƒผใ‚นใ€ใพใŸใฏDiscordใ‚ตใƒผใƒใƒผใพใงใŠๆฐ—่ปฝใซใ”้€ฃ็ตกใใ ใ•ใ„ใ€‚

08956495

@08956495@infosec.exchange

If you are a admin running libraries on keep an eye on this: nvd.nist.gov/vuln/detail/CVE-2

08956495

@08956495@infosec.exchange

If you are a admin running libraries on keep an eye on this: nvd.nist.gov/vuln/detail/CVE-2

08956495

@08956495@infosec.exchange

If you are a admin running libraries on keep an eye on this: nvd.nist.gov/vuln/detail/CVE-2

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ใฎWebFingerๅฎŸ่ฃ…ใซใŠใ‘ใ‚‹่„†ๅผฑๆ€งCVE-2025-23221ใซๅฏพใ™ใ‚‹ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ๏ผˆ1.0.14ใ€1.1.11ใ€1.2.11ใ€1.3.4๏ผ‰ใ‚’ใƒชใƒชใƒผใ‚นใ„ใŸใ—ใพใ—ใŸใ€‚ใ™ในใฆใฎใƒฆใƒผใ‚ถใƒผๆง˜ใซใŠใ‹ใ‚Œใพใ—ใฆใฏใ€ใŠไฝฟใ„ใฎใƒใƒผใ‚ธใƒงใƒณใซๅฟœใ˜ใŸๆœ€ๆ–ฐ็‰ˆใธใฎ้€Ÿใ‚„ใ‹ใชใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใ‚’ๆŽจๅฅจใ„ใŸใ—ใพใ™ใ€‚

่„†ๅผฑๆ€งใฎ่ฉณ็ดฐ

ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃ็ ”็ฉถ่€…ใซใ‚ˆใ‚Šใ€FedifyใฎlookupWebFinger()้–ขๆ•ฐใซใŠใ„ใฆไปฅไธ‹ใฎใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃไธŠใฎๅ•้กŒใŒ็™บ่ฆ‹ใ•ใ‚Œใพใ—ใŸ๏ผš

  • ็„ก้™ใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใƒซใƒผใƒ—ใซใ‚ˆใ‚‹ใ‚ตใƒผใƒ“ใ‚นๆ‹’ๅฆๆ”ปๆ’ƒ๏ผˆDoS๏ผ‰ใฎๅฏ่ƒฝๆ€ง
  • ใƒ—ใƒฉใ‚คใƒ™ใƒผใƒˆใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใ‚ขใƒ‰ใƒฌใ‚นใธใฎใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใ‚’ๅˆฉ็”จใ—ใŸSSRF๏ผˆใ‚ตใƒผใƒใƒผใ‚ตใ‚คใƒ‰ใƒชใ‚ฏใ‚จใ‚นใƒˆใƒ•ใ‚ฉใƒผใ‚ธใ‚งใƒช๏ผ‰ๆ”ปๆ’ƒใฎๅฏ่ƒฝๆ€ง
  • ใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆๆ“ไฝœใซใ‚ˆใ‚‹ๆ„ๅ›ณใ—ใชใ„URLใ‚นใ‚ญใƒผใƒ ใธใฎใ‚ขใ‚ฏใ‚ปใ‚นใฎๅฏ่ƒฝๆ€ง

ไฟฎๆญฃใ•ใ‚ŒใŸใƒใƒผใ‚ธใƒงใƒณ

  • 1.3.xใ‚ทใƒชใƒผใ‚บ๏ผš1.3.4ใธใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ
  • 1.2.xใ‚ทใƒชใƒผใ‚บ๏ผš1.2.11ใธใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ
  • 1.1.xใ‚ทใƒชใƒผใ‚บ๏ผš1.1.11ใธใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ
  • 1.0.xใ‚ทใƒชใƒผใ‚บ๏ผš1.0.14ใธใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ

ๅค‰ๆ›ดๅ†…ๅฎน

ๆœฌใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใงใฏใ€ไปฅไธ‹ใฎไฟฎๆญฃใŒๅฎŸๆ–ฝใ•ใ‚Œใพใ—ใŸ๏ผš

  1. ็„ก้™ใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใƒซใƒผใƒ—ใ‚’้˜ฒใใŸใ‚ใ€ๆœ€ๅคงใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆๅ›žๆ•ฐ๏ผˆ5ๅ›ž๏ผ‰ใฎๅˆถ้™ใ‚’ๅฐŽๅ…ฅ
  2. ๅ…ƒใฎใƒชใ‚ฏใ‚จใ‚นใƒˆใจๅŒใ˜ใ‚นใ‚ญใƒผใƒ ๏ผˆHTTP/HTTPS๏ผ‰ใฎใฟใซใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใ‚’ๅˆถ้™
  3. SSRFใ‚’้˜ฒๆญขใ™ใ‚‹ใŸใ‚ใ€ใƒ—ใƒฉใ‚คใƒ™ใƒผใƒˆใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใ‚ขใƒ‰ใƒฌใ‚นใธใฎใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใ‚’ใƒ–ใƒญใƒƒใ‚ฏ

ใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆๆ–นๆณ•

ไปฅไธ‹ใฎใ‚ณใƒžใƒณใƒ‰ใงๆœ€ๆ–ฐใฎใ‚ปใ‚ญใƒฅใ‚ขใƒใƒผใ‚ธใƒงใƒณใซใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใงใใพใ™๏ผš

# npmใƒฆใƒผใ‚ถใƒผใฎๅ ดๅˆ
npm update @fedify/fedify

# Denoใƒฆใƒผใ‚ถใƒผใฎๅ ดๅˆ
deno add jsr:@fedify/fedify

ใ“ใฎ่„†ๅผฑๆ€งใ‚’่ฒฌไปปใ‚’ๆŒใฃใฆๅ ฑๅ‘Šใ—ใฆใ„ใŸใ ใ„ใŸใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃ็ ”็ฉถ่€…ใฎๆ–นใซๆ„Ÿ่ฌ็”ณใ—ไธŠใ’ใพใ™ใ€‚่ฟ…้€ŸใชๅฏพๅฟœใŒๅฏ่ƒฝใจใชใ‚Šใพใ—ใŸใ€‚

ๆœฌ่„†ๅผฑๆ€งใฎ่ฉณ็ดฐใซใคใ„ใฆใฏใ€ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃๅ‹งๅ‘Šใ‚’ใ”ๅ‚็…งใใ ใ•ใ„ใ€‚


ใ”่ณชๅ•ใ‚„ใ”ๆ‡ธๅฟตใŒใ”ใ–ใ„ใพใ—ใŸใ‚‰ใ€GitHub Discussionsใ€Matrixใƒใƒฃใƒƒใƒˆใ‚นใƒšใƒผใ‚นใ€ใพใŸใฏDiscordใ‚ตใƒผใƒใƒผใพใงใŠๆฐ—่ปฝใซใ”้€ฃ็ตกใใ ใ•ใ„ใ€‚

08956495

@08956495@infosec.exchange

If you are a admin running libraries on keep an eye on this: nvd.nist.gov/vuln/detail/CVE-2

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

@fedify@hollo.social

We have released updates (1.0.14, 1.1.11, 1.2.11, 1.3.4) to address CVE-2025-23221, a in 's implementation. We recommend all users update to the latest version of their respective release series immediately.

The Vulnerability

A security researcher identified multiple security issues in Fedify's lookupWebFinger() function that could be exploited to:

  • Perform denial of service attacks through infinite redirect loops
  • Execute server-side request forgery () attacks via redirects to private network addresses
  • Access unintended URL schemes through redirect manipulation

Fixed Versions

  • 1.3.x series: Update to 1.3.4
  • 1.2.x series: Update to 1.2.11
  • 1.1.x series: Update to 1.1.11
  • 1.0.x series: Update to 1.0.14

Changes

The security updates implement the following fixes:

  1. Added a maximum redirect limit (5) to prevent infinite redirect loops
  2. Restricted redirects to only follow the same scheme as the original request (HTTP/HTTPS)
  3. Blocked redirects to private network addresses to prevent SSRF attacks

How to Update

To update to the latest secure version:

# For npm users
npm update @fedify/fedify

# For Deno users
deno add jsr:@fedify/fedify

We thank the security researcher who responsibly disclosed this vulnerability, allowing us to address these issues promptly.

For more details about this vulnerability, please refer to our security advisory.


If you have any questions or concerns, please don't hesitate to reach out through our GitHub Discussions, join our Matrix chat space, or our Discord server.

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

@fedify@hollo.social

We have released updates (1.0.14, 1.1.11, 1.2.11, 1.3.4) to address CVE-2025-23221, a in 's implementation. We recommend all users update to the latest version of their respective release series immediately.

The Vulnerability

A security researcher identified multiple security issues in Fedify's lookupWebFinger() function that could be exploited to:

  • Perform denial of service attacks through infinite redirect loops
  • Execute server-side request forgery () attacks via redirects to private network addresses
  • Access unintended URL schemes through redirect manipulation

Fixed Versions

  • 1.3.x series: Update to 1.3.4
  • 1.2.x series: Update to 1.2.11
  • 1.1.x series: Update to 1.1.11
  • 1.0.x series: Update to 1.0.14

Changes

The security updates implement the following fixes:

  1. Added a maximum redirect limit (5) to prevent infinite redirect loops
  2. Restricted redirects to only follow the same scheme as the original request (HTTP/HTTPS)
  3. Blocked redirects to private network addresses to prevent SSRF attacks

How to Update

To update to the latest secure version:

# For npm users
npm update @fedify/fedify

# For Deno users
deno add jsr:@fedify/fedify

We thank the security researcher who responsibly disclosed this vulnerability, allowing us to address these issues promptly.

For more details about this vulnerability, please refer to our security advisory.


If you have any questions or concerns, please don't hesitate to reach out through our GitHub Discussions, join our Matrix chat space, or our Discord server.

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

@fedify@hollo.social

We have released updates (1.0.14, 1.1.11, 1.2.11, 1.3.4) to address CVE-2025-23221, a in 's implementation. We recommend all users update to the latest version of their respective release series immediately.

The Vulnerability

A security researcher identified multiple security issues in Fedify's lookupWebFinger() function that could be exploited to:

  • Perform denial of service attacks through infinite redirect loops
  • Execute server-side request forgery () attacks via redirects to private network addresses
  • Access unintended URL schemes through redirect manipulation

Fixed Versions

  • 1.3.x series: Update to 1.3.4
  • 1.2.x series: Update to 1.2.11
  • 1.1.x series: Update to 1.1.11
  • 1.0.x series: Update to 1.0.14

Changes

The security updates implement the following fixes:

  1. Added a maximum redirect limit (5) to prevent infinite redirect loops
  2. Restricted redirects to only follow the same scheme as the original request (HTTP/HTTPS)
  3. Blocked redirects to private network addresses to prevent SSRF attacks

How to Update

To update to the latest secure version:

# For npm users
npm update @fedify/fedify

# For Deno users
deno add jsr:@fedify/fedify

We thank the security researcher who responsibly disclosed this vulnerability, allowing us to address these issues promptly.

For more details about this vulnerability, please refer to our security advisory.


If you have any questions or concerns, please don't hesitate to reach out through our GitHub Discussions, join our Matrix chat space, or our Discord server.

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

@fedify@hollo.social

We have released updates (1.0.14, 1.1.11, 1.2.11, 1.3.4) to address CVE-2025-23221, a in 's implementation. We recommend all users update to the latest version of their respective release series immediately.

The Vulnerability

A security researcher identified multiple security issues in Fedify's lookupWebFinger() function that could be exploited to:

  • Perform denial of service attacks through infinite redirect loops
  • Execute server-side request forgery () attacks via redirects to private network addresses
  • Access unintended URL schemes through redirect manipulation

Fixed Versions

  • 1.3.x series: Update to 1.3.4
  • 1.2.x series: Update to 1.2.11
  • 1.1.x series: Update to 1.1.11
  • 1.0.x series: Update to 1.0.14

Changes

The security updates implement the following fixes:

  1. Added a maximum redirect limit (5) to prevent infinite redirect loops
  2. Restricted redirects to only follow the same scheme as the original request (HTTP/HTTPS)
  3. Blocked redirects to private network addresses to prevent SSRF attacks

How to Update

To update to the latest secure version:

# For npm users
npm update @fedify/fedify

# For Deno users
deno add jsr:@fedify/fedify

We thank the security researcher who responsibly disclosed this vulnerability, allowing us to address these issues promptly.

For more details about this vulnerability, please refer to our security advisory.


If you have any questions or concerns, please don't hesitate to reach out through our GitHub Discussions, join our Matrix chat space, or our Discord server.

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ใฎWebFingerๅฎŸ่ฃ…ใซใŠใ‘ใ‚‹่„†ๅผฑๆ€งCVE-2025-23221ใซๅฏพใ™ใ‚‹ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ๏ผˆ1.0.14ใ€1.1.11ใ€1.2.11ใ€1.3.4๏ผ‰ใ‚’ใƒชใƒชใƒผใ‚นใ„ใŸใ—ใพใ—ใŸใ€‚ใ™ในใฆใฎใƒฆใƒผใ‚ถใƒผๆง˜ใซใŠใ‹ใ‚Œใพใ—ใฆใฏใ€ใŠไฝฟใ„ใฎใƒใƒผใ‚ธใƒงใƒณใซๅฟœใ˜ใŸๆœ€ๆ–ฐ็‰ˆใธใฎ้€Ÿใ‚„ใ‹ใชใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใ‚’ๆŽจๅฅจใ„ใŸใ—ใพใ™ใ€‚

่„†ๅผฑๆ€งใฎ่ฉณ็ดฐ

ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃ็ ”็ฉถ่€…ใซใ‚ˆใ‚Šใ€FedifyใฎlookupWebFinger()้–ขๆ•ฐใซใŠใ„ใฆไปฅไธ‹ใฎใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃไธŠใฎๅ•้กŒใŒ็™บ่ฆ‹ใ•ใ‚Œใพใ—ใŸ๏ผš

  • ็„ก้™ใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใƒซใƒผใƒ—ใซใ‚ˆใ‚‹ใ‚ตใƒผใƒ“ใ‚นๆ‹’ๅฆๆ”ปๆ’ƒ๏ผˆDoS๏ผ‰ใฎๅฏ่ƒฝๆ€ง
  • ใƒ—ใƒฉใ‚คใƒ™ใƒผใƒˆใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใ‚ขใƒ‰ใƒฌใ‚นใธใฎใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใ‚’ๅˆฉ็”จใ—ใŸSSRF๏ผˆใ‚ตใƒผใƒใƒผใ‚ตใ‚คใƒ‰ใƒชใ‚ฏใ‚จใ‚นใƒˆใƒ•ใ‚ฉใƒผใ‚ธใ‚งใƒช๏ผ‰ๆ”ปๆ’ƒใฎๅฏ่ƒฝๆ€ง
  • ใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆๆ“ไฝœใซใ‚ˆใ‚‹ๆ„ๅ›ณใ—ใชใ„URLใ‚นใ‚ญใƒผใƒ ใธใฎใ‚ขใ‚ฏใ‚ปใ‚นใฎๅฏ่ƒฝๆ€ง

ไฟฎๆญฃใ•ใ‚ŒใŸใƒใƒผใ‚ธใƒงใƒณ

  • 1.3.xใ‚ทใƒชใƒผใ‚บ๏ผš1.3.4ใธใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ
  • 1.2.xใ‚ทใƒชใƒผใ‚บ๏ผš1.2.11ใธใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ
  • 1.1.xใ‚ทใƒชใƒผใ‚บ๏ผš1.1.11ใธใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ
  • 1.0.xใ‚ทใƒชใƒผใ‚บ๏ผš1.0.14ใธใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ

ๅค‰ๆ›ดๅ†…ๅฎน

ๆœฌใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใงใฏใ€ไปฅไธ‹ใฎไฟฎๆญฃใŒๅฎŸๆ–ฝใ•ใ‚Œใพใ—ใŸ๏ผš

  1. ็„ก้™ใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใƒซใƒผใƒ—ใ‚’้˜ฒใใŸใ‚ใ€ๆœ€ๅคงใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆๅ›žๆ•ฐ๏ผˆ5ๅ›ž๏ผ‰ใฎๅˆถ้™ใ‚’ๅฐŽๅ…ฅ
  2. ๅ…ƒใฎใƒชใ‚ฏใ‚จใ‚นใƒˆใจๅŒใ˜ใ‚นใ‚ญใƒผใƒ ๏ผˆHTTP/HTTPS๏ผ‰ใฎใฟใซใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใ‚’ๅˆถ้™
  3. SSRFใ‚’้˜ฒๆญขใ™ใ‚‹ใŸใ‚ใ€ใƒ—ใƒฉใ‚คใƒ™ใƒผใƒˆใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใ‚ขใƒ‰ใƒฌใ‚นใธใฎใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใ‚’ใƒ–ใƒญใƒƒใ‚ฏ

ใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆๆ–นๆณ•

ไปฅไธ‹ใฎใ‚ณใƒžใƒณใƒ‰ใงๆœ€ๆ–ฐใฎใ‚ปใ‚ญใƒฅใ‚ขใƒใƒผใ‚ธใƒงใƒณใซใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใงใใพใ™๏ผš

# npmใƒฆใƒผใ‚ถใƒผใฎๅ ดๅˆ
npm update @fedify/fedify

# Denoใƒฆใƒผใ‚ถใƒผใฎๅ ดๅˆ
deno add jsr:@fedify/fedify

ใ“ใฎ่„†ๅผฑๆ€งใ‚’่ฒฌไปปใ‚’ๆŒใฃใฆๅ ฑๅ‘Šใ—ใฆใ„ใŸใ ใ„ใŸใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃ็ ”็ฉถ่€…ใฎๆ–นใซๆ„Ÿ่ฌ็”ณใ—ไธŠใ’ใพใ™ใ€‚่ฟ…้€ŸใชๅฏพๅฟœใŒๅฏ่ƒฝใจใชใ‚Šใพใ—ใŸใ€‚

ๆœฌ่„†ๅผฑๆ€งใฎ่ฉณ็ดฐใซใคใ„ใฆใฏใ€ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃๅ‹งๅ‘Šใ‚’ใ”ๅ‚็…งใใ ใ•ใ„ใ€‚


ใ”่ณชๅ•ใ‚„ใ”ๆ‡ธๅฟตใŒใ”ใ–ใ„ใพใ—ใŸใ‚‰ใ€GitHub Discussionsใ€Matrixใƒใƒฃใƒƒใƒˆใ‚นใƒšใƒผใ‚นใ€ใพใŸใฏDiscordใ‚ตใƒผใƒใƒผใพใงใŠๆฐ—่ปฝใซใ”้€ฃ็ตกใใ ใ•ใ„ใ€‚

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

@fedify@hollo.social

We have released updates (1.0.14, 1.1.11, 1.2.11, 1.3.4) to address CVE-2025-23221, a in 's implementation. We recommend all users update to the latest version of their respective release series immediately.

The Vulnerability

A security researcher identified multiple security issues in Fedify's lookupWebFinger() function that could be exploited to:

  • Perform denial of service attacks through infinite redirect loops
  • Execute server-side request forgery () attacks via redirects to private network addresses
  • Access unintended URL schemes through redirect manipulation

Fixed Versions

  • 1.3.x series: Update to 1.3.4
  • 1.2.x series: Update to 1.2.11
  • 1.1.x series: Update to 1.1.11
  • 1.0.x series: Update to 1.0.14

Changes

The security updates implement the following fixes:

  1. Added a maximum redirect limit (5) to prevent infinite redirect loops
  2. Restricted redirects to only follow the same scheme as the original request (HTTP/HTTPS)
  3. Blocked redirects to private network addresses to prevent SSRF attacks

How to Update

To update to the latest secure version:

# For npm users
npm update @fedify/fedify

# For Deno users
deno add jsr:@fedify/fedify

We thank the security researcher who responsibly disclosed this vulnerability, allowing us to address these issues promptly.

For more details about this vulnerability, please refer to our security advisory.


If you have any questions or concerns, please don't hesitate to reach out through our GitHub Discussions, join our Matrix chat space, or our Discord server.

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ใฎWebFingerๅฎŸ่ฃ…ใซใŠใ‘ใ‚‹่„†ๅผฑๆ€งCVE-2025-23221ใซๅฏพใ™ใ‚‹ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ๏ผˆ1.0.14ใ€1.1.11ใ€1.2.11ใ€1.3.4๏ผ‰ใ‚’ใƒชใƒชใƒผใ‚นใ„ใŸใ—ใพใ—ใŸใ€‚ใ™ในใฆใฎใƒฆใƒผใ‚ถใƒผๆง˜ใซใŠใ‹ใ‚Œใพใ—ใฆใฏใ€ใŠไฝฟใ„ใฎใƒใƒผใ‚ธใƒงใƒณใซๅฟœใ˜ใŸๆœ€ๆ–ฐ็‰ˆใธใฎ้€Ÿใ‚„ใ‹ใชใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใ‚’ๆŽจๅฅจใ„ใŸใ—ใพใ™ใ€‚

่„†ๅผฑๆ€งใฎ่ฉณ็ดฐ

ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃ็ ”็ฉถ่€…ใซใ‚ˆใ‚Šใ€FedifyใฎlookupWebFinger()้–ขๆ•ฐใซใŠใ„ใฆไปฅไธ‹ใฎใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃไธŠใฎๅ•้กŒใŒ็™บ่ฆ‹ใ•ใ‚Œใพใ—ใŸ๏ผš

  • ็„ก้™ใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใƒซใƒผใƒ—ใซใ‚ˆใ‚‹ใ‚ตใƒผใƒ“ใ‚นๆ‹’ๅฆๆ”ปๆ’ƒ๏ผˆDoS๏ผ‰ใฎๅฏ่ƒฝๆ€ง
  • ใƒ—ใƒฉใ‚คใƒ™ใƒผใƒˆใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใ‚ขใƒ‰ใƒฌใ‚นใธใฎใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใ‚’ๅˆฉ็”จใ—ใŸSSRF๏ผˆใ‚ตใƒผใƒใƒผใ‚ตใ‚คใƒ‰ใƒชใ‚ฏใ‚จใ‚นใƒˆใƒ•ใ‚ฉใƒผใ‚ธใ‚งใƒช๏ผ‰ๆ”ปๆ’ƒใฎๅฏ่ƒฝๆ€ง
  • ใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆๆ“ไฝœใซใ‚ˆใ‚‹ๆ„ๅ›ณใ—ใชใ„URLใ‚นใ‚ญใƒผใƒ ใธใฎใ‚ขใ‚ฏใ‚ปใ‚นใฎๅฏ่ƒฝๆ€ง

ไฟฎๆญฃใ•ใ‚ŒใŸใƒใƒผใ‚ธใƒงใƒณ

  • 1.3.xใ‚ทใƒชใƒผใ‚บ๏ผš1.3.4ใธใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ
  • 1.2.xใ‚ทใƒชใƒผใ‚บ๏ผš1.2.11ใธใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ
  • 1.1.xใ‚ทใƒชใƒผใ‚บ๏ผš1.1.11ใธใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ
  • 1.0.xใ‚ทใƒชใƒผใ‚บ๏ผš1.0.14ใธใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ

ๅค‰ๆ›ดๅ†…ๅฎน

ๆœฌใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใงใฏใ€ไปฅไธ‹ใฎไฟฎๆญฃใŒๅฎŸๆ–ฝใ•ใ‚Œใพใ—ใŸ๏ผš

  1. ็„ก้™ใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใƒซใƒผใƒ—ใ‚’้˜ฒใใŸใ‚ใ€ๆœ€ๅคงใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆๅ›žๆ•ฐ๏ผˆ5ๅ›ž๏ผ‰ใฎๅˆถ้™ใ‚’ๅฐŽๅ…ฅ
  2. ๅ…ƒใฎใƒชใ‚ฏใ‚จใ‚นใƒˆใจๅŒใ˜ใ‚นใ‚ญใƒผใƒ ๏ผˆHTTP/HTTPS๏ผ‰ใฎใฟใซใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใ‚’ๅˆถ้™
  3. SSRFใ‚’้˜ฒๆญขใ™ใ‚‹ใŸใ‚ใ€ใƒ—ใƒฉใ‚คใƒ™ใƒผใƒˆใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใ‚ขใƒ‰ใƒฌใ‚นใธใฎใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใ‚’ใƒ–ใƒญใƒƒใ‚ฏ

ใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆๆ–นๆณ•

ไปฅไธ‹ใฎใ‚ณใƒžใƒณใƒ‰ใงๆœ€ๆ–ฐใฎใ‚ปใ‚ญใƒฅใ‚ขใƒใƒผใ‚ธใƒงใƒณใซใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใงใใพใ™๏ผš

# npmใƒฆใƒผใ‚ถใƒผใฎๅ ดๅˆ
npm update @fedify/fedify

# Denoใƒฆใƒผใ‚ถใƒผใฎๅ ดๅˆ
deno add jsr:@fedify/fedify

ใ“ใฎ่„†ๅผฑๆ€งใ‚’่ฒฌไปปใ‚’ๆŒใฃใฆๅ ฑๅ‘Šใ—ใฆใ„ใŸใ ใ„ใŸใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃ็ ”็ฉถ่€…ใฎๆ–นใซๆ„Ÿ่ฌ็”ณใ—ไธŠใ’ใพใ™ใ€‚่ฟ…้€ŸใชๅฏพๅฟœใŒๅฏ่ƒฝใจใชใ‚Šใพใ—ใŸใ€‚

ๆœฌ่„†ๅผฑๆ€งใฎ่ฉณ็ดฐใซใคใ„ใฆใฏใ€ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃๅ‹งๅ‘Šใ‚’ใ”ๅ‚็…งใใ ใ•ใ„ใ€‚


ใ”่ณชๅ•ใ‚„ใ”ๆ‡ธๅฟตใŒใ”ใ–ใ„ใพใ—ใŸใ‚‰ใ€GitHub Discussionsใ€Matrixใƒใƒฃใƒƒใƒˆใ‚นใƒšใƒผใ‚นใ€ใพใŸใฏDiscordใ‚ตใƒผใƒใƒผใพใงใŠๆฐ—่ปฝใซใ”้€ฃ็ตกใใ ใ•ใ„ใ€‚

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

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

ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ตฌํ˜„์—์„œ ๋ฐœ๊ฒฌ๋œ ๋ณด์•ˆ ์ทจ์•ฝ์  CVE-2025-23221์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ณด์•ˆ ์—…๋ฐ์ดํŠธ(1.0.14, 1.1.11, 1.2.11, 1.3.4)๋ฅผ ๋ฐฐํฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ป˜์„œ๋Š” ๊ฐ์ž ์‚ฌ์šฉ ์ค‘์ธ ๋ฒ„์ „์— ํ•ด๋‹นํ•˜๋Š” ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์ฆ‰์‹œ ์—…๋ฐ์ดํŠธํ•˜์‹œ๊ธฐ๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

์ทจ์•ฝ์  ๋‚ด์šฉ

๋ณด์•ˆ ์—ฐ๊ตฌ์ž๊ฐ€ Fedify์˜ lookupWebFinger() ํ•จ์ˆ˜์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ณด์•ˆ ๋ฌธ์ œ์ ๋“ค์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค:

  • ๋ฌดํ•œ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ๋ฃจํ”„๋ฅผ ํ†ตํ•œ ์„œ๋น„์Šค ๊ฑฐ๋ถ€ ๊ณต๊ฒฉ ๊ฐ€๋Šฅ
  • ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ๋กœ์˜ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋ฅผ ํ†ตํ•œ SSRF (์„œ๋ฒ„์ธก ์š”์ฒญ ์œ„์กฐ) ๊ณต๊ฒฉ ๊ฐ€๋Šฅ
  • ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์กฐ์ž‘์„ ํ†ตํ•œ ์˜๋„ํ•˜์ง€ ์•Š์€ URL ์Šคํ‚ด ์ ‘๊ทผ ๊ฐ€๋Šฅ

์ˆ˜์ •๋œ ๋ฒ„์ „

  • 1.3.x ์‹œ๋ฆฌ์ฆˆ: 1.3.4๋กœ ์—…๋ฐ์ดํŠธ
  • 1.2.x ์‹œ๋ฆฌ์ฆˆ: 1.2.11๋กœ ์—…๋ฐ์ดํŠธ
  • 1.1.x ์‹œ๋ฆฌ์ฆˆ: 1.1.11๋กœ ์—…๋ฐ์ดํŠธ
  • 1.0.x ์‹œ๋ฆฌ์ฆˆ: 1.0.14๋กœ ์—…๋ฐ์ดํŠธ

๋ณ€๊ฒฝ ์‚ฌํ•ญ

์ด๋ฒˆ ๋ณด์•ˆ ์—…๋ฐ์ดํŠธ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆ˜์ • ์‚ฌํ•ญ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค:

  1. ๋ฌดํ•œ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ๋ฃจํ”„๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ตœ๋Œ€ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ํšŸ์ˆ˜ ์ œํ•œ(5ํšŒ) ๋„์ž…
  2. ์›๋ž˜ ์š”์ฒญ๊ณผ ๋™์ผํ•œ ์Šคํ‚ด(HTTP/HTTPS)์œผ๋กœ๋งŒ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ํ—ˆ์šฉํ•˜๋„๋ก ์ œํ•œ
  3. SSRF ๊ณต๊ฒฉ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ๋กœ์˜ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์ฐจ๋‹จ

์—…๋ฐ์ดํŠธ ๋ฐฉ๋ฒ•

๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ์ตœ์‹  ๋ณด์•ˆ ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

# npm ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ
npm update @fedify/fedify

# Deno ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ
deno add jsr:@fedify/fedify

์ด ์ทจ์•ฝ์ ์„ ์ฑ…์ž„๊ฐ ์žˆ๊ฒŒ ๋ณด๊ณ ํ•ด ์ฃผ์‹  ๋ณด์•ˆ ์—ฐ๊ตฌ์ž๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋•๋ถ„์— ์‹ ์†ํ•˜๊ฒŒ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ์ทจ์•ฝ์ ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ณด์•ˆ ๊ถŒ๊ณ ๋ฌธ์„ ์ฐธ๊ณ ํ•ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.


๋ฌธ์˜ ์‚ฌํ•ญ์ด๋‚˜ ์šฐ๋ ค ์‚ฌํ•ญ์ด ์žˆ์œผ์‹œ๋‹ค๋ฉด GitHub Discussions๋‚˜ Matrix ์ฑ„ํŒ…๋ฐฉ, ๋˜๋Š” Discord ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์–ธ์ œ๋“  ์—ฐ๋ฝํ•ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

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ใฎWebFingerๅฎŸ่ฃ…ใซใŠใ‘ใ‚‹่„†ๅผฑๆ€งCVE-2025-23221ใซๅฏพใ™ใ‚‹ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ๏ผˆ1.0.14ใ€1.1.11ใ€1.2.11ใ€1.3.4๏ผ‰ใ‚’ใƒชใƒชใƒผใ‚นใ„ใŸใ—ใพใ—ใŸใ€‚ใ™ในใฆใฎใƒฆใƒผใ‚ถใƒผๆง˜ใซใŠใ‹ใ‚Œใพใ—ใฆใฏใ€ใŠไฝฟใ„ใฎใƒใƒผใ‚ธใƒงใƒณใซๅฟœใ˜ใŸๆœ€ๆ–ฐ็‰ˆใธใฎ้€Ÿใ‚„ใ‹ใชใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใ‚’ๆŽจๅฅจใ„ใŸใ—ใพใ™ใ€‚

่„†ๅผฑๆ€งใฎ่ฉณ็ดฐ

ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃ็ ”็ฉถ่€…ใซใ‚ˆใ‚Šใ€FedifyใฎlookupWebFinger()้–ขๆ•ฐใซใŠใ„ใฆไปฅไธ‹ใฎใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃไธŠใฎๅ•้กŒใŒ็™บ่ฆ‹ใ•ใ‚Œใพใ—ใŸ๏ผš

  • ็„ก้™ใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใƒซใƒผใƒ—ใซใ‚ˆใ‚‹ใ‚ตใƒผใƒ“ใ‚นๆ‹’ๅฆๆ”ปๆ’ƒ๏ผˆDoS๏ผ‰ใฎๅฏ่ƒฝๆ€ง
  • ใƒ—ใƒฉใ‚คใƒ™ใƒผใƒˆใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใ‚ขใƒ‰ใƒฌใ‚นใธใฎใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใ‚’ๅˆฉ็”จใ—ใŸSSRF๏ผˆใ‚ตใƒผใƒใƒผใ‚ตใ‚คใƒ‰ใƒชใ‚ฏใ‚จใ‚นใƒˆใƒ•ใ‚ฉใƒผใ‚ธใ‚งใƒช๏ผ‰ๆ”ปๆ’ƒใฎๅฏ่ƒฝๆ€ง
  • ใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆๆ“ไฝœใซใ‚ˆใ‚‹ๆ„ๅ›ณใ—ใชใ„URLใ‚นใ‚ญใƒผใƒ ใธใฎใ‚ขใ‚ฏใ‚ปใ‚นใฎๅฏ่ƒฝๆ€ง

ไฟฎๆญฃใ•ใ‚ŒใŸใƒใƒผใ‚ธใƒงใƒณ

  • 1.3.xใ‚ทใƒชใƒผใ‚บ๏ผš1.3.4ใธใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ
  • 1.2.xใ‚ทใƒชใƒผใ‚บ๏ผš1.2.11ใธใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ
  • 1.1.xใ‚ทใƒชใƒผใ‚บ๏ผš1.1.11ใธใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ
  • 1.0.xใ‚ทใƒชใƒผใ‚บ๏ผš1.0.14ใธใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆ

ๅค‰ๆ›ดๅ†…ๅฎน

ๆœฌใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใงใฏใ€ไปฅไธ‹ใฎไฟฎๆญฃใŒๅฎŸๆ–ฝใ•ใ‚Œใพใ—ใŸ๏ผš

  1. ็„ก้™ใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใƒซใƒผใƒ—ใ‚’้˜ฒใใŸใ‚ใ€ๆœ€ๅคงใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆๅ›žๆ•ฐ๏ผˆ5ๅ›ž๏ผ‰ใฎๅˆถ้™ใ‚’ๅฐŽๅ…ฅ
  2. ๅ…ƒใฎใƒชใ‚ฏใ‚จใ‚นใƒˆใจๅŒใ˜ใ‚นใ‚ญใƒผใƒ ๏ผˆHTTP/HTTPS๏ผ‰ใฎใฟใซใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใ‚’ๅˆถ้™
  3. SSRFใ‚’้˜ฒๆญขใ™ใ‚‹ใŸใ‚ใ€ใƒ—ใƒฉใ‚คใƒ™ใƒผใƒˆใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใ‚ขใƒ‰ใƒฌใ‚นใธใฎใƒชใƒ€ใ‚คใƒฌใ‚ฏใƒˆใ‚’ใƒ–ใƒญใƒƒใ‚ฏ

ใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆๆ–นๆณ•

ไปฅไธ‹ใฎใ‚ณใƒžใƒณใƒ‰ใงๆœ€ๆ–ฐใฎใ‚ปใ‚ญใƒฅใ‚ขใƒใƒผใ‚ธใƒงใƒณใซใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใงใใพใ™๏ผš

# npmใƒฆใƒผใ‚ถใƒผใฎๅ ดๅˆ
npm update @fedify/fedify

# Denoใƒฆใƒผใ‚ถใƒผใฎๅ ดๅˆ
deno add jsr:@fedify/fedify

ใ“ใฎ่„†ๅผฑๆ€งใ‚’่ฒฌไปปใ‚’ๆŒใฃใฆๅ ฑๅ‘Šใ—ใฆใ„ใŸใ ใ„ใŸใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃ็ ”็ฉถ่€…ใฎๆ–นใซๆ„Ÿ่ฌ็”ณใ—ไธŠใ’ใพใ™ใ€‚่ฟ…้€ŸใชๅฏพๅฟœใŒๅฏ่ƒฝใจใชใ‚Šใพใ—ใŸใ€‚

ๆœฌ่„†ๅผฑๆ€งใฎ่ฉณ็ดฐใซใคใ„ใฆใฏใ€ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃๅ‹งๅ‘Šใ‚’ใ”ๅ‚็…งใใ ใ•ใ„ใ€‚


ใ”่ณชๅ•ใ‚„ใ”ๆ‡ธๅฟตใŒใ”ใ–ใ„ใพใ—ใŸใ‚‰ใ€GitHub Discussionsใ€Matrixใƒใƒฃใƒƒใƒˆใ‚นใƒšใƒผใ‚นใ€ใพใŸใฏDiscordใ‚ตใƒผใƒใƒผใพใงใŠๆฐ—่ปฝใซใ”้€ฃ็ตกใใ ใ•ใ„ใ€‚

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

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

ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ตฌํ˜„์—์„œ ๋ฐœ๊ฒฌ๋œ ๋ณด์•ˆ ์ทจ์•ฝ์  CVE-2025-23221์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ณด์•ˆ ์—…๋ฐ์ดํŠธ(1.0.14, 1.1.11, 1.2.11, 1.3.4)๋ฅผ ๋ฐฐํฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ป˜์„œ๋Š” ๊ฐ์ž ์‚ฌ์šฉ ์ค‘์ธ ๋ฒ„์ „์— ํ•ด๋‹นํ•˜๋Š” ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์ฆ‰์‹œ ์—…๋ฐ์ดํŠธํ•˜์‹œ๊ธฐ๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

์ทจ์•ฝ์  ๋‚ด์šฉ

๋ณด์•ˆ ์—ฐ๊ตฌ์ž๊ฐ€ Fedify์˜ lookupWebFinger() ํ•จ์ˆ˜์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ณด์•ˆ ๋ฌธ์ œ์ ๋“ค์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค:

  • ๋ฌดํ•œ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ๋ฃจํ”„๋ฅผ ํ†ตํ•œ ์„œ๋น„์Šค ๊ฑฐ๋ถ€ ๊ณต๊ฒฉ ๊ฐ€๋Šฅ
  • ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ๋กœ์˜ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋ฅผ ํ†ตํ•œ SSRF (์„œ๋ฒ„์ธก ์š”์ฒญ ์œ„์กฐ) ๊ณต๊ฒฉ ๊ฐ€๋Šฅ
  • ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์กฐ์ž‘์„ ํ†ตํ•œ ์˜๋„ํ•˜์ง€ ์•Š์€ URL ์Šคํ‚ด ์ ‘๊ทผ ๊ฐ€๋Šฅ

์ˆ˜์ •๋œ ๋ฒ„์ „

  • 1.3.x ์‹œ๋ฆฌ์ฆˆ: 1.3.4๋กœ ์—…๋ฐ์ดํŠธ
  • 1.2.x ์‹œ๋ฆฌ์ฆˆ: 1.2.11๋กœ ์—…๋ฐ์ดํŠธ
  • 1.1.x ์‹œ๋ฆฌ์ฆˆ: 1.1.11๋กœ ์—…๋ฐ์ดํŠธ
  • 1.0.x ์‹œ๋ฆฌ์ฆˆ: 1.0.14๋กœ ์—…๋ฐ์ดํŠธ

๋ณ€๊ฒฝ ์‚ฌํ•ญ

์ด๋ฒˆ ๋ณด์•ˆ ์—…๋ฐ์ดํŠธ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆ˜์ • ์‚ฌํ•ญ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค:

  1. ๋ฌดํ•œ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ๋ฃจํ”„๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ตœ๋Œ€ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ํšŸ์ˆ˜ ์ œํ•œ(5ํšŒ) ๋„์ž…
  2. ์›๋ž˜ ์š”์ฒญ๊ณผ ๋™์ผํ•œ ์Šคํ‚ด(HTTP/HTTPS)์œผ๋กœ๋งŒ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ํ—ˆ์šฉํ•˜๋„๋ก ์ œํ•œ
  3. SSRF ๊ณต๊ฒฉ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ๋กœ์˜ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์ฐจ๋‹จ

์—…๋ฐ์ดํŠธ ๋ฐฉ๋ฒ•

๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ์ตœ์‹  ๋ณด์•ˆ ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

# npm ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ
npm update @fedify/fedify

# Deno ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ
deno add jsr:@fedify/fedify

์ด ์ทจ์•ฝ์ ์„ ์ฑ…์ž„๊ฐ ์žˆ๊ฒŒ ๋ณด๊ณ ํ•ด ์ฃผ์‹  ๋ณด์•ˆ ์—ฐ๊ตฌ์ž๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋•๋ถ„์— ์‹ ์†ํ•˜๊ฒŒ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ์ทจ์•ฝ์ ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ณด์•ˆ ๊ถŒ๊ณ ๋ฌธ์„ ์ฐธ๊ณ ํ•ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.


๋ฌธ์˜ ์‚ฌํ•ญ์ด๋‚˜ ์šฐ๋ ค ์‚ฌํ•ญ์ด ์žˆ์œผ์‹œ๋‹ค๋ฉด GitHub Discussions๋‚˜ Matrix ์ฑ„ํŒ…๋ฐฉ, ๋˜๋Š” Discord ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์–ธ์ œ๋“  ์—ฐ๋ฝํ•ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

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

@fedify@hollo.social

We have released updates (1.0.14, 1.1.11, 1.2.11, 1.3.4) to address CVE-2025-23221, a in 's implementation. We recommend all users update to the latest version of their respective release series immediately.

The Vulnerability

A security researcher identified multiple security issues in Fedify's lookupWebFinger() function that could be exploited to:

  • Perform denial of service attacks through infinite redirect loops
  • Execute server-side request forgery () attacks via redirects to private network addresses
  • Access unintended URL schemes through redirect manipulation

Fixed Versions

  • 1.3.x series: Update to 1.3.4
  • 1.2.x series: Update to 1.2.11
  • 1.1.x series: Update to 1.1.11
  • 1.0.x series: Update to 1.0.14

Changes

The security updates implement the following fixes:

  1. Added a maximum redirect limit (5) to prevent infinite redirect loops
  2. Restricted redirects to only follow the same scheme as the original request (HTTP/HTTPS)
  3. Blocked redirects to private network addresses to prevent SSRF attacks

How to Update

To update to the latest secure version:

# For npm users
npm update @fedify/fedify

# For Deno users
deno add jsr:@fedify/fedify

We thank the security researcher who responsibly disclosed this vulnerability, allowing us to address these issues promptly.

For more details about this vulnerability, please refer to our security advisory.


If you have any questions or concerns, please don't hesitate to reach out through our GitHub Discussions, join our Matrix chat space, or our Discord server.

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

@fedify@hollo.social

We have released updates (1.0.14, 1.1.11, 1.2.11, 1.3.4) to address CVE-2025-23221, a in 's implementation. We recommend all users update to the latest version of their respective release series immediately.

The Vulnerability

A security researcher identified multiple security issues in Fedify's lookupWebFinger() function that could be exploited to:

  • Perform denial of service attacks through infinite redirect loops
  • Execute server-side request forgery () attacks via redirects to private network addresses
  • Access unintended URL schemes through redirect manipulation

Fixed Versions

  • 1.3.x series: Update to 1.3.4
  • 1.2.x series: Update to 1.2.11
  • 1.1.x series: Update to 1.1.11
  • 1.0.x series: Update to 1.0.14

Changes

The security updates implement the following fixes:

  1. Added a maximum redirect limit (5) to prevent infinite redirect loops
  2. Restricted redirects to only follow the same scheme as the original request (HTTP/HTTPS)
  3. Blocked redirects to private network addresses to prevent SSRF attacks

How to Update

To update to the latest secure version:

# For npm users
npm update @fedify/fedify

# For Deno users
deno add jsr:@fedify/fedify

We thank the security researcher who responsibly disclosed this vulnerability, allowing us to address these issues promptly.

For more details about this vulnerability, please refer to our security advisory.


If you have any questions or concerns, please don't hesitate to reach out through our GitHub Discussions, join our Matrix chat space, or our Discord server.

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

@fedify@hollo.social

We have released updates (1.0.14, 1.1.11, 1.2.11, 1.3.4) to address CVE-2025-23221, a in 's implementation. We recommend all users update to the latest version of their respective release series immediately.

The Vulnerability

A security researcher identified multiple security issues in Fedify's lookupWebFinger() function that could be exploited to:

  • Perform denial of service attacks through infinite redirect loops
  • Execute server-side request forgery () attacks via redirects to private network addresses
  • Access unintended URL schemes through redirect manipulation

Fixed Versions

  • 1.3.x series: Update to 1.3.4
  • 1.2.x series: Update to 1.2.11
  • 1.1.x series: Update to 1.1.11
  • 1.0.x series: Update to 1.0.14

Changes

The security updates implement the following fixes:

  1. Added a maximum redirect limit (5) to prevent infinite redirect loops
  2. Restricted redirects to only follow the same scheme as the original request (HTTP/HTTPS)
  3. Blocked redirects to private network addresses to prevent SSRF attacks

How to Update

To update to the latest secure version:

# For npm users
npm update @fedify/fedify

# For Deno users
deno add jsr:@fedify/fedify

We thank the security researcher who responsibly disclosed this vulnerability, allowing us to address these issues promptly.

For more details about this vulnerability, please refer to our security advisory.


If you have any questions or concerns, please don't hesitate to reach out through our GitHub Discussions, join our Matrix chat space, or our Discord server.

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

@fedify@hollo.social

Want to build your own implementation, but don't know where to start? Read and follow 's official tutorial, Creating your own federated microblog, and get started!

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

@fedify@hollo.social

Want to build your own implementation, but don't know where to start? Read and follow 's official tutorial, Creating your own federated microblog, and get started!

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

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

่‡ชๅˆ†ใ ใ‘ใฎActivityPubใ‚’ไฝœใ‚ŠใŸใ„ใ‘ใฉใ€ไฝ•ใ‹ใ‚‰ๅง‹ใ‚ใ‚Œใฐ่‰ฏใ„ใฎใ‹ๅˆ†ใ‹ใ‚‰ใชใ„ใงใ™ใ‹๏ผŸ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

์ž์‹ ๋งŒ์˜ ๊ตฌํ˜„์„ ํ•˜๊ณ  ์‹ถ์ง€๋งŒ, ์–ด๋””์„œ ์‹œ์ž‘ํ•ด์•ผ ํ• ์ง€ ๋ชจ๋ฅด๊ฒ ๋‚˜์š”? ๊ณต์‹ ํŠœํ† ๋ฆฌ์–ผ์ธ 〈๋‚˜๋งŒ์˜ ์—ฐํ•ฉ์šฐ์ฃผ ๋งˆ์ดํฌ๋กœ๋ธ”๋กœ๊ทธ ๋งŒ๋“ค๊ธฐ〉๋ฅผ ์ฝ๊ณ  ๋”ฐ๋ผํ•ด ๋ณด์„ธ์š”!

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

@fedify@hollo.social

Want to build your own implementation, but don't know where to start? Read and follow 's official tutorial, Creating your own federated microblog, and get started!

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

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

่‡ชๅˆ†ใ ใ‘ใฎActivityPubใ‚’ไฝœใ‚ŠใŸใ„ใ‘ใฉใ€ไฝ•ใ‹ใ‚‰ๅง‹ใ‚ใ‚Œใฐ่‰ฏใ„ใฎใ‹ๅˆ†ใ‹ใ‚‰ใชใ„ใงใ™ใ‹๏ผŸ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

์ž์‹ ๋งŒ์˜ ๊ตฌํ˜„์„ ํ•˜๊ณ  ์‹ถ์ง€๋งŒ, ์–ด๋””์„œ ์‹œ์ž‘ํ•ด์•ผ ํ• ์ง€ ๋ชจ๋ฅด๊ฒ ๋‚˜์š”? ๊ณต์‹ ํŠœํ† ๋ฆฌ์–ผ์ธ 〈๋‚˜๋งŒ์˜ ์—ฐํ•ฉ์šฐ์ฃผ ๋งˆ์ดํฌ๋กœ๋ธ”๋กœ๊ทธ ๋งŒ๋“ค๊ธฐ〉๋ฅผ ์ฝ๊ณ  ๋”ฐ๋ผํ•ด ๋ณด์„ธ์š”!

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

@fedify@hollo.social

Want to build your own implementation, but don't know where to start? Read and follow 's official tutorial, Creating your own federated microblog, and get started!

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

@fedify@hollo.social

Want to build your own implementation, but don't know where to start? Read and follow 's official tutorial, Creating your own federated microblog, and get started!

Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

Introducing . Hollo is an -enabled single-user microblogging software. Although it's for a single user, it also supports creating and running multiple accounts for different topics.

It's headless, meaning you can use existing client apps instead, with its Mastodon-compatible APIs. It has most feature parity with Mastodon. Two big differences with Mastodon is that you can use in the content of your posts and you can quote another post.

Oh, and Hollo is built using and .

https://github.com/dahlia/hollo

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

็งใ‚‚ๅพฎๅŠ›ใชใŒใ‚‰ใ€ŽThinking Penguin Magazine Vol.0ใ€ใซใ€Œๅ›ฝๆผขๆ–‡ๆทท็”จไฝ“ใ‹ใ‚‰Holloใพใงใ€ใจใ„ใ†ๆ‹™็จฟใ‚’ๅฏ„็จฟใ—ใพใ—ใŸใ€‚่ˆˆๅ‘ณใฎๆœ‰ใ‚‹ๆ–นใฏใ€็ฌฌๅไธ€ๅ›žๆŠ€่ก“ๆ›ธๅŒไบบ่ชŒๅš่ฆงไผšใงๆ‰‹ใซๅ…ฅใ‚Œใ‚‹ไบ‹ใŒๅ‡บๆฅใพใ™ใ€‚

https://msky.ospn.jp/notes/a35ankd6m2p80nev

Fediverse Linux Users Group's avatar
Fediverse Linux Users Group

@fedilug@msky.ospn.jp

ใ€ๆŠ€่ก“ๆ›ธๅŒไบบ่ชŒๅš่ฆงไผšใพใงใ‚ใจ๏ผ‘้€ฑ้–“โ€ผ๏ธใ€‘
ใฏๆฅ้€ฑใฎไปŠๆ—ฅใ€2025ๅนด1ๆœˆ25ๆ—ฅใซๆจชๆตœ็”ฃ่ฒฟใƒ›ใƒผใƒซ ใƒžใƒชใƒใƒชใ‚ขใง้–‹ๅ‚ฌใ•ใ‚Œใ‚‹็ฌฌ11ๅ›žๆŠ€่ก“ๆ›ธๅŒไบบ่ชŒๅš่ฆงไผš๏ผˆ ๏ผ‰ใซๅ‡บๅฑ•ใ—ใพใ™ใ€‚
ๆ–ฐๅˆŠใจใ—ใฆใ€ŽThinkng Penguin Magazine vol.0ใ€ใ‚’้ ’ๅธƒใ—ใพใ™๏ผ๏ผˆ124ใƒšใƒผใ‚ธใƒป500ๅ††๏ผ‰
ๅง”่จ—ใจใ—ใฆ
@naoki_wjm@k.my-sky.blue ใ•ใ‚“ใฎใ€Žใ•ใฐใ‹ใ‚“ใƒฉใ‚คใƒ•๏ผใ€ใ‚‚้ ’ๅธƒใ„ใŸใ—ใพใ™๏ผ

็š†ใ•ใ‚“ใฎใŠ่ถŠใ—ใ‚’ๅฟƒๅพ…ใกใซใ—ใฆใ„ใพใ™๏ผ๏ผ๏ผ

่ฉณใ—ใใฏๆŠ€่ก“ๆ›ธๅšใฎๅ…ฌๅผใ‚ตใ‚คใƒˆใŠใ‚ˆใณใ€ใ‚ตใƒผใ‚ฏใƒซๆฆ‚่ฆใ‚’ใ”่ฆงใใ ใ•ใ„๏ผ
https://gishohaku.dev/gishohaku11/circles/LOmokXEikphsDCEG9OEb

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

็งใ‚‚ๅพฎๅŠ›ใชใŒใ‚‰ใ€ŽThinking Penguin Magazine Vol.0ใ€ใซใ€Œๅ›ฝๆผขๆ–‡ๆทท็”จไฝ“ใ‹ใ‚‰Holloใพใงใ€ใจใ„ใ†ๆ‹™็จฟใ‚’ๅฏ„็จฟใ—ใพใ—ใŸใ€‚่ˆˆๅ‘ณใฎๆœ‰ใ‚‹ๆ–นใฏใ€็ฌฌๅไธ€ๅ›žๆŠ€่ก“ๆ›ธๅŒไบบ่ชŒๅš่ฆงไผšใงๆ‰‹ใซๅ…ฅใ‚Œใ‚‹ไบ‹ใŒๅ‡บๆฅใพใ™ใ€‚

https://msky.ospn.jp/notes/a35ankd6m2p80nev

Fediverse Linux Users Group's avatar
Fediverse Linux Users Group

@fedilug@msky.ospn.jp

ใ€ๆŠ€่ก“ๆ›ธๅŒไบบ่ชŒๅš่ฆงไผšใพใงใ‚ใจ๏ผ‘้€ฑ้–“โ€ผ๏ธใ€‘
ใฏๆฅ้€ฑใฎไปŠๆ—ฅใ€2025ๅนด1ๆœˆ25ๆ—ฅใซๆจชๆตœ็”ฃ่ฒฟใƒ›ใƒผใƒซ ใƒžใƒชใƒใƒชใ‚ขใง้–‹ๅ‚ฌใ•ใ‚Œใ‚‹็ฌฌ11ๅ›žๆŠ€่ก“ๆ›ธๅŒไบบ่ชŒๅš่ฆงไผš๏ผˆ ๏ผ‰ใซๅ‡บๅฑ•ใ—ใพใ™ใ€‚
ๆ–ฐๅˆŠใจใ—ใฆใ€ŽThinkng Penguin Magazine vol.0ใ€ใ‚’้ ’ๅธƒใ—ใพใ™๏ผ๏ผˆ124ใƒšใƒผใ‚ธใƒป500ๅ††๏ผ‰
ๅง”่จ—ใจใ—ใฆ
@naoki_wjm@k.my-sky.blue ใ•ใ‚“ใฎใ€Žใ•ใฐใ‹ใ‚“ใƒฉใ‚คใƒ•๏ผใ€ใ‚‚้ ’ๅธƒใ„ใŸใ—ใพใ™๏ผ

็š†ใ•ใ‚“ใฎใŠ่ถŠใ—ใ‚’ๅฟƒๅพ…ใกใซใ—ใฆใ„ใพใ™๏ผ๏ผ๏ผ

่ฉณใ—ใใฏๆŠ€่ก“ๆ›ธๅšใฎๅ…ฌๅผใ‚ตใ‚คใƒˆใŠใ‚ˆใณใ€ใ‚ตใƒผใ‚ฏใƒซๆฆ‚่ฆใ‚’ใ”่ฆงใใ ใ•ใ„๏ผ
https://gishohaku.dev/gishohaku11/circles/LOmokXEikphsDCEG9OEb

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

็งใ‚‚ๅพฎๅŠ›ใชใŒใ‚‰ใ€ŽThinking Penguin Magazine Vol.0ใ€ใซใ€Œๅ›ฝๆผขๆ–‡ๆทท็”จไฝ“ใ‹ใ‚‰Holloใพใงใ€ใจใ„ใ†ๆ‹™็จฟใ‚’ๅฏ„็จฟใ—ใพใ—ใŸใ€‚่ˆˆๅ‘ณใฎๆœ‰ใ‚‹ๆ–นใฏใ€็ฌฌๅไธ€ๅ›žๆŠ€่ก“ๆ›ธๅŒไบบ่ชŒๅš่ฆงไผšใงๆ‰‹ใซๅ…ฅใ‚Œใ‚‹ไบ‹ใŒๅ‡บๆฅใพใ™ใ€‚

https://msky.ospn.jp/notes/a35ankd6m2p80nev

Fediverse Linux Users Group's avatar
Fediverse Linux Users Group

@fedilug@msky.ospn.jp

ใ€ๆŠ€่ก“ๆ›ธๅŒไบบ่ชŒๅš่ฆงไผšใพใงใ‚ใจ๏ผ‘้€ฑ้–“โ€ผ๏ธใ€‘
ใฏๆฅ้€ฑใฎไปŠๆ—ฅใ€2025ๅนด1ๆœˆ25ๆ—ฅใซๆจชๆตœ็”ฃ่ฒฟใƒ›ใƒผใƒซ ใƒžใƒชใƒใƒชใ‚ขใง้–‹ๅ‚ฌใ•ใ‚Œใ‚‹็ฌฌ11ๅ›žๆŠ€่ก“ๆ›ธๅŒไบบ่ชŒๅš่ฆงไผš๏ผˆ ๏ผ‰ใซๅ‡บๅฑ•ใ—ใพใ™ใ€‚
ๆ–ฐๅˆŠใจใ—ใฆใ€ŽThinkng Penguin Magazine vol.0ใ€ใ‚’้ ’ๅธƒใ—ใพใ™๏ผ๏ผˆ124ใƒšใƒผใ‚ธใƒป500ๅ††๏ผ‰
ๅง”่จ—ใจใ—ใฆ
@naoki_wjm@k.my-sky.blue ใ•ใ‚“ใฎใ€Žใ•ใฐใ‹ใ‚“ใƒฉใ‚คใƒ•๏ผใ€ใ‚‚้ ’ๅธƒใ„ใŸใ—ใพใ™๏ผ

็š†ใ•ใ‚“ใฎใŠ่ถŠใ—ใ‚’ๅฟƒๅพ…ใกใซใ—ใฆใ„ใพใ™๏ผ๏ผ๏ผ

่ฉณใ—ใใฏๆŠ€่ก“ๆ›ธๅšใฎๅ…ฌๅผใ‚ตใ‚คใƒˆใŠใ‚ˆใณใ€ใ‚ตใƒผใ‚ฏใƒซๆฆ‚่ฆใ‚’ใ”่ฆงใใ ใ•ใ„๏ผ
https://gishohaku.dev/gishohaku11/circles/LOmokXEikphsDCEG9OEb

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

็งใ‚‚ๅพฎๅŠ›ใชใŒใ‚‰ใ€ŽThinking Penguin Magazine Vol.0ใ€ใซใ€Œๅ›ฝๆผขๆ–‡ๆทท็”จไฝ“ใ‹ใ‚‰Holloใพใงใ€ใจใ„ใ†ๆ‹™็จฟใ‚’ๅฏ„็จฟใ—ใพใ—ใŸใ€‚่ˆˆๅ‘ณใฎๆœ‰ใ‚‹ๆ–นใฏใ€็ฌฌๅไธ€ๅ›žๆŠ€่ก“ๆ›ธๅŒไบบ่ชŒๅš่ฆงไผšใงๆ‰‹ใซๅ…ฅใ‚Œใ‚‹ไบ‹ใŒๅ‡บๆฅใพใ™ใ€‚

https://msky.ospn.jp/notes/a35ankd6m2p80nev

Fediverse Linux Users Group's avatar
Fediverse Linux Users Group

@fedilug@msky.ospn.jp

ใ€ๆŠ€่ก“ๆ›ธๅŒไบบ่ชŒๅš่ฆงไผšใพใงใ‚ใจ๏ผ‘้€ฑ้–“โ€ผ๏ธใ€‘
ใฏๆฅ้€ฑใฎไปŠๆ—ฅใ€2025ๅนด1ๆœˆ25ๆ—ฅใซๆจชๆตœ็”ฃ่ฒฟใƒ›ใƒผใƒซ ใƒžใƒชใƒใƒชใ‚ขใง้–‹ๅ‚ฌใ•ใ‚Œใ‚‹็ฌฌ11ๅ›žๆŠ€่ก“ๆ›ธๅŒไบบ่ชŒๅš่ฆงไผš๏ผˆ ๏ผ‰ใซๅ‡บๅฑ•ใ—ใพใ™ใ€‚
ๆ–ฐๅˆŠใจใ—ใฆใ€ŽThinkng Penguin Magazine vol.0ใ€ใ‚’้ ’ๅธƒใ—ใพใ™๏ผ๏ผˆ124ใƒšใƒผใ‚ธใƒป500ๅ††๏ผ‰
ๅง”่จ—ใจใ—ใฆ
@naoki_wjm@k.my-sky.blue ใ•ใ‚“ใฎใ€Žใ•ใฐใ‹ใ‚“ใƒฉใ‚คใƒ•๏ผใ€ใ‚‚้ ’ๅธƒใ„ใŸใ—ใพใ™๏ผ

็š†ใ•ใ‚“ใฎใŠ่ถŠใ—ใ‚’ๅฟƒๅพ…ใกใซใ—ใฆใ„ใพใ™๏ผ๏ผ๏ผ

่ฉณใ—ใใฏๆŠ€่ก“ๆ›ธๅšใฎๅ…ฌๅผใ‚ตใ‚คใƒˆใŠใ‚ˆใณใ€ใ‚ตใƒผใ‚ฏใƒซๆฆ‚่ฆใ‚’ใ”่ฆงใใ ใ•ใ„๏ผ
https://gishohaku.dev/gishohaku11/circles/LOmokXEikphsDCEG9OEb

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

็งใ‚‚ๅพฎๅŠ›ใชใŒใ‚‰ใ€ŽThinking Penguin Magazine Vol.0ใ€ใซใ€Œๅ›ฝๆผขๆ–‡ๆทท็”จไฝ“ใ‹ใ‚‰Holloใพใงใ€ใจใ„ใ†ๆ‹™็จฟใ‚’ๅฏ„็จฟใ—ใพใ—ใŸใ€‚่ˆˆๅ‘ณใฎๆœ‰ใ‚‹ๆ–นใฏใ€็ฌฌๅไธ€ๅ›žๆŠ€่ก“ๆ›ธๅŒไบบ่ชŒๅš่ฆงไผšใงๆ‰‹ใซๅ…ฅใ‚Œใ‚‹ไบ‹ใŒๅ‡บๆฅใพใ™ใ€‚

https://msky.ospn.jp/notes/a35ankd6m2p80nev

Fediverse Linux Users Group's avatar
Fediverse Linux Users Group

@fedilug@msky.ospn.jp

ใ€ๆŠ€่ก“ๆ›ธๅŒไบบ่ชŒๅš่ฆงไผšใพใงใ‚ใจ๏ผ‘้€ฑ้–“โ€ผ๏ธใ€‘
ใฏๆฅ้€ฑใฎไปŠๆ—ฅใ€2025ๅนด1ๆœˆ25ๆ—ฅใซๆจชๆตœ็”ฃ่ฒฟใƒ›ใƒผใƒซ ใƒžใƒชใƒใƒชใ‚ขใง้–‹ๅ‚ฌใ•ใ‚Œใ‚‹็ฌฌ11ๅ›žๆŠ€่ก“ๆ›ธๅŒไบบ่ชŒๅš่ฆงไผš๏ผˆ ๏ผ‰ใซๅ‡บๅฑ•ใ—ใพใ™ใ€‚
ๆ–ฐๅˆŠใจใ—ใฆใ€ŽThinkng Penguin Magazine vol.0ใ€ใ‚’้ ’ๅธƒใ—ใพใ™๏ผ๏ผˆ124ใƒšใƒผใ‚ธใƒป500ๅ††๏ผ‰
ๅง”่จ—ใจใ—ใฆ
@naoki_wjm@k.my-sky.blue ใ•ใ‚“ใฎใ€Žใ•ใฐใ‹ใ‚“ใƒฉใ‚คใƒ•๏ผใ€ใ‚‚้ ’ๅธƒใ„ใŸใ—ใพใ™๏ผ

็š†ใ•ใ‚“ใฎใŠ่ถŠใ—ใ‚’ๅฟƒๅพ…ใกใซใ—ใฆใ„ใพใ™๏ผ๏ผ๏ผ

่ฉณใ—ใใฏๆŠ€่ก“ๆ›ธๅšใฎๅ…ฌๅผใ‚ตใ‚คใƒˆใŠใ‚ˆใณใ€ใ‚ตใƒผใ‚ฏใƒซๆฆ‚่ฆใ‚’ใ”่ฆงใใ ใ•ใ„๏ผ
https://gishohaku.dev/gishohaku11/circles/LOmokXEikphsDCEG9OEb

Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

Introducing . Hollo is an -enabled single-user microblogging software. Although it's for a single user, it also supports creating and running multiple accounts for different topics.

It's headless, meaning you can use existing client apps instead, with its Mastodon-compatible APIs. It has most feature parity with Mastodon. Two big differences with Mastodon is that you can use in the content of your posts and you can quote another post.

Oh, and Hollo is built using and .

https://github.com/dahlia/hollo

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

็งใ‚‚ๅพฎๅŠ›ใชใŒใ‚‰ใ€ŽThinking Penguin Magazine Vol.0ใ€ใซใ€Œๅ›ฝๆผขๆ–‡ๆทท็”จไฝ“ใ‹ใ‚‰Holloใพใงใ€ใจใ„ใ†ๆ‹™็จฟใ‚’ๅฏ„็จฟใ—ใพใ—ใŸใ€‚่ˆˆๅ‘ณใฎๆœ‰ใ‚‹ๆ–นใฏใ€็ฌฌๅไธ€ๅ›žๆŠ€่ก“ๆ›ธๅŒไบบ่ชŒๅš่ฆงไผšใงๆ‰‹ใซๅ…ฅใ‚Œใ‚‹ไบ‹ใŒๅ‡บๆฅใพใ™ใ€‚

https://msky.ospn.jp/notes/a35ankd6m2p80nev

Fediverse Linux Users Group's avatar
Fediverse Linux Users Group

@fedilug@msky.ospn.jp

ใ€ๆŠ€่ก“ๆ›ธๅŒไบบ่ชŒๅš่ฆงไผšใพใงใ‚ใจ๏ผ‘้€ฑ้–“โ€ผ๏ธใ€‘
ใฏๆฅ้€ฑใฎไปŠๆ—ฅใ€2025ๅนด1ๆœˆ25ๆ—ฅใซๆจชๆตœ็”ฃ่ฒฟใƒ›ใƒผใƒซ ใƒžใƒชใƒใƒชใ‚ขใง้–‹ๅ‚ฌใ•ใ‚Œใ‚‹็ฌฌ11ๅ›žๆŠ€่ก“ๆ›ธๅŒไบบ่ชŒๅš่ฆงไผš๏ผˆ ๏ผ‰ใซๅ‡บๅฑ•ใ—ใพใ™ใ€‚
ๆ–ฐๅˆŠใจใ—ใฆใ€ŽThinkng Penguin Magazine vol.0ใ€ใ‚’้ ’ๅธƒใ—ใพใ™๏ผ๏ผˆ124ใƒšใƒผใ‚ธใƒป500ๅ††๏ผ‰
ๅง”่จ—ใจใ—ใฆ
@naoki_wjm@k.my-sky.blue ใ•ใ‚“ใฎใ€Žใ•ใฐใ‹ใ‚“ใƒฉใ‚คใƒ•๏ผใ€ใ‚‚้ ’ๅธƒใ„ใŸใ—ใพใ™๏ผ

็š†ใ•ใ‚“ใฎใŠ่ถŠใ—ใ‚’ๅฟƒๅพ…ใกใซใ—ใฆใ„ใพใ™๏ผ๏ผ๏ผ

่ฉณใ—ใใฏๆŠ€่ก“ๆ›ธๅšใฎๅ…ฌๅผใ‚ตใ‚คใƒˆใŠใ‚ˆใณใ€ใ‚ตใƒผใ‚ฏใƒซๆฆ‚่ฆใ‚’ใ”่ฆงใใ ใ•ใ„๏ผ
https://gishohaku.dev/gishohaku11/circles/LOmokXEikphsDCEG9OEb

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

็งใ‚‚ๅพฎๅŠ›ใชใŒใ‚‰ใ€ŽThinking Penguin Magazine Vol.0ใ€ใซใ€Œๅ›ฝๆผขๆ–‡ๆทท็”จไฝ“ใ‹ใ‚‰Holloใพใงใ€ใจใ„ใ†ๆ‹™็จฟใ‚’ๅฏ„็จฟใ—ใพใ—ใŸใ€‚่ˆˆๅ‘ณใฎๆœ‰ใ‚‹ๆ–นใฏใ€็ฌฌๅไธ€ๅ›žๆŠ€่ก“ๆ›ธๅŒไบบ่ชŒๅš่ฆงไผšใงๆ‰‹ใซๅ…ฅใ‚Œใ‚‹ไบ‹ใŒๅ‡บๆฅใพใ™ใ€‚

https://msky.ospn.jp/notes/a35ankd6m2p80nev

Fediverse Linux Users Group's avatar
Fediverse Linux Users Group

@fedilug@msky.ospn.jp

ใ€ๆŠ€่ก“ๆ›ธๅŒไบบ่ชŒๅš่ฆงไผšใพใงใ‚ใจ๏ผ‘้€ฑ้–“โ€ผ๏ธใ€‘
ใฏๆฅ้€ฑใฎไปŠๆ—ฅใ€2025ๅนด1ๆœˆ25ๆ—ฅใซๆจชๆตœ็”ฃ่ฒฟใƒ›ใƒผใƒซ ใƒžใƒชใƒใƒชใ‚ขใง้–‹ๅ‚ฌใ•ใ‚Œใ‚‹็ฌฌ11ๅ›žๆŠ€่ก“ๆ›ธๅŒไบบ่ชŒๅš่ฆงไผš๏ผˆ ๏ผ‰ใซๅ‡บๅฑ•ใ—ใพใ™ใ€‚
ๆ–ฐๅˆŠใจใ—ใฆใ€ŽThinkng Penguin Magazine vol.0ใ€ใ‚’้ ’ๅธƒใ—ใพใ™๏ผ๏ผˆ124ใƒšใƒผใ‚ธใƒป500ๅ††๏ผ‰
ๅง”่จ—ใจใ—ใฆ
@naoki_wjm@k.my-sky.blue ใ•ใ‚“ใฎใ€Žใ•ใฐใ‹ใ‚“ใƒฉใ‚คใƒ•๏ผใ€ใ‚‚้ ’ๅธƒใ„ใŸใ—ใพใ™๏ผ

็š†ใ•ใ‚“ใฎใŠ่ถŠใ—ใ‚’ๅฟƒๅพ…ใกใซใ—ใฆใ„ใพใ™๏ผ๏ผ๏ผ

่ฉณใ—ใใฏๆŠ€่ก“ๆ›ธๅšใฎๅ…ฌๅผใ‚ตใ‚คใƒˆใŠใ‚ˆใณใ€ใ‚ตใƒผใ‚ฏใƒซๆฆ‚่ฆใ‚’ใ”่ฆงใใ ใ•ใ„๏ผ
https://gishohaku.dev/gishohaku11/circles/LOmokXEikphsDCEG9OEb

WetHat๐Ÿ’ฆ's avatar
WetHat๐Ÿ’ฆ

@WetHat@fosstodon.org

Key Points:
โžก๏ธ BotKit enables the creation of standalone ActivityPub bots, free from platform constraints.
โžก๏ธ It is user-friendly and written in TypeScript, ensuring type safety.
โžก๏ธ BotKit is easy to deploy with minimal dependencies on various virtual servers.
โžก๏ธ Powered by , a robust framework.

botkit.fedify.dev/

WetHat๐Ÿ’ฆ's avatar
WetHat๐Ÿ’ฆ

@WetHat@fosstodon.org

Key Points:
โžก๏ธ BotKit enables the creation of standalone ActivityPub bots, free from platform constraints.
โžก๏ธ It is user-friendly and written in TypeScript, ensuring type safety.
โžก๏ธ BotKit is easy to deploy with minimal dependencies on various virtual servers.
โžก๏ธ Powered by , a robust framework.

botkit.fedify.dev/

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

One of 's long-term challenges is to get it to run on Cloudflare Workers as well.

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

One of 's long-term challenges is to get it to run on Cloudflare Workers as well.

WetHat๐Ÿ’ฆ's avatar
WetHat๐Ÿ’ฆ

@WetHat@fosstodon.org

Key Points:
โžก๏ธ BotKit enables the creation of standalone ActivityPub bots, free from platform constraints.
โžก๏ธ It is user-friendly and written in TypeScript, ensuring type safety.
โžก๏ธ BotKit is easy to deploy with minimal dependencies on various virtual servers.
โžก๏ธ Powered by , a robust framework.

botkit.fedify.dev/

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social ยท Reply to FediChatBot's post

@FediChatBot The attached image is the logo for (@fedify), let us know what you think of it.

The logo for Fedify
ALT text detailsThe logo for Fedify
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

:botkit: Introducing : A framework for creating truly standalone bots!

Unlike traditional Mastodon bots, BotKit lets you build fully independent bots that aren't constrained by platform limits. Create your entire bot in a single TypeScript file using our simple, expressive API.

Currently -only, with Node.js & Bun support planned. Built on the robust foundation.

https://botkit.fedify.dev/

import {
  createBot,
  InProcessMessageQueue,
  MemoryKvStore,
  mention,
  text,
} from "@fedify/botkit";

// Create a bot instance:
const bot = createBot<void>({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the display name:
  name: "Greet Bot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  summary: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social")}.`,
  // Store data in memory (for development):
  kv: new MemoryKvStore(),
  // Use in-process message queue (for development):
  queue: new InProcessMessageQueue(),
});

// A bot can respond to a mention:
bot.onMention = async (session, message) => {
  await message.reply(text`Hi, ${message.actor}!`);
};

// Or, a bot also can actively publish a post:
const session = bot.getSession("https://mydomain/");
setInterval(async () => {
  await session.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, InProcessMessageQueue, MemoryKvStore, mention, text, } from "@fedify/botkit"; // Create a bot instance: const bot = createBot<void>({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the display name: name: "Greet Bot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: summary: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social")}.`, // Store data in memory (for development): kv: new MemoryKvStore(), // Use in-process message queue (for development): queue: new InProcessMessageQueue(), }); // A bot can respond to a mention: bot.onMention = async (session, message) => { await message.reply(text`Hi, ${message.actor}!`); }; // Or, a bot also can actively publish a post: const session = bot.getSession("https://mydomain/"); setInterval(async () => { await session.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

Okay, I finished the groundwork of today. It's -only yet though. It's on GitHub!

Even though it's built on , its API looks completely different from Fedify's one. I intended to make it resembles more Discord/Telegram bot frameworks than Fedify. I think it's close to my intention.

https://github.com/dahlia/botkit

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

Okay, I finished the groundwork of today. It's -only yet though. It's on GitHub!

Even though it's built on , its API looks completely different from Fedify's one. I intended to make it resembles more Discord/Telegram bot frameworks than Fedify. I think it's close to my intention.

https://github.com/dahlia/botkit

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

Okay, I finished the groundwork of today. It's -only yet though. It's on GitHub!

Even though it's built on , its API looks completely different from Fedify's one. I intended to make it resembles more Discord/Telegram bot frameworks than Fedify. I think it's close to my intention.

https://github.com/dahlia/botkit

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

Okay, I finished the groundwork of today. It's -only yet though. It's on GitHub!

Even though it's built on , its API looks completely different from Fedify's one. I intended to make it resembles more Discord/Telegram bot frameworks than Fedify. I think it's close to my intention.

https://github.com/dahlia/botkit

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

Okay, I finished the groundwork of today. It's -only yet though. It's on GitHub!

Even though it's built on , its API looks completely different from Fedify's one. I intended to make it resembles more Discord/Telegram bot frameworks than Fedify. I think it's close to my intention.

https://github.com/dahlia/botkit

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

Okay, I finished the groundwork of today. It's -only yet though. It's on GitHub!

Even though it's built on , its API looks completely different from Fedify's one. I intended to make it resembles more Discord/Telegram bot frameworks than Fedify. I think it's close to my intention.

https://github.com/dahlia/botkit

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

Okay, I finished the groundwork of today. It's -only yet though. It's on GitHub!

Even though it's built on , its API looks completely different from Fedify's one. I intended to make it resembles more Discord/Telegram bot frameworks than Fedify. I think it's close to my intention.

https://github.com/dahlia/botkit

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

Okay, I finished the groundwork of today. It's -only yet though. It's on GitHub!

Even though it's built on , its API looks completely different from Fedify's one. I intended to make it resembles more Discord/Telegram bot frameworks than Fedify. I think it's close to my intention.

https://github.com/dahlia/botkit

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

Okay, I finished the groundwork of today. It's -only yet though. It's on GitHub!

Even though it's built on , its API looks completely different from Fedify's one. I intended to make it resembles more Discord/Telegram bot frameworks than Fedify. I think it's close to my intention.

https://github.com/dahlia/botkit

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

Okay, I finished the groundwork of today. It's -only yet though. It's on GitHub!

Even though it's built on , its API looks completely different from Fedify's one. I intended to make it resembles more Discord/Telegram bot frameworks than Fedify. I think it's close to my intention.

https://github.com/dahlia/botkit

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

Okay, I finished the groundwork of today. It's -only yet though. It's on GitHub!

Even though it's built on , its API looks completely different from Fedify's one. I intended to make it resembles more Discord/Telegram bot frameworks than Fedify. I think it's close to my intention.

https://github.com/dahlia/botkit

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

Okay, I finished the groundwork of today. It's -only yet though. It's on GitHub!

Even though it's built on , its API looks completely different from Fedify's one. I intended to make it resembles more Discord/Telegram bot frameworks than Fedify. I think it's close to my intention.

https://github.com/dahlia/botkit

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

Okay, I finished the groundwork of today. It's -only yet though. It's on GitHub!

Even though it's built on , its API looks completely different from Fedify's one. I intended to make it resembles more Discord/Telegram bot frameworks than Fedify. I think it's close to my intention.

https://github.com/dahlia/botkit

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

Okay, I finished the groundwork of today. It's -only yet though. It's on GitHub!

Even though it's built on , its API looks completely different from Fedify's one. I intended to make it resembles more Discord/Telegram bot frameworks than Fedify. I think it's close to my intention.

https://github.com/dahlia/botkit

Julian Fietkau's avatar
Julian Fietkau

@julian@fietkau.social

The last "big" code thing I need to get done before the alpha test of my current @fedify project is the task queue - make sure routine data updates happen, consider individual importance and urgency, respect external API rate limits, etc.

But that's super intimidating so I'm currently procrastinating by making it a cute lil home page instead. ๐Ÿ™ƒ

Photo of a monitor showing some CSS code. The code hints at a website where images are animated and zoomed.
ALT text detailsPhoto of a monitor showing some CSS code. The code hints at a website where images are animated and zoomed.
Julian Fietkau's avatar
Julian Fietkau

@julian@fietkau.social

The last "big" code thing I need to get done before the alpha test of my current @fedify project is the task queue - make sure routine data updates happen, consider individual importance and urgency, respect external API rate limits, etc.

But that's super intimidating so I'm currently procrastinating by making it a cute lil home page instead. ๐Ÿ™ƒ

Photo of a monitor showing some CSS code. The code hints at a website where images are animated and zoomed.
ALT text detailsPhoto of a monitor showing some CSS code. The code hints at a website where images are animated and zoomed.
Julian Fietkau's avatar
Julian Fietkau

@julian@fietkau.social

The last "big" code thing I need to get done before the alpha test of my current @fedify project is the task queue - make sure routine data updates happen, consider individual importance and urgency, respect external API rate limits, etc.

But that's super intimidating so I'm currently procrastinating by making it a cute lil home page instead. ๐Ÿ™ƒ

Photo of a monitor showing some CSS code. The code hints at a website where images are animated and zoomed.
ALT text detailsPhoto of a monitor showing some CSS code. The code hints at a website where images are animated and zoomed.
Julian Fietkau's avatar
Julian Fietkau

@julian@fietkau.social

The last "big" code thing I need to get done before the alpha test of my current @fedify project is the task queue - make sure routine data updates happen, consider individual importance and urgency, respect external API rate limits, etc.

But that's super intimidating so I'm currently procrastinating by making it a cute lil home page instead. ๐Ÿ™ƒ

Photo of a monitor showing some CSS code. The code hints at a website where images are animated and zoomed.
ALT text detailsPhoto of a monitor showing some CSS code. The code hints at a website where images are animated and zoomed.
Julian Fietkau's avatar
Julian Fietkau

@julian@fietkau.social

The last "big" code thing I need to get done before the alpha test of my current @fedify project is the task queue - make sure routine data updates happen, consider individual importance and urgency, respect external API rate limits, etc.

But that's super intimidating so I'm currently procrastinating by making it a cute lil home page instead. ๐Ÿ™ƒ

Photo of a monitor showing some CSS code. The code hints at a website where images are animated and zoomed.
ALT text detailsPhoto of a monitor showing some CSS code. The code hints at a website where images are animated and zoomed.
Alejandro Baez's avatar
Alejandro Baez

@zeab@fosstodon.org

Now that I got some fond memories of (read: Stockholm Syndrome), I sort of want to build stuff with . ๐Ÿ˜…

Though what I *really* want is an option like it for . Maybe a project for the new year. ๐Ÿค”

Not like we don't have , , , and as examples of what could be a standard library. ๐Ÿ˜„

fedify.dev/

Alejandro Baez's avatar
Alejandro Baez

@zeab@fosstodon.org

Now that I got some fond memories of (read: Stockholm Syndrome), I sort of want to build stuff with . ๐Ÿ˜…

Though what I *really* want is an option like it for . Maybe a project for the new year. ๐Ÿค”

Not like we don't have , , , and as examples of what could be a standard library. ๐Ÿ˜„

fedify.dev/

Alejandro Baez's avatar
Alejandro Baez

@zeab@fosstodon.org

Now that I got some fond memories of (read: Stockholm Syndrome), I sort of want to build stuff with . ๐Ÿ˜…

Though what I *really* want is an option like it for . Maybe a project for the new year. ๐Ÿค”

Not like we don't have , , , and as examples of what could be a standard library. ๐Ÿ˜„

fedify.dev/

Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

Hollo 0.4.0 released! is a single-user federated microblogging software which is -enabled and powered by .

The key changes of this release include:

  • Hollo is now powered by Node.js 23+ instead of Bun for more efficient memory usage.

  • Added an experimental feature flag TIMELINE_INBOXES to store all posts visible to your timeline in the database, rather than filtering them in real-time as they are displayed. This is useful for relatively larger instances with many incoming posts, but as of now it may have several bugs. It is expected to be the default behavior in the future after it is stabilized.

  • Now you can import and export your data from the administration dashboard in CSV format: follows, lists, accounts you muted, accounts you blocked, and bookmarks.

  • You can now make your profile discoverable.

  • The profile page now shows an account's cover image if it has one.

  • Many bug fixes.

For the details, see also the full changelog.

You can upgrade to Hollo 0.4.0 using the following ways:

Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

is currently testing .js instead of . (In fact, the hollo.social server is already running on Node.js!) If this test is successful, starting with the next release, Hollo will be powered by Node.js instead of Bun.

The main reason for switching to Node.js is to optimize memory usage. As you can see in the graph image below, Node.js uses significantly less memory than Bun. With this switch, Hollo is expected to be even more lightweight than before!

Are you interested in trying out the Node.js version of Hollo early? Try to pull ghcr.io/dahlia/hollo:0.4.0-dev.290!

Hollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
ALT text detailsHollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I'm currently brainstorming a framework for creating fediverse bots called , based on . It's less flexible than Fedify, but the goal is to make it possible to create simple fediverse bots with much less code. What do you think?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, mention, text } from "@fedify/botkit"; import { RedisKvStore } from "@fedify/redis"; import { Redis } from "ioredis"; // Create a bot instance: const bot = createBot({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: bio: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social").}`, // Use Redis as a key-value store: kv: new RedisKvStore(new Redis()), // Use Redis as a message queue: queue: new RedisMessageQueue(() => new Redis()), }); // A bot can respond to a mention: bot.on(/hi|hello|what'?s\s+up/i, (ctx) => { return ctx.reply(text`Hi, ${ctx.actor}!`); }); // Or, a bot also can actively publish a post: setInterval(async () => { await bot.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I'm currently brainstorming a framework for creating fediverse bots called , based on . It's less flexible than Fedify, but the goal is to make it possible to create simple fediverse bots with much less code. What do you think?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, mention, text } from "@fedify/botkit"; import { RedisKvStore } from "@fedify/redis"; import { Redis } from "ioredis"; // Create a bot instance: const bot = createBot({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: bio: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social").}`, // Use Redis as a key-value store: kv: new RedisKvStore(new Redis()), // Use Redis as a message queue: queue: new RedisMessageQueue(() => new Redis()), }); // A bot can respond to a mention: bot.on(/hi|hello|what'?s\s+up/i, (ctx) => { return ctx.reply(text`Hi, ${ctx.actor}!`); }); // Or, a bot also can actively publish a post: setInterval(async () => { await bot.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

Since 1.4.0, Object will have the emojiReactions property, which corresponds to the fedibird:emojiReactions property extended by .

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

I wrote a blog post to wrap up the year 2024: A year with the fediverse.

https://writings.hongminhee.org/2024/12/a-year-with-the-fediverse/index.en.html

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

I wrote a blog post to wrap up the year 2024: A year with the fediverse.

https://writings.hongminhee.org/2024/12/a-year-with-the-fediverse/index.en.html

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

@fedify@hollo.social

Since 1.4.0, Object will have the emojiReactions property, which corresponds to the fedibird:emojiReactions property extended by .

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

@fedify@hollo.social

Since 1.4.0, Object will have the emojiReactions property, which corresponds to the fedibird:emojiReactions property extended by .

Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

Hollo 0.4.0 released! is a single-user federated microblogging software which is -enabled and powered by .

The key changes of this release include:

  • Hollo is now powered by Node.js 23+ instead of Bun for more efficient memory usage.

  • Added an experimental feature flag TIMELINE_INBOXES to store all posts visible to your timeline in the database, rather than filtering them in real-time as they are displayed. This is useful for relatively larger instances with many incoming posts, but as of now it may have several bugs. It is expected to be the default behavior in the future after it is stabilized.

  • Now you can import and export your data from the administration dashboard in CSV format: follows, lists, accounts you muted, accounts you blocked, and bookmarks.

  • You can now make your profile discoverable.

  • The profile page now shows an account's cover image if it has one.

  • Many bug fixes.

For the details, see also the full changelog.

You can upgrade to Hollo 0.4.0 using the following ways:

Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

is currently testing .js instead of . (In fact, the hollo.social server is already running on Node.js!) If this test is successful, starting with the next release, Hollo will be powered by Node.js instead of Bun.

The main reason for switching to Node.js is to optimize memory usage. As you can see in the graph image below, Node.js uses significantly less memory than Bun. With this switch, Hollo is expected to be even more lightweight than before!

Are you interested in trying out the Node.js version of Hollo early? Try to pull ghcr.io/dahlia/hollo:0.4.0-dev.290!

Hollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
ALT text detailsHollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

Hollo 0.4.0 released! is a single-user federated microblogging software which is -enabled and powered by .

The key changes of this release include:

  • Hollo is now powered by Node.js 23+ instead of Bun for more efficient memory usage.

  • Added an experimental feature flag TIMELINE_INBOXES to store all posts visible to your timeline in the database, rather than filtering them in real-time as they are displayed. This is useful for relatively larger instances with many incoming posts, but as of now it may have several bugs. It is expected to be the default behavior in the future after it is stabilized.

  • Now you can import and export your data from the administration dashboard in CSV format: follows, lists, accounts you muted, accounts you blocked, and bookmarks.

  • You can now make your profile discoverable.

  • The profile page now shows an account's cover image if it has one.

  • Many bug fixes.

For the details, see also the full changelog.

You can upgrade to Hollo 0.4.0 using the following ways:

Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

is currently testing .js instead of . (In fact, the hollo.social server is already running on Node.js!) If this test is successful, starting with the next release, Hollo will be powered by Node.js instead of Bun.

The main reason for switching to Node.js is to optimize memory usage. As you can see in the graph image below, Node.js uses significantly less memory than Bun. With this switch, Hollo is expected to be even more lightweight than before!

Are you interested in trying out the Node.js version of Hollo early? Try to pull ghcr.io/dahlia/hollo:0.4.0-dev.290!

Hollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
ALT text detailsHollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

Hollo 0.4.0 released! is a single-user federated microblogging software which is -enabled and powered by .

The key changes of this release include:

  • Hollo is now powered by Node.js 23+ instead of Bun for more efficient memory usage.

  • Added an experimental feature flag TIMELINE_INBOXES to store all posts visible to your timeline in the database, rather than filtering them in real-time as they are displayed. This is useful for relatively larger instances with many incoming posts, but as of now it may have several bugs. It is expected to be the default behavior in the future after it is stabilized.

  • Now you can import and export your data from the administration dashboard in CSV format: follows, lists, accounts you muted, accounts you blocked, and bookmarks.

  • You can now make your profile discoverable.

  • The profile page now shows an account's cover image if it has one.

  • Many bug fixes.

For the details, see also the full changelog.

You can upgrade to Hollo 0.4.0 using the following ways:

Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

is currently testing .js instead of . (In fact, the hollo.social server is already running on Node.js!) If this test is successful, starting with the next release, Hollo will be powered by Node.js instead of Bun.

The main reason for switching to Node.js is to optimize memory usage. As you can see in the graph image below, Node.js uses significantly less memory than Bun. With this switch, Hollo is expected to be even more lightweight than before!

Are you interested in trying out the Node.js version of Hollo early? Try to pull ghcr.io/dahlia/hollo:0.4.0-dev.290!

Hollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
ALT text detailsHollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

Hollo 0.4.0 released! is a single-user federated microblogging software which is -enabled and powered by .

The key changes of this release include:

  • Hollo is now powered by Node.js 23+ instead of Bun for more efficient memory usage.

  • Added an experimental feature flag TIMELINE_INBOXES to store all posts visible to your timeline in the database, rather than filtering them in real-time as they are displayed. This is useful for relatively larger instances with many incoming posts, but as of now it may have several bugs. It is expected to be the default behavior in the future after it is stabilized.

  • Now you can import and export your data from the administration dashboard in CSV format: follows, lists, accounts you muted, accounts you blocked, and bookmarks.

  • You can now make your profile discoverable.

  • The profile page now shows an account's cover image if it has one.

  • Many bug fixes.

For the details, see also the full changelog.

You can upgrade to Hollo 0.4.0 using the following ways:

Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

is currently testing .js instead of . (In fact, the hollo.social server is already running on Node.js!) If this test is successful, starting with the next release, Hollo will be powered by Node.js instead of Bun.

The main reason for switching to Node.js is to optimize memory usage. As you can see in the graph image below, Node.js uses significantly less memory than Bun. With this switch, Hollo is expected to be even more lightweight than before!

Are you interested in trying out the Node.js version of Hollo early? Try to pull ghcr.io/dahlia/hollo:0.4.0-dev.290!

Hollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
ALT text detailsHollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

Hollo 0.4.0 released! is a single-user federated microblogging software which is -enabled and powered by .

The key changes of this release include:

  • Hollo is now powered by Node.js 23+ instead of Bun for more efficient memory usage.

  • Added an experimental feature flag TIMELINE_INBOXES to store all posts visible to your timeline in the database, rather than filtering them in real-time as they are displayed. This is useful for relatively larger instances with many incoming posts, but as of now it may have several bugs. It is expected to be the default behavior in the future after it is stabilized.

  • Now you can import and export your data from the administration dashboard in CSV format: follows, lists, accounts you muted, accounts you blocked, and bookmarks.

  • You can now make your profile discoverable.

  • The profile page now shows an account's cover image if it has one.

  • Many bug fixes.

For the details, see also the full changelog.

You can upgrade to Hollo 0.4.0 using the following ways:

Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

is currently testing .js instead of . (In fact, the hollo.social server is already running on Node.js!) If this test is successful, starting with the next release, Hollo will be powered by Node.js instead of Bun.

The main reason for switching to Node.js is to optimize memory usage. As you can see in the graph image below, Node.js uses significantly less memory than Bun. With this switch, Hollo is expected to be even more lightweight than before!

Are you interested in trying out the Node.js version of Hollo early? Try to pull ghcr.io/dahlia/hollo:0.4.0-dev.290!

Hollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
ALT text detailsHollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

Hollo 0.4.0 released! is a single-user federated microblogging software which is -enabled and powered by .

The key changes of this release include:

  • Hollo is now powered by Node.js 23+ instead of Bun for more efficient memory usage.

  • Added an experimental feature flag TIMELINE_INBOXES to store all posts visible to your timeline in the database, rather than filtering them in real-time as they are displayed. This is useful for relatively larger instances with many incoming posts, but as of now it may have several bugs. It is expected to be the default behavior in the future after it is stabilized.

  • Now you can import and export your data from the administration dashboard in CSV format: follows, lists, accounts you muted, accounts you blocked, and bookmarks.

  • You can now make your profile discoverable.

  • The profile page now shows an account's cover image if it has one.

  • Many bug fixes.

For the details, see also the full changelog.

You can upgrade to Hollo 0.4.0 using the following ways:

Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

is currently testing .js instead of . (In fact, the hollo.social server is already running on Node.js!) If this test is successful, starting with the next release, Hollo will be powered by Node.js instead of Bun.

The main reason for switching to Node.js is to optimize memory usage. As you can see in the graph image below, Node.js uses significantly less memory than Bun. With this switch, Hollo is expected to be even more lightweight than before!

Are you interested in trying out the Node.js version of Hollo early? Try to pull ghcr.io/dahlia/hollo:0.4.0-dev.290!

Hollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
ALT text detailsHollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I'm currently brainstorming a framework for creating fediverse bots called , based on . It's less flexible than Fedify, but the goal is to make it possible to create simple fediverse bots with much less code. What do you think?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, mention, text } from "@fedify/botkit"; import { RedisKvStore } from "@fedify/redis"; import { Redis } from "ioredis"; // Create a bot instance: const bot = createBot({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: bio: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social").}`, // Use Redis as a key-value store: kv: new RedisKvStore(new Redis()), // Use Redis as a message queue: queue: new RedisMessageQueue(() => new Redis()), }); // A bot can respond to a mention: bot.on(/hi|hello|what'?s\s+up/i, (ctx) => { return ctx.reply(text`Hi, ${ctx.actor}!`); }); // Or, a bot also can actively publish a post: setInterval(async () => { await bot.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

Hollo 0.4.0 released! is a single-user federated microblogging software which is -enabled and powered by .

The key changes of this release include:

  • Hollo is now powered by Node.js 23+ instead of Bun for more efficient memory usage.

  • Added an experimental feature flag TIMELINE_INBOXES to store all posts visible to your timeline in the database, rather than filtering them in real-time as they are displayed. This is useful for relatively larger instances with many incoming posts, but as of now it may have several bugs. It is expected to be the default behavior in the future after it is stabilized.

  • Now you can import and export your data from the administration dashboard in CSV format: follows, lists, accounts you muted, accounts you blocked, and bookmarks.

  • You can now make your profile discoverable.

  • The profile page now shows an account's cover image if it has one.

  • Many bug fixes.

For the details, see also the full changelog.

You can upgrade to Hollo 0.4.0 using the following ways:

Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

is currently testing .js instead of . (In fact, the hollo.social server is already running on Node.js!) If this test is successful, starting with the next release, Hollo will be powered by Node.js instead of Bun.

The main reason for switching to Node.js is to optimize memory usage. As you can see in the graph image below, Node.js uses significantly less memory than Bun. With this switch, Hollo is expected to be even more lightweight than before!

Are you interested in trying out the Node.js version of Hollo early? Try to pull ghcr.io/dahlia/hollo:0.4.0-dev.290!

Hollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
ALT text detailsHollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

Hollo 0.4.0 released! is a single-user federated microblogging software which is -enabled and powered by .

The key changes of this release include:

  • Hollo is now powered by Node.js 23+ instead of Bun for more efficient memory usage.

  • Added an experimental feature flag TIMELINE_INBOXES to store all posts visible to your timeline in the database, rather than filtering them in real-time as they are displayed. This is useful for relatively larger instances with many incoming posts, but as of now it may have several bugs. It is expected to be the default behavior in the future after it is stabilized.

  • Now you can import and export your data from the administration dashboard in CSV format: follows, lists, accounts you muted, accounts you blocked, and bookmarks.

  • You can now make your profile discoverable.

  • The profile page now shows an account's cover image if it has one.

  • Many bug fixes.

For the details, see also the full changelog.

You can upgrade to Hollo 0.4.0 using the following ways:

Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

is currently testing .js instead of . (In fact, the hollo.social server is already running on Node.js!) If this test is successful, starting with the next release, Hollo will be powered by Node.js instead of Bun.

The main reason for switching to Node.js is to optimize memory usage. As you can see in the graph image below, Node.js uses significantly less memory than Bun. With this switch, Hollo is expected to be even more lightweight than before!

Are you interested in trying out the Node.js version of Hollo early? Try to pull ghcr.io/dahlia/hollo:0.4.0-dev.290!

Hollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
ALT text detailsHollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

Hollo 0.4.0 released! is a single-user federated microblogging software which is -enabled and powered by .

The key changes of this release include:

  • Hollo is now powered by Node.js 23+ instead of Bun for more efficient memory usage.

  • Added an experimental feature flag TIMELINE_INBOXES to store all posts visible to your timeline in the database, rather than filtering them in real-time as they are displayed. This is useful for relatively larger instances with many incoming posts, but as of now it may have several bugs. It is expected to be the default behavior in the future after it is stabilized.

  • Now you can import and export your data from the administration dashboard in CSV format: follows, lists, accounts you muted, accounts you blocked, and bookmarks.

  • You can now make your profile discoverable.

  • The profile page now shows an account's cover image if it has one.

  • Many bug fixes.

For the details, see also the full changelog.

You can upgrade to Hollo 0.4.0 using the following ways:

Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

is currently testing .js instead of . (In fact, the hollo.social server is already running on Node.js!) If this test is successful, starting with the next release, Hollo will be powered by Node.js instead of Bun.

The main reason for switching to Node.js is to optimize memory usage. As you can see in the graph image below, Node.js uses significantly less memory than Bun. With this switch, Hollo is expected to be even more lightweight than before!

Are you interested in trying out the Node.js version of Hollo early? Try to pull ghcr.io/dahlia/hollo:0.4.0-dev.290!

Hollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
ALT text detailsHollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

Hollo 0.4.0 released! is a single-user federated microblogging software which is -enabled and powered by .

The key changes of this release include:

  • Hollo is now powered by Node.js 23+ instead of Bun for more efficient memory usage.

  • Added an experimental feature flag TIMELINE_INBOXES to store all posts visible to your timeline in the database, rather than filtering them in real-time as they are displayed. This is useful for relatively larger instances with many incoming posts, but as of now it may have several bugs. It is expected to be the default behavior in the future after it is stabilized.

  • Now you can import and export your data from the administration dashboard in CSV format: follows, lists, accounts you muted, accounts you blocked, and bookmarks.

  • You can now make your profile discoverable.

  • The profile page now shows an account's cover image if it has one.

  • Many bug fixes.

For the details, see also the full changelog.

You can upgrade to Hollo 0.4.0 using the following ways:

Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

is currently testing .js instead of . (In fact, the hollo.social server is already running on Node.js!) If this test is successful, starting with the next release, Hollo will be powered by Node.js instead of Bun.

The main reason for switching to Node.js is to optimize memory usage. As you can see in the graph image below, Node.js uses significantly less memory than Bun. With this switch, Hollo is expected to be even more lightweight than before!

Are you interested in trying out the Node.js version of Hollo early? Try to pull ghcr.io/dahlia/hollo:0.4.0-dev.290!

Hollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
ALT text detailsHollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

Hollo 0.4.0 released! is a single-user federated microblogging software which is -enabled and powered by .

The key changes of this release include:

  • Hollo is now powered by Node.js 23+ instead of Bun for more efficient memory usage.

  • Added an experimental feature flag TIMELINE_INBOXES to store all posts visible to your timeline in the database, rather than filtering them in real-time as they are displayed. This is useful for relatively larger instances with many incoming posts, but as of now it may have several bugs. It is expected to be the default behavior in the future after it is stabilized.

  • Now you can import and export your data from the administration dashboard in CSV format: follows, lists, accounts you muted, accounts you blocked, and bookmarks.

  • You can now make your profile discoverable.

  • The profile page now shows an account's cover image if it has one.

  • Many bug fixes.

For the details, see also the full changelog.

You can upgrade to Hollo 0.4.0 using the following ways:

Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

is currently testing .js instead of . (In fact, the hollo.social server is already running on Node.js!) If this test is successful, starting with the next release, Hollo will be powered by Node.js instead of Bun.

The main reason for switching to Node.js is to optimize memory usage. As you can see in the graph image below, Node.js uses significantly less memory than Bun. With this switch, Hollo is expected to be even more lightweight than before!

Are you interested in trying out the Node.js version of Hollo early? Try to pull ghcr.io/dahlia/hollo:0.4.0-dev.290!

Hollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
ALT text detailsHollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I'm currently brainstorming a framework for creating fediverse bots called , based on . It's less flexible than Fedify, but the goal is to make it possible to create simple fediverse bots with much less code. What do you think?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, mention, text } from "@fedify/botkit"; import { RedisKvStore } from "@fedify/redis"; import { Redis } from "ioredis"; // Create a bot instance: const bot = createBot({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: bio: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social").}`, // Use Redis as a key-value store: kv: new RedisKvStore(new Redis()), // Use Redis as a message queue: queue: new RedisMessageQueue(() => new Redis()), }); // A bot can respond to a mention: bot.on(/hi|hello|what'?s\s+up/i, (ctx) => { return ctx.reply(text`Hi, ${ctx.actor}!`); }); // Or, a bot also can actively publish a post: setInterval(async () => { await bot.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I'm currently brainstorming a framework for creating fediverse bots called , based on . It's less flexible than Fedify, but the goal is to make it possible to create simple fediverse bots with much less code. What do you think?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, mention, text } from "@fedify/botkit"; import { RedisKvStore } from "@fedify/redis"; import { Redis } from "ioredis"; // Create a bot instance: const bot = createBot({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: bio: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social").}`, // Use Redis as a key-value store: kv: new RedisKvStore(new Redis()), // Use Redis as a message queue: queue: new RedisMessageQueue(() => new Redis()), }); // A bot can respond to a mention: bot.on(/hi|hello|what'?s\s+up/i, (ctx) => { return ctx.reply(text`Hi, ${ctx.actor}!`); }); // Or, a bot also can actively publish a post: setInterval(async () => { await bot.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I'm currently brainstorming a framework for creating fediverse bots called , based on . It's less flexible than Fedify, but the goal is to make it possible to create simple fediverse bots with much less code. What do you think?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, mention, text } from "@fedify/botkit"; import { RedisKvStore } from "@fedify/redis"; import { Redis } from "ioredis"; // Create a bot instance: const bot = createBot({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: bio: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social").}`, // Use Redis as a key-value store: kv: new RedisKvStore(new Redis()), // Use Redis as a message queue: queue: new RedisMessageQueue(() => new Redis()), }); // A bot can respond to a mention: bot.on(/hi|hello|what'?s\s+up/i, (ctx) => { return ctx.reply(text`Hi, ${ctx.actor}!`); }); // Or, a bot also can actively publish a post: setInterval(async () => { await bot.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I'm currently brainstorming a framework for creating fediverse bots called , based on . It's less flexible than Fedify, but the goal is to make it possible to create simple fediverse bots with much less code. What do you think?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, mention, text } from "@fedify/botkit"; import { RedisKvStore } from "@fedify/redis"; import { Redis } from "ioredis"; // Create a bot instance: const bot = createBot({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: bio: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social").}`, // Use Redis as a key-value store: kv: new RedisKvStore(new Redis()), // Use Redis as a message queue: queue: new RedisMessageQueue(() => new Redis()), }); // A bot can respond to a mention: bot.on(/hi|hello|what'?s\s+up/i, (ctx) => { return ctx.reply(text`Hi, ${ctx.actor}!`); }); // Or, a bot also can actively publish a post: setInterval(async () => { await bot.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I'm currently brainstorming a framework for creating fediverse bots called , based on . It's less flexible than Fedify, but the goal is to make it possible to create simple fediverse bots with much less code. What do you think?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, mention, text } from "@fedify/botkit"; import { RedisKvStore } from "@fedify/redis"; import { Redis } from "ioredis"; // Create a bot instance: const bot = createBot({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: bio: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social").}`, // Use Redis as a key-value store: kv: new RedisKvStore(new Redis()), // Use Redis as a message queue: queue: new RedisMessageQueue(() => new Redis()), }); // A bot can respond to a mention: bot.on(/hi|hello|what'?s\s+up/i, (ctx) => { return ctx.reply(text`Hi, ${ctx.actor}!`); }); // Or, a bot also can actively publish a post: setInterval(async () => { await bot.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I'm currently brainstorming a framework for creating fediverse bots called , based on . It's less flexible than Fedify, but the goal is to make it possible to create simple fediverse bots with much less code. What do you think?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, mention, text } from "@fedify/botkit"; import { RedisKvStore } from "@fedify/redis"; import { Redis } from "ioredis"; // Create a bot instance: const bot = createBot({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: bio: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social").}`, // Use Redis as a key-value store: kv: new RedisKvStore(new Redis()), // Use Redis as a message queue: queue: new RedisMessageQueue(() => new Redis()), }); // A bot can respond to a mention: bot.on(/hi|hello|what'?s\s+up/i, (ctx) => { return ctx.reply(text`Hi, ${ctx.actor}!`); }); // Or, a bot also can actively publish a post: setInterval(async () => { await bot.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I'm currently brainstorming a framework for creating fediverse bots called , based on . It's less flexible than Fedify, but the goal is to make it possible to create simple fediverse bots with much less code. What do you think?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, mention, text } from "@fedify/botkit"; import { RedisKvStore } from "@fedify/redis"; import { Redis } from "ioredis"; // Create a bot instance: const bot = createBot({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: bio: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social").}`, // Use Redis as a key-value store: kv: new RedisKvStore(new Redis()), // Use Redis as a message queue: queue: new RedisMessageQueue(() => new Redis()), }); // A bot can respond to a mention: bot.on(/hi|hello|what'?s\s+up/i, (ctx) => { return ctx.reply(text`Hi, ${ctx.actor}!`); }); // Or, a bot also can actively publish a post: setInterval(async () => { await bot.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I'm currently brainstorming a framework for creating fediverse bots called , based on . It's less flexible than Fedify, but the goal is to make it possible to create simple fediverse bots with much less code. What do you think?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, mention, text } from "@fedify/botkit"; import { RedisKvStore } from "@fedify/redis"; import { Redis } from "ioredis"; // Create a bot instance: const bot = createBot({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: bio: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social").}`, // Use Redis as a key-value store: kv: new RedisKvStore(new Redis()), // Use Redis as a message queue: queue: new RedisMessageQueue(() => new Redis()), }); // A bot can respond to a mention: bot.on(/hi|hello|what'?s\s+up/i, (ctx) => { return ctx.reply(text`Hi, ${ctx.actor}!`); }); // Or, a bot also can actively publish a post: setInterval(async () => { await bot.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I'm currently brainstorming a framework for creating fediverse bots called , based on . It's less flexible than Fedify, but the goal is to make it possible to create simple fediverse bots with much less code. What do you think?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, mention, text } from "@fedify/botkit"; import { RedisKvStore } from "@fedify/redis"; import { Redis } from "ioredis"; // Create a bot instance: const bot = createBot({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: bio: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social").}`, // Use Redis as a key-value store: kv: new RedisKvStore(new Redis()), // Use Redis as a message queue: queue: new RedisMessageQueue(() => new Redis()), }); // A bot can respond to a mention: bot.on(/hi|hello|what'?s\s+up/i, (ctx) => { return ctx.reply(text`Hi, ${ctx.actor}!`); }); // Or, a bot also can actively publish a post: setInterval(async () => { await bot.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I'm currently brainstorming a framework for creating fediverse bots called , based on . It's less flexible than Fedify, but the goal is to make it possible to create simple fediverse bots with much less code. What do you think?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, mention, text } from "@fedify/botkit"; import { RedisKvStore } from "@fedify/redis"; import { Redis } from "ioredis"; // Create a bot instance: const bot = createBot({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: bio: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social").}`, // Use Redis as a key-value store: kv: new RedisKvStore(new Redis()), // Use Redis as a message queue: queue: new RedisMessageQueue(() => new Redis()), }); // A bot can respond to a mention: bot.on(/hi|hello|what'?s\s+up/i, (ctx) => { return ctx.reply(text`Hi, ${ctx.actor}!`); }); // Or, a bot also can actively publish a post: setInterval(async () => { await bot.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I'm currently brainstorming a framework for creating fediverse bots called , based on . It's less flexible than Fedify, but the goal is to make it possible to create simple fediverse bots with much less code. What do you think?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, mention, text } from "@fedify/botkit"; import { RedisKvStore } from "@fedify/redis"; import { Redis } from "ioredis"; // Create a bot instance: const bot = createBot({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: bio: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social").}`, // Use Redis as a key-value store: kv: new RedisKvStore(new Redis()), // Use Redis as a message queue: queue: new RedisMessageQueue(() => new Redis()), }); // A bot can respond to a mention: bot.on(/hi|hello|what'?s\s+up/i, (ctx) => { return ctx.reply(text`Hi, ${ctx.actor}!`); }); // Or, a bot also can actively publish a post: setInterval(async () => { await bot.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I'm currently brainstorming a framework for creating fediverse bots called , based on . It's less flexible than Fedify, but the goal is to make it possible to create simple fediverse bots with much less code. What do you think?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, mention, text } from "@fedify/botkit"; import { RedisKvStore } from "@fedify/redis"; import { Redis } from "ioredis"; // Create a bot instance: const bot = createBot({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: bio: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social").}`, // Use Redis as a key-value store: kv: new RedisKvStore(new Redis()), // Use Redis as a message queue: queue: new RedisMessageQueue(() => new Redis()), }); // A bot can respond to a mention: bot.on(/hi|hello|what'?s\s+up/i, (ctx) => { return ctx.reply(text`Hi, ${ctx.actor}!`); }); // Or, a bot also can actively publish a post: setInterval(async () => { await bot.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I'm currently brainstorming a framework for creating fediverse bots called , based on . It's less flexible than Fedify, but the goal is to make it possible to create simple fediverse bots with much less code. What do you think?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, mention, text } from "@fedify/botkit"; import { RedisKvStore } from "@fedify/redis"; import { Redis } from "ioredis"; // Create a bot instance: const bot = createBot({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: bio: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social").}`, // Use Redis as a key-value store: kv: new RedisKvStore(new Redis()), // Use Redis as a message queue: queue: new RedisMessageQueue(() => new Redis()), }); // A bot can respond to a mention: bot.on(/hi|hello|what'?s\s+up/i, (ctx) => { return ctx.reply(text`Hi, ${ctx.actor}!`); }); // Or, a bot also can actively publish a post: setInterval(async () => { await bot.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I'm currently brainstorming a framework for creating fediverse bots called , based on . It's less flexible than Fedify, but the goal is to make it possible to create simple fediverse bots with much less code. What do you think?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, mention, text } from "@fedify/botkit"; import { RedisKvStore } from "@fedify/redis"; import { Redis } from "ioredis"; // Create a bot instance: const bot = createBot({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: bio: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social").}`, // Use Redis as a key-value store: kv: new RedisKvStore(new Redis()), // Use Redis as a message queue: queue: new RedisMessageQueue(() => new Redis()), }); // A bot can respond to a mention: bot.on(/hi|hello|what'?s\s+up/i, (ctx) => { return ctx.reply(text`Hi, ${ctx.actor}!`); }); // Or, a bot also can actively publish a post: setInterval(async () => { await bot.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I'm currently brainstorming a framework for creating fediverse bots called , based on . It's less flexible than Fedify, but the goal is to make it possible to create simple fediverse bots with much less code. What do you think?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, mention, text } from "@fedify/botkit"; import { RedisKvStore } from "@fedify/redis"; import { Redis } from "ioredis"; // Create a bot instance: const bot = createBot({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: bio: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social").}`, // Use Redis as a key-value store: kv: new RedisKvStore(new Redis()), // Use Redis as a message queue: queue: new RedisMessageQueue(() => new Redis()), }); // A bot can respond to a mention: bot.on(/hi|hello|what'?s\s+up/i, (ctx) => { return ctx.reply(text`Hi, ${ctx.actor}!`); }); // Or, a bot also can actively publish a post: setInterval(async () => { await bot.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I'm currently brainstorming a framework for creating fediverse bots called , based on . It's less flexible than Fedify, but the goal is to make it possible to create simple fediverse bots with much less code. What do you think?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, mention, text } from "@fedify/botkit"; import { RedisKvStore } from "@fedify/redis"; import { Redis } from "ioredis"; // Create a bot instance: const bot = createBot({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: bio: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social").}`, // Use Redis as a key-value store: kv: new RedisKvStore(new Redis()), // Use Redis as a message queue: queue: new RedisMessageQueue(() => new Redis()), }); // A bot can respond to a mention: bot.on(/hi|hello|what'?s\s+up/i, (ctx) => { return ctx.reply(text`Hi, ${ctx.actor}!`); }); // Or, a bot also can actively publish a post: setInterval(async () => { await bot.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I'm currently brainstorming a framework for creating fediverse bots called , based on . It's less flexible than Fedify, but the goal is to make it possible to create simple fediverse bots with much less code. What do you think?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, mention, text } from "@fedify/botkit"; import { RedisKvStore } from "@fedify/redis"; import { Redis } from "ioredis"; // Create a bot instance: const bot = createBot({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: bio: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social").}`, // Use Redis as a key-value store: kv: new RedisKvStore(new Redis()), // Use Redis as a message queue: queue: new RedisMessageQueue(() => new Redis()), }); // A bot can respond to a mention: bot.on(/hi|hello|what'?s\s+up/i, (ctx) => { return ctx.reply(text`Hi, ${ctx.actor}!`); }); // Or, a bot also can actively publish a post: setInterval(async () => { await bot.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I'm currently brainstorming a framework for creating fediverse bots called , based on . It's less flexible than Fedify, but the goal is to make it possible to create simple fediverse bots with much less code. What do you think?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, mention, text } from "@fedify/botkit"; import { RedisKvStore } from "@fedify/redis"; import { Redis } from "ioredis"; // Create a bot instance: const bot = createBot({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: bio: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social").}`, // Use Redis as a key-value store: kv: new RedisKvStore(new Redis()), // Use Redis as a message queue: queue: new RedisMessageQueue(() => new Redis()), }); // A bot can respond to a mention: bot.on(/hi|hello|what'?s\s+up/i, (ctx) => { return ctx.reply(text`Hi, ${ctx.actor}!`); }); // Or, a bot also can actively publish a post: setInterval(async () => { await bot.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I'm currently brainstorming a framework for creating fediverse bots called , based on . It's less flexible than Fedify, but the goal is to make it possible to create simple fediverse bots with much less code. What do you think?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, mention, text } from "@fedify/botkit"; import { RedisKvStore } from "@fedify/redis"; import { Redis } from "ioredis"; // Create a bot instance: const bot = createBot({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: bio: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social").}`, // Use Redis as a key-value store: kv: new RedisKvStore(new Redis()), // Use Redis as a message queue: queue: new RedisMessageQueue(() => new Redis()), }); // A bot can respond to a mention: bot.on(/hi|hello|what'?s\s+up/i, (ctx) => { return ctx.reply(text`Hi, ${ctx.actor}!`); }); // Or, a bot also can actively publish a post: setInterval(async () => { await bot.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I'm currently brainstorming a framework for creating fediverse bots called , based on . It's less flexible than Fedify, but the goal is to make it possible to create simple fediverse bots with much less code. What do you think?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, mention, text } from "@fedify/botkit"; import { RedisKvStore } from "@fedify/redis"; import { Redis } from "ioredis"; // Create a bot instance: const bot = createBot({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: bio: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social").}`, // Use Redis as a key-value store: kv: new RedisKvStore(new Redis()), // Use Redis as a message queue: queue: new RedisMessageQueue(() => new Redis()), }); // A bot can respond to a mention: bot.on(/hi|hello|what'?s\s+up/i, (ctx) => { return ctx.reply(text`Hi, ${ctx.actor}!`); }); // Or, a bot also can actively publish a post: setInterval(async () => { await bot.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

Introducing . Hollo is an -enabled single-user microblogging software. Although it's for a single user, it also supports creating and running multiple accounts for different topics.

It's headless, meaning you can use existing client apps instead, with its Mastodon-compatible APIs. It has most feature parity with Mastodon. Two big differences with Mastodon is that you can use in the content of your posts and you can quote another post.

Oh, and Hollo is built using and .

https://github.com/dahlia/hollo

Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

Introducing . Hollo is an -enabled single-user microblogging software. Although it's for a single user, it also supports creating and running multiple accounts for different topics.

It's headless, meaning you can use existing client apps instead, with its Mastodon-compatible APIs. It has most feature parity with Mastodon. Two big differences with Mastodon is that you can use in the content of your posts and you can quote another post.

Oh, and Hollo is built using and .

https://github.com/dahlia/hollo

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

I wrote a blog post to wrap up the year 2024: A year with the fediverse.

https://writings.hongminhee.org/2024/12/a-year-with-the-fediverse/index.en.html

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

@fedify@hollo.social

Looking for a side project to do over the holidays? Why not create your own server with ?

https://fedify.dev/tutorial/microblog

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@hollo.social

I'd like to translate '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. ๐Ÿค”

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

@fedify@hollo.social

Since 1.4.0, our next release, the fedify lookup command will have the -t/--traverse option! It takes a URL of the collection, and traverse its items from the beginning to the end. Here's a demo:

The demo session of the -t/--traverse option which will be introduced to the fedify lookup command since Fedify 1.4.0.
ALT text detailsThe demo session of the -t/--traverse option which will be introduced to the fedify lookup command since Fedify 1.4.0.
Chrisโ€‹โ€Œโ€‹โ€ฌ Hayesโ€Œโ€‹โ€‹โ€‹'s avatar
Chrisโ€‹โ€Œโ€‹โ€ฌ Hayesโ€Œโ€‹โ€‹โ€‹

@chris_hayes@fosstodon.org

I made a thing. You can put a Mastodon post URL in the search box and it will show the post.

fediverse.hayes.software

I was learning and I wanted to make a minimal Next.js example of a "read-only" app that was for consuming the Fediverse and didn't mess with interactions. It started as a boilerplate to benefit other devs, but the act of making it forced me to learn a lot more about Fedify and ActivityPub.

A screenshot showing 2 browser windows, one in landscape format, one in portrait format, to represent desktop and mobile viewports. The design is very yellow and sepia-ish showing a toot and an image next to it. A lot of brush and marker strokes are incorporated into the design. Otherwise the design is minimal.
ALT text detailsA screenshot showing 2 browser windows, one in landscape format, one in portrait format, to represent desktop and mobile viewports. The design is very yellow and sepia-ish showing a toot and an image next to it. A lot of brush and marker strokes are incorporated into the design. Otherwise the design is minimal.
Osma A ๐Ÿ‡ซ๐Ÿ‡ฎ๐Ÿ‡บ๐Ÿ‡ฆ's avatar
Osma A ๐Ÿ‡ซ๐Ÿ‡ฎ๐Ÿ‡บ๐Ÿ‡ฆ

@osma@mas.to

Wondering how much work it would be to stick together and an as-of-yet-unidentified framework to have a blog be on both and natively at once.

Chrisโ€‹โ€Œโ€‹โ€ฌ Hayesโ€Œโ€‹โ€‹โ€‹'s avatar
Chrisโ€‹โ€Œโ€‹โ€ฌ Hayesโ€Œโ€‹โ€‹โ€‹

@chris_hayes@fosstodon.org

I was looking at the properties on the Person object implemented by , and wasn't expecting this one, haha!

I'm presuming this is related? The quirks of having to implement many different versions of a spec!

A screenshot of a code editor showing a TypeScript class Person with a property get cat(): boolean | null. The accompanying comment explains that the property is "used on actors to indicate that they in some way identify as a cat, expressed as a boolean value. If this property is set to true, displaying the actor or their notes will have some special effects attached in some clients."
ALT text detailsA screenshot of a code editor showing a TypeScript class Person with a property get cat(): boolean | null. The accompanying comment explains that the property is "used on actors to indicate that they in some way identify as a cat, expressed as a boolean value. If this property is set to true, displaying the actor or their notes will have some special effects attached in some clients."
Chrisโ€‹โ€Œโ€‹โ€ฌ Hayesโ€Œโ€‹โ€‹โ€‹'s avatar
Chrisโ€‹โ€Œโ€‹โ€ฌ Hayesโ€Œโ€‹โ€‹โ€‹

@chris_hayes@fosstodon.org

- I'm learning ActivityPub for a larger project, but taking a moment to and code a minimal fediverse reader.

I found it tricky learning to make a read-only app with , so wanted to make this example Next.js project available. Got a little carried away with the design.

Mockup in , it's a better prototyping tool than one might expect.

Hopefully @tamami doesn't mind me using her nice post in my mockup :blobcatfingergun:.

A design mockup of a minimalistic "Fediverse Reader" app created in Inkscape, showcasing layouts for desktop and mobile screens. The designs include variations of a homepage and post view with text and images. The interface uses light yellow tones and emphasizes simplicity with modern, clean lines.
ALT text detailsA design mockup of a minimalistic "Fediverse Reader" app created in Inkscape, showcasing layouts for desktop and mobile screens. The designs include variations of a homepage and post view with text and images. The interface uses light yellow tones and emphasizes simplicity with modern, clean lines.
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

The repository has reached 600 stars! Thank you everyone!

https://github.com/dahlia/fedify

The Fedify repository has reached 602 stars.
ALT text detailsThe Fedify repository has reached 602 stars.
Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

Hollo 0.3.0 released! is a single-user federated microblogging software which is -enabled and powered by .

The key changes of this release include:

  • Thanks to @joschi, Hollo now support local filesystem storage for media files. You can configure DRIVE_DISK=fs and FS_ASSET_PATH to store media files in the local filesystem. For users who've used S3, no further action is requiredโ€”but, it's recommended to configure DRIVE_DISK=s3 as DRIVE_DISK will be required in the future releases.
  • Added support for Sentry. If you want to see error reports and instrumented traces in Sentry, please configure SENTRY_DSN.
  • Added pagination to the profile page.
  • Minor performance improvements and bug fixes due to upgrading Fedify to 1.3.0.

You can upgrade to Hollo 0.3.0 using the following ways:

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

1.3.0์ด ๋ฆด๋ฆฌ์Šค๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์„œํฌํŠธ๋“ค ๋น„๋กฏํ•ด ๋งŽ์€ ๊ฒƒ์ด ๋ฐ”๋€Œ์—ˆ์œผ๋‹ˆ, ์•„๋ž˜ ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ์—์„œ ์‚ดํŽด๋ณด์„ธ์š”!

velog.io/@hongminhee/fedify-1.

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

As a side note, most of the new features added in this release were commissioned by .

hollo.social/@fedify/01937890-

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

@fedify@hollo.social

The version 1.3.0 of , an server framework, released! The key changes include:

For details, see the full changelog as well!

Fedify 1.3.0 is available at JSR and npm.

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

I would like to translate 's docs into Korean and Japanese, the languages I can speak, but the amount of the docs is quite much, so I can't even think of doing it. The maintenance costs for updating the docs also cannot be ignored. :blobcatnotlikethis:

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

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

's @opentelemetry instrumentation works like a charm with @getsentry! :opentelemetry: :sentry:

A trace view on Sentry. Many spans are on the instrumentation timeline.
ALT text detailsA trace view on Sentry. Many spans are on the instrumentation timeline.
A trace view on Sentry. Many spans are on the instrumentation timeline.
ALT text detailsA trace view on Sentry. Many spans are on the instrumentation timeline.
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

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

:opentelemetry: @opentelemetry instruments are being added one by one to โ€ฆ!

Instrumented spans

Fedify automatically instruments the following operations with OpenTelemetry spans:

Operation	Span type	Description
Federation.fetch()	Server	Serves the incoming HTTP request.
lookupObject()	Client	Looks up the Activity Streams object.
lookupWebFinger()	Client	Looks up the WebFinger resource.
handleWebFinger()	Server	Handles the WebFinger request.

More operations will be instrumented in the future releases.
ALT text detailsInstrumented spans Fedify automatically instruments the following operations with OpenTelemetry spans: Operation Span type Description Federation.fetch() Server Serves the incoming HTTP request. lookupObject() Client Looks up the Activity Streams object. lookupWebFinger() Client Looks up the WebFinger resource. handleWebFinger() Server Handles the WebFinger request. More operations will be instrumented in the future releases.
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

Though we have OpenTelemetry Semantic Conventions 1.28.0, it does not yet define attributes related to the fediverse. So 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

Semantic attributes for ActivityPub

The OpenTelemetry Semantic Conventions currently do not have a specification for ActivityPub.  However, Fedify provides a set of semantic attributes for ActivityPub.  The following table shows the semantic attributes for ActivityPub:

Attribute 	Type 	Description 	Examples
activitypub.activity.id 	string 	The IRI of the activity object. 	"https://example.com/activity/1"
activitypub.activity.type 	string[] 	The qualified IRI(s) of the activity type(s). 	["https://www.w3.org/ns/activitystreams#Create"]
activitypub.activity.to 	string[] 	The IRI(s) of the recipient collections/actors of the activity. 	["https://example.com/1/followers/2"]
activitypub.activity.cc 	string[] 	The IRI(s) of the carbon-copied recipient collections/actors of the activity. 	["https://www.w3.org/ns/activitystreams#Public"]
activitypub.activity.resend_count 	int 	The ordinal number of activity resending attempt (if and only if it's retried). 	3
activitypub.actor.id 	string 	The IRI of the actor object. 	"https://example.com/actor/1"
activitypub.actor.type 	string[] 	The qualified IRI(s) of the actor type(s). 	["https://www.w3.org/ns/activitystreams#Person"]
activitypub.object.id 	string 	The IRI of the object or the object enclosed by the activity. 	"https://example.com/object/1"
activitypub.object.type 	string[] 	The qualified IRI(s) of the object type(s). 	["https://www.w3.org/ns/activitystreams#Note"]
activitypub.object.in_reply_to 	string[] 	The IRI(s) of the orig
ALT text detailsSemantic attributes for ActivityPub The OpenTelemetry Semantic Conventions currently do not have a specification for ActivityPub. However, Fedify provides a set of semantic attributes for ActivityPub. The following table shows the semantic attributes for ActivityPub: Attribute Type Description Examples activitypub.activity.id string The IRI of the activity object. "https://example.com/activity/1" activitypub.activity.type string[] The qualified IRI(s) of the activity type(s). ["https://www.w3.org/ns/activitystreams#Create"] activitypub.activity.to string[] The IRI(s) of the recipient collections/actors of the activity. ["https://example.com/1/followers/2"] activitypub.activity.cc string[] The IRI(s) of the carbon-copied recipient collections/actors of the activity. ["https://www.w3.org/ns/activitystreams#Public"] activitypub.activity.resend_count int The ordinal number of activity resending attempt (if and only if it's retried). 3 activitypub.actor.id string The IRI of the actor object. "https://example.com/actor/1" activitypub.actor.type string[] The qualified IRI(s) of the actor type(s). ["https://www.w3.org/ns/activitystreams#Person"] activitypub.object.id string The IRI of the object or the object enclosed by the activity. "https://example.com/object/1" activitypub.object.type string[] The qualified IRI(s) of the object type(s). ["https://www.w3.org/ns/activitystreams#Note"] activitypub.object.in_reply_to string[] The IRI(s) of the orig
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

If you are using on , the minimum supported Deno version will be raised to 2.0.0 starting with Fedify 1.3.0.

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

@fedify@hollo.social

Thanks to @robin_maki, integration support has been added to ! This feature will be included in Fedify 1.3.0.

https://unstable.fedify.dev/manual/integration#sveltekit

SvelteKit

This API is available since Fedify 1.3.0.

SvelteKit is a framework for building web applications with Svelte. Fedify has the @fedify/fedify/x/sveltekit module that provides a hook handler to integrate Fedify with SvelteKit. Put the following code in your hooks.server.ts file:

import { createFederation } from "@fedify/fedify";
import { fedifyHook } from "@fedify/fedify/x/sveltekit";

const federation = createFederation<string>({
  // Omitted for brevity; see the related section for details.
});

// This is the entry point to the Fedify hook from the SvelteKit framework:
export const handle = fedifyHook(federation, (req) => "context data");
ALT text detailsSvelteKit This API is available since Fedify 1.3.0. SvelteKit is a framework for building web applications with Svelte. Fedify has the @fedify/fedify/x/sveltekit module that provides a hook handler to integrate Fedify with SvelteKit. Put the following code in your hooks.server.ts file: import { createFederation } from "@fedify/fedify"; import { fedifyHook } from "@fedify/fedify/x/sveltekit"; const federation = createFederation<string>({ // Omitted for brevity; see the related section for details. }); // This is the entry point to the Fedify hook from the SvelteKit framework: export const handle = fedifyHook(federation, (req) => "context data");
ใ‚‚ใกใ‚‚ใกใšใใ‚“ :teto_zuho: ๐Ÿ†'s avatar
ใ‚‚ใกใ‚‚ใกใšใใ‚“ :teto_zuho: ๐Ÿ†

@Yohei_Zuho@mstdn.y-zu.org

ใจใฏ๏ผŸ
ActivityPubใ‚ตใƒผใƒใƒผใ‚’่‡ชไฝœใ™ใ‚‹ใŸใ‚ใฎใƒ•ใƒฌใƒผใƒ ใƒฏใƒผใ‚ฏ๏ผˆ TS ๏ผ‰
ใ‚„ใฃใฆใใ‚Œใ‚‹ใ“ใจ๏ผšAPIใƒ—ใƒญใƒˆใ‚ณใƒซใซๅŸบใฅใใƒชใƒขใƒผใƒˆใ‚ตใƒผใƒใƒผใจใฎ้€šไฟก
่‡ชๅˆ†ใงใ‚„ใ‚‹ใ“ใจ๏ผšใƒฆใƒผใ‚ถใƒผ็ฎก็†ใ€ๆŠ•็จฟ็ฎก็†ใ€DB็ฎก็†etc

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

์„œ๋ฒ„ ๋งŒ๋“ค ๋•Œ ๋””๋ฒ„๊น…ํ•˜๊ธฐ ์–ด๋ ค์šฐ์‹ ๊ฐ€์š”? CLI์˜ ์ˆจ์€ ํ”ผ์ฒ˜๋“ค์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค!

โ€ข authorized fetch๊ฐ€ ๊ฑธ๋ฆฐ API๋„ ์‰ฝ๊ฒŒ ํ…Œ์ŠคํŠธ
โ€ข ๋ฐ›์€ ์•กํ‹ฐ๋น„ํ‹ฐ์˜ ๋””ํ…Œ์ผ ๋ณด๊ธฐ
โ€ข NodeInfo ๋ฐ์ดํ„ฐ ๋น„์ฃผ์–ผ๋ผ์ด์ œ์ด์…˜
โ€ข ๋กœ์ปฌ ์„œ๋ฒ„ ํ„ฐ๋„๋ง

velog.io/@hongminhee/hidden-ge

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

Did you know the CLI can help debug federation?

Learn about hidden features like:

โ€ข Smart object lookup with content negotiation
โ€ข Interactive inbox testing with a web UI
โ€ข NodeInfo visualization
โ€ข Local development tunneling
โ€ข And more!

dev.to/hongminhee/hidden-gems-

Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

The v0.2.3 has been released, which fixes a few bugs and brings to the latest version, v1.2.7. If you are using the Docker image, you can upgrade by using the ghcr.io/dahlia/hollo:0.2.3.

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

My inbox after releasing bug fixes to .

A screenshot of the inbox with nine new mails from npm.
ALT text detailsA screenshot of the inbox with nine new mails from npm.
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

๋‚ด์ผ ์„œ์šธ ์„œ์ดˆ๊ตฌ ์˜คํ”ˆ์—… ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ์—์„œ ์ด๋ค„์ง€๋Š” Open Contribution Jam 2024์— ๋ฉ”์ธํ…Œ์ด๋„ˆ(@hongminhee)๊ฐ€ ์ฐธ์—ฌํ•ฉ๋‹ˆ๋‹ค. Fedify์— ๊ธฐ์—ฌํ•ด๋ณด๊ณ  ์‹ถ์€ ๋ถ„๋“ค์€ ์™€์ฃผ์‹œ๋ฉด ๋ฉ”์ธํ…Œ์ด๋„ˆ๊ฐ€ ์„ฑ์‹ฌ๊ป ๋„์™€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค! ์ž์„ธํ•œ ํ–‰์‚ฌ ์ •๋ณด๋Š” ์•„๋ž˜ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

https://festa.io/events/6342

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

@fedify@hollo.social

We are going to add instrumentation support for to . What kind of spans or events would you like to be instrumented?

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

@fedify@hollo.social

Starting with 1.3.0, you'll be able to use different message queues for incoming and outgoing activities!

https://unstable.fedify.dev/manual/mq#using-different-message-queues-for-different-tasks

Using different message queues for different tasks

This API is available since Fedify 1.3.0.

In some cases, you may want to use different message queues for different tasks, such as using a faster-but-less-persistent queue for outgoing activities and a slower-but-more-persistent queue for incoming activities. To achieve this, you can pass FederationQueueOptions to the CreateFederationOptions.queue option.

For example, the following code shows how to use a PostgresMessageQueue for the inbox and a RedisMessageQueue for the outbox:

const federation = createFederation<void>({
  queue: {
    inbox: new PostgresMessageQueue(
      postgres("postgresql://user:pass@localhost/db")
    ),
    outbox: new RedisMessageQueue(() => new Redis()),
  },
  // ... other options
});

Or, you can provide a message queue for only the inbox or outbox by omitting the other:

const federation = createFederation<void>({
  queue: {
    inbox: new PostgresMessageQueue(
      postgres("postgresql://user:pass@localhost/db")
    ),
    // outbox is not provided; outgoing activities will not be queued
  },
  // ... other options
});
ALT text detailsUsing different message queues for different tasks This API is available since Fedify 1.3.0. In some cases, you may want to use different message queues for different tasks, such as using a faster-but-less-persistent queue for outgoing activities and a slower-but-more-persistent queue for incoming activities. To achieve this, you can pass FederationQueueOptions to the CreateFederationOptions.queue option. For example, the following code shows how to use a PostgresMessageQueue for the inbox and a RedisMessageQueue for the outbox: const federation = createFederation<void>({ queue: { inbox: new PostgresMessageQueue( postgres("postgresql://user:pass@localhost/db") ), outbox: new RedisMessageQueue(() => new Redis()), }, // ... other options }); Or, you can provide a message queue for only the inbox or outbox by omitting the other: const federation = createFederation<void>({ queue: { inbox: new PostgresMessageQueue( postgres("postgresql://user:pass@localhost/db") ), // outbox is not provided; outgoing activities will not be queued }, // ... other options });
์—ผ์‚ฐํ•˜

@ysh@social.long-echo.net

๋กœ ํŽ˜๋””๋ฒ„์Šค ํฌ์ŠคํŠธ๋“ค ๋ฐฑ์—…์„ ํ•  ์ˆ˜ ์žˆ์„๊นŒ.

anno189

@anno189@hollo.1dian.site

ActivityPub server framework in TypeScript https://fedify.dev/

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

Star History of , , and :

star-history.com/#dahlia/fedif

Star History of Fedify, Hollo, and LogTape.
ALT text detailsStar History of Fedify, Hollo, and LogTape.
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

Flyers for and to be used at an open source event in Japan!

https://mstdn.y-zu.org/@Yohei_Zuho/113440544215822210

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

๋ชจ๋‘๋“ค ์Šค์Šค๋กœ๋งŒ์˜ ์†Œํ”„ํŠธ์›จ์–ด์„ ๋งŒ๋“ค์–ด ๋ด…์‹œ๋‹ค! ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์“ฐ๋ฉด ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

hackmd.io/@hongminhee/fedify-t

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

Let's all build your own implementation! makes it easy!

fedify.dev/tutorial/microblog

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

@fedify@hollo.social

Starting with 1.3.0, you can customize the User-Agent header for every HTTP request that Fedify makes.

https://unstable.fedify.dev/manual/federation#useragent

userAgent

This API is available since Fedify 1.3.0.

The options for making User-Agent header in the HTTP requests that Fedify makes. By default, it contains the name and version of the Fedify library, and the name and version of the JavaScript runtime, e.g.:

Fedify/1.3.0 (Deno/2.0.4)
Fedify/1.3.0 (Node.js/v22.10.0)
Fedify/1.3.0 (Bun/1.1.33)

You can customize the User-Agent header by providing options like software and url. For example, if you provide the following options:

{
  software: "MyApp/1.0.0",
  url: "https://myinstance.com/"
}

The User-Agent header will be like:

MyApp/1.0.0 (Fedify/1.3.0; Deno/2.0.4; +https://myinstance.com/)

Or, you can rather provide a custom User-Agent string directly instead of an object for options.
ALT text detailsuserAgent This API is available since Fedify 1.3.0. The options for making User-Agent header in the HTTP requests that Fedify makes. By default, it contains the name and version of the Fedify library, and the name and version of the JavaScript runtime, e.g.: Fedify/1.3.0 (Deno/2.0.4) Fedify/1.3.0 (Node.js/v22.10.0) Fedify/1.3.0 (Bun/1.1.33) You can customize the User-Agent header by providing options like software and url. For example, if you provide the following options: { software: "MyApp/1.0.0", url: "https://myinstance.com/" } The User-Agent header will be like: MyApp/1.0.0 (Fedify/1.3.0; Deno/2.0.4; +https://myinstance.com/) Or, you can rather provide a custom User-Agent string directly instead of an object for options.
Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

Hollo 0.2.0 released! is a single-user federated microblogging software which is -enabled and powered by .

The key changes of this release include:

  1. Thanks to @thisismissem, now you can report remote accounts and posts.

  2. Added two-factor authentication support.

  3. Thanks again to @thisismissem, Hollo improved alignment on Mastodon API changes about OAuth and apps.

  4. Thanks again to @thisismissem, RFC 8414 for OAuth Authorization Server metadata endpoint. It will improve interoperability between Hollo and Mastodon-compatible client apps.

  5. Renamed the Data menu from the administration dashboard to Federation, and:

    • Now posts also can be force-refreshed.
    • Now the number of messages in the task queue is shown.
  6. Custom emojis now can be deleted from the administration dashboard.

  7. Thanks to @helge, PORT and ALLOW_PRIVATE_ADDRESS environment variables are introduced.

  8. Added a favicon.

  9. Dropped support for Redis, which was an optional dependency.

You can upgrade to Hollo 0.2.0 using the following ways:

5-a. Now posts also can be force-refreshed.
ALT text details5-a. Now posts also can be force-refreshed.
5-b. Now the number of messages in the task queue is shown.
ALT text details5-b. Now the number of messages in the task queue is shown.
6. Custom emojis now can be deleted from the administration dashboard.
ALT text details6. Custom emojis now can be deleted from the administration dashboard.
2. Added two-factor authentication support.
ALT text details2. Added two-factor authentication support.
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

Have you heard of Val Town? Val Town is a kind of code pastebin + serverless function.

Actually, works just fine with Val Town. Here's a piece of ActivityPub software, implemented in about 170 lines of code, running on Val Town. Of course, it's built with Fedify!

Give it a follow @demo, and it will follow you back.

Curious to see how it was implemented? Check out the source code!

https://www.val.town/v/minhee/FedifyOnValTown

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

@fedify@hollo.social

We've added the build guide to the CONTRIBUTING.md docs in the repository. We hope this is helpful for those who want to contribute to Fedify!

https://github.com/dahlia/fedify/blob/main/CONTRIBUTING.md#build

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

@fedify@hollo.social

What are your thoughts on Fedify's docs?

OptionVoters
Comprehensive and easy to understand4 (67%)
Comprehensive but hard to understand0 (0%)
Limited but easy to understand1 (17%)
Limited and hard to understand1 (17%)
Charles Chin's avatar
Charles Chin

@eallion@e5n.cc


fedify node -b e5n.cc

fedify.dev/cli#fedify-node-vis

fedify node command
ALT text detailsfedify node command
poes :pla:'s avatar
poes :pla:

@poes@kauaku.us

#fedify

minat tapi kayaknya terlalu overkill untuk 1 user instance, butuh postgres, redis dll.

Fedify CLI : node info for kauaku.us
ALT text detailsFedify CLI : node info for kauaku.us
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

The version 1.2.0 of , an server framework, released! The key changes include:

For details, see the full changelog as well!

Fedify 1.2.0 is available at JSR and npm.

Pablo Berganza (he/him)'s avatar
Pablo Berganza (he/him)

@pablo@sivar.cafe

Continued my experiments with and yesterday and I think Iโ€™m confused.

I was trying to make an extension for an Object, and if I understand , the context property contains the definition of any extra property added. I see e.g. the activity streams ns resolves to a nice JSON LD that contains all the properties, but the mastodon one doesnโ€™t resolve to anything? Is it not necessary?

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

@fedify@hollo.social

Starting with the next release of , v1.2.0, we will support traceable logs for easier debugging. Fedify's traceable logs are implemented using the implicit contexts introduced in LogTape 0.7.0, and most of the logs that Fedify records are given a requestId or messageId. This means that logs can be grouped into requests or background tasks for better analysis.

Want to try it out in advance? Try Fedify v1.2.0-dev.468+2e17cd69 (JSR & npm)!

ๆดช ๆฐ‘ๆ†™๏ผˆใƒ›ใƒณใƒปใƒŸใƒณใƒ’๏ผ‰'s avatar
ๆดช ๆฐ‘ๆ†™๏ผˆใƒ›ใƒณใƒปใƒŸใƒณใƒ’๏ผ‰

@hongminhee@fedibird.com ยท Reply to ๆดช ๆฐ‘ๆ†™๏ผˆใƒ›ใƒณใƒปใƒŸใƒณใƒ’๏ผ‰'s post

ไปŠๆ—ฅFedify/Holloใฎใƒ–ใƒผใ‚นใซ่จชๅ•ใ—ใฆใใ‚ŒใŸ็š†ๆง˜ใ€ๆœฌๅฝ“ใซใ‚ใ‚ŠใŒใจใ†ใ”ใ–ใ„ใพใ—ใŸโ€ผ๏ธๆฉŸไผšใŒใ‚ใ‚Œใฐๆ˜ฏ้žใพใŸใŠไผšใ„ใพใ—ใ‚‡ใ†๏ผ

ๆดช ๆฐ‘ๆ†™๏ผˆใƒ›ใƒณใƒปใƒŸใƒณใƒ’๏ผ‰'s avatar
ๆดช ๆฐ‘ๆ†™๏ผˆใƒ›ใƒณใƒปใƒŸใƒณใƒ’๏ผ‰

@hongminhee@fedibird.com ยท Reply to ๆดช ๆฐ‘ๆ†™๏ผˆใƒ›ใƒณใƒปใƒŸใƒณใƒ’๏ผ‰'s post

FedifyใจHolloใฎใƒ–ใƒผใ‚นใงใ™๏ผ

Pablo Berganza (he/him)'s avatar
Pablo Berganza (he/him)

@pablo@sivar.cafe

As someone who works mainly in the front-end, ActivityPup (and related) always felt quite overwhelming and complicated to understand. Iโ€™ve been playing around with for the past week or so and the documentation is so good it all just clicked for me! (I think so, at least :p)

Really excited to see what people build as ActivityPub becomes more approachable!

fedify.dev

ๆดช ๆฐ‘ๆ†™๏ผˆใƒ›ใƒณใƒปใƒŸใƒณใƒ’๏ผ‰'s avatar
ๆดช ๆฐ‘ๆ†™๏ผˆใƒ›ใƒณใƒปใƒŸใƒณใƒ’๏ผ‰

@hongminhee@fedibird.com

ไปŠ้€ฑๅœŸๆ›œๆ—ฅใซ้–‹ๅ‚ฌใ•ใ‚Œใ‚‹OSC 2024 Tokyo/FallใซFedify/HolloๅˆๅŒใงๅ‡บๅฑ•ใ—ใพใ™๏ผๅฏๆ„›ใ„Fedifyใฎใƒญใ‚ดใฎใ‚ทใƒผใƒซใจใ€Ž่‡ชๅˆ†ใ ใ‘ใฎใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นใฎใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐใ‚’ไฝœใ‚ใ†๏ผใ€ๆ—ฅๆœฌ่ชž็‰ˆใฎ็ด™ใฎๆœฌใ‚’ๆŒใฃใฆ่กŒใไบˆๅฎšใงใ™ใ€‚ใ‚ˆใ‚ใ—ใใŠ้ก˜ใ„ใ—ใพใ™ใ€‚

event.ospn.jp/osc2024-fall/

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

Cutting stickers with scissors.

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

I'm bringing along the Japanese version of the tutorial, Creating your own federated microblog.

github.com/dahlia/fedify-micro

The cover of the Japanese version of the Fedify tutorial, Creating your own federated microblog.
ALT text detailsThe cover of the Japanese version of the Fedify tutorial, Creating your own federated microblog.
A page of the Japanese version of the Fedify tutorial, Creating your own federated microblog.
ALT text detailsA page of the Japanese version of the Fedify tutorial, Creating your own federated microblog.
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

Due to the Internet Archive's unavailability, the https://purl.archive.org/socialweb/webfinger context is unable to be loaded, so a patch was made to preload (embed) the JSON-LD context. This patch was applied to versions 0.15.3, 1.0.5, and 1.1.1, so please update if you are experiencing this issue.

internetarchive's avatar
internetarchive

@internetarchive@mastodon.archive.org

Latest update from @brewsterkahle (Oct 17, 5:58pm): blog.archive.org/2024/10/18/in

Last week, along with a DDOS attack and exposure of patron email addresses and encrypted passwords, the Internet Archiveโ€™s website javascript was defaced, leading us to bring the site down to access and improve our security. 

The stored data of the Internet Archive is safe and we are working on resuming services safely. This new reality requires heightened attention to cyber security and we are responding. We apologize for the impact of these library services being unavailable.

The Wayback Machine, Archive-It, scanning, and national library crawls have resumed, as well as email, blog, helpdesk, and social media communications.  Our team is working around the clock across time zones to bring other services back online. In coming days more services will resume, some starting in read-only mode as full restoration will take more time. 

Weโ€™re taking a cautious, deliberate approach to rebuild and strengthen our defenses. Our priority is ensuring the Internet Archive comes online stronger and more secure.

As a library community, we are seeing other cyber attacksโ€”for instance the British Library, Seattle Public Library, Toronto Public Library, and now Calgary Public Library. We hope these attacks are not indicative of a trend.

For the latest updates, please check this blog and our official social media accounts: X/Twitter, Bluesky and Mastodon.

Thank you for your patience and ongoing support.
ALT text detailsLast week, along with a DDOS attack and exposure of patron email addresses and encrypted passwords, the Internet Archiveโ€™s website javascript was defaced, leading us to bring the site down to access and improve our security. The stored data of the Internet Archive is safe and we are working on resuming services safely. This new reality requires heightened attention to cyber security and we are responding. We apologize for the impact of these library services being unavailable. The Wayback Machine, Archive-It, scanning, and national library crawls have resumed, as well as email, blog, helpdesk, and social media communications. Our team is working around the clock across time zones to bring other services back online. In coming days more services will resume, some starting in read-only mode as full restoration will take more time. Weโ€™re taking a cautious, deliberate approach to rebuild and strengthen our defenses. Our priority is ensuring the Internet Archive comes online stronger and more secure. As a library community, we are seeing other cyber attacksโ€”for instance the British Library, Seattle Public Library, Toronto Public Library, and now Calgary Public Library. We hope these attacks are not indicative of a trend. For the latest updates, please check this blog and our official social media accounts: X/Twitter, Bluesky and Mastodon. Thank you for your patience and ongoing support.
Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

Finally, Hollo 0.1.0 released! is a single-user federated microblogging software which is -enabled and powered by .

Hollo has the most of features that Mastodon has except for moderation tools, and also include:

  • CommonMark (a.k.a. Markdown) and up to 4,096 characters per post
  • Misskey-style quotes (compatible with Misskey, Akkoma, Fedibird, etc)
  • Misskey-style emoji reactions (both Unicode emojis and custom emojis are supported; compatible with Misskey, Akkoma, kmyblue, etc)
  • Generally much relaxed limitations (more poll options, more attachments, and so on)
  • โ€ฆ and many more!

If you're interested in Hollo, please give it a try! There are several ways to install it: using Railway, using Docker (and Docker Compose), or manually.

If you're already using Hollo, please upgrade it to v0.1.0:

Charles Chin's avatar
Charles Chin

@eallion@e5n.cc

Fedify ่ถŠๆฅ่ถŠๅผบๅคงไบ†๏ผŒๅฎ˜ๆ–น็”š่‡ณ่ฟ˜ๅ‡บไบ†ไธ€็ฏ‡ๆ•™็จ‹๏ผš fedify.dev/tutorial/microblog

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

Want to build your own software? Follow the tutorial for , the ActivityPub server framework!

fedify.dev/tutorial/microblog

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

@fedify@hollo.social

The version 1.1.0 of , an server framework, released! The key changes include:

  • Added uility functions for traversing remote collections. See also the Traversing remote collections section in the docs.

  • Added EmojiReact class to Activity Vocabulary API. [FEP-c0e0]

  • Added successor property to the Actor types in the Activity Vocabulary API.

  • Added DidService class to Activity Vocabulary API. [FEP-9091]

  • Added Export class to Activity Vocabulary API. [FEP-9091]

  • Added service property to the Actor types in the Activity Vocabulary API. [FEP-9091]

  • The default time window for verifying HTTP Signatures of incoming requests is now an hour (was a minute). This new default window is according to the ActivityPub and HTTP Signatures document.

  • In the fedify inbox command's web interface, the Raw Activity tab is added to show the raw JSON object of the received activity.

For details, see the full changelog as well!

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

The development speed of is itself an advertisement for . :ablobcatbongo:

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

@fedify@hollo.social

The Japanese version of the tutorial, Creating your own federated microblog, is now available in paperback!

Note that the AsciiDoc source of the book is fully open source, which is available at this repository!

https://fedibird.com/@hongminhee/113331365440336287

ๆดช ๆฐ‘ๆ†™๏ผˆใƒ›ใƒณใƒปใƒŸใƒณใƒ’๏ผ‰'s avatar
ๆดช ๆฐ‘ๆ†™๏ผˆใƒ›ใƒณใƒปใƒŸใƒณใƒ’๏ผ‰

@hongminhee@fedibird.com ยท Reply to ๆดช ๆฐ‘ๆ†™๏ผˆใƒ›ใƒณใƒปใƒŸใƒณใƒ’๏ผ‰'s post

ๅฐๅˆทๆ‰€ใซๆณจๆ–‡ใ—ใŸใ€Ž่‡ชๅˆ†ใ ใ‘ใฎใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นใฎใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐใ‚’ไฝœใ‚ใ†๏ผใ€ใฎ็ด™ใฎๆœฌใ€ๅˆฐ็€ใ—ใŸโ€ผ๏ธ

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

๋ฐ ์œ ์ € ๊ทธ๋ฃน ์„œ๋ฒ„๋ฅผ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค!

discord.gg/nkBTdeHsU8

Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

We now have and 's official server! Join us now!

https://discord.gg/hGXXxUq2jK

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

@fedify@hollo.social

We now have and 's official server! Join us now!

https://discord.gg/bhtwpzURwd

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

takes 20 minutes for GitHub Actions to finish. What do you think?

OptionVoters
That's too slow. Optimize it now.0 (0%)
Not fast, but tolerable.0 (0%)
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

now has an driver! This means you can use as Fedify's message queue. To use it, first install the @fedify/amqp package, then set it up like below:

import { createFederation } from "@fedify/fedify";
import { AmqpMessageQueue } from "@fedify/amqp";
import { connect } from "amqplib";

const federation = createFederation({
  queue: new AmqpMessageQueue(await connect("amqp://localhost")),
  // ... other configurations
});

Oh, and we've also added results from AmqpMessageQueue to our benchmarks.

The results of the benchmarks for Fedify's outbox queue.
ALT text detailsThe results of the benchmarks for Fedify's outbox queue.
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

Even though I am a slow coder, it only took me about a month to create most of 's features in . Having a framework makes a huge difference in productivity.

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

@fedify@hollo.social

The repository has reached 500 stars! Thank you everyone!

https://github.com/dahlia/fedify

The Fedify repository has reached 500 stars.
ALT text detailsThe Fedify repository has reached 500 stars.
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

10ๆœˆ26ๆ—ฅ๏ผˆๅœŸ๏ผ‰ใซ้–‹ๅ‚ฌใ•ใ‚Œใ‚‹OSC 2024 Tokyo/FallใซFedify/HolloๅˆๅŒใงๅ‡บๅฑ•ใ—ใพใ™๏ผๅฏๆ„›ใ„Fedifyใฎใƒญใ‚ดใฎใ‚ทใƒผใƒซใจใ€Ž่‡ชๅˆ†ใ ใ‘ใฎใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นใฎใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐใ‚’ไฝœใ‚ใ†๏ผใ€ๆ—ฅๆœฌ่ชž็‰ˆใฎ็ด™ใฎๆœฌใ‚’ๆŒใฃใฆ่กŒใไบˆๅฎšใงใ™ใ€‚ใ‚ˆใ‚ใ—ใใŠ้ก˜ใ„ใ—ใพใ™ใ€‚

https://event.ospn.jp/osc2024-fall/

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

@fedify@hollo.social

If you're on the fence about which driver to choose for 's message queue, here's a benchmark that just came out. In addition to no queue, we compare 5 drivers, for a total of 11 setups:

Curious to see the results? Check out the GitHub repository!

https://github.com/dahlia/fedify-queue-benchmarks

https://fosstodon.org/@hongminhee/113247723368865290

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

@thisismissem Here's the benchmark, and while it contains some questionable results, the overall conclusion is as following:

โ€ข Response times are much faster with queues than without.
โ€ข Overall throughput is better without queues.
โ€ข However, some queue setups can achieve throughput close to that of no queue.

This benchmark assumes communication within a single node, so the effect of queues may be greater in real-world networks.

github.com/dahlia/fedify-queue

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

@fedify@hollo.social

If you're considering creating your own implementation of , consider .

Implementing ActivityPub from scratch requires more than you might think. WebFinger, HTTP Signatures, Linked Data Signatures, Object Integrity Proofs, NodeInfo, queues for sending and receiving activities, followers collection synchronization, remote object lookups, interoperability with Mastodon, Akkoma, Misskey, Threads, and moreโ€ฆ

Just use Fedify and feel free to create your own ActivityPub implementation!

https://fedify.dev/

ๆดช ๆฐ‘ๆ†™๏ผˆใƒ›ใƒณใƒปใƒŸใƒณใƒ’๏ผ‰'s avatar
ๆดช ๆฐ‘ๆ†™๏ผˆใƒ›ใƒณใƒปใƒŸใƒณใƒ’๏ผ‰

@hongminhee@fedibird.com

็‹ฌ่‡ชใฎActivityPubใฎๅฎŸ่ฃ…ใ‚’ไฝœใ‚ŠใŸใ„ๆ–นใฏใ€Fedifyใ‚’ๆคœ่จŽใ—ใฆใฟใฆใใ ใ•ใ„ใ€‚

ActivityPubใ‚’ใ‚ผใƒญใ‹ใ‚‰ๅฎŸ่ฃ…ใ™ใ‚‹ใซใฏใ€ๆƒณๅƒไปฅไธŠใซๅคšใใฎ็‰ฉใ‚’ไฝœใ‚‹ๅฟ…่ฆใŒๆœ‰ใ‚Šใพใ™ใ€‚WebFingerใ€HTTP Signaturesใ€Linked Data Signaturesใ€Object Integrity Proofsใ€NodeInfoใ€ใ‚ขใ‚ฏใƒ†ใ‚ฃใƒ“ใƒ†ใ‚ฃใฎ้€ๅ—ไฟกใฎใ‚ญใƒฅใƒผใ€ใƒ•ใ‚ฉใƒญใƒฏใƒผใ‚ณใƒฌใ‚ฏใ‚ทใƒงใƒณใฎใ‚ทใƒณใ‚ฏใƒญใ€ใƒชใƒขใƒผใƒˆใ‚ชใƒ–ใ‚ธใ‚งใ‚ฏใƒˆใฎ็…งไผšใ€Mastodonใ‚„Misskey็ญ‰ใจใฎ็›ธไบ’้‹็”จๆ€งใฎ็‚บใฎ้›‘ๅคšใชๅ‡ฆ็†ใพใงโ€ฆFedifyใ‚’ไฝฟใˆใฐ็ฐกๅ˜ใซ่‡ชๅˆ†ใ ใ‘ใฎActivityPubใฎๅฎŸ่ฃ…ใ‚’ไฝœใ‚‹ไบ‹ใŒๅ‡บๆฅใพใ™๏ผ

fedify.dev/

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

Okay, is now ready for 2.0!

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

is now preparing for 2.0โ€ฆ

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

Adding vocabularies for FEP-9091 to .

github.com/dahlia/fedify/issue

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

@fedify@hollo.social

Did you know that? The CLI has a command called fedify lookup, which can easily look up ActivityStreams objects on servers with authorized fetch (a.k.a. secure mode) enabled by turning on the -a/--authorized-fetch flag.

Here's demo!

ๆดช ๆฐ‘ๆ†™๏ผˆใƒ›ใƒณใƒปใƒŸใƒณใƒ’๏ผ‰'s avatar
ๆดช ๆฐ‘ๆ†™๏ผˆใƒ›ใƒณใƒปใƒŸใƒณใƒ’๏ผ‰

@hongminhee@fedibird.com

Fedifyใ‚’ไฝฟใ†ใฎใ‚’่บŠ่บ‡ใ†็†็”ฑใŒๆœ‰ใ‚Œใฐ๏ผŸ

OptionVoters
ๆฉŸ่ƒฝไธ่ถณ0 (0%)
ๆŠฝ่ฑกๅŒ–ใƒฌใƒ™ใƒซใŒไฝŽใ„0 (0%)
TypeScriptใซๆ…ฃใ‚Œใฆใ„ใชใ„ใ€ใพใŸใฏๅฅฝใฟใงใฏใชใ„0 (0%)
ๆ—ฅๆœฌ่ชžใฎ่ณ‡ๆ–™ใฎๅฐ‘ใชใ•0 (0%)
GhostใจHolloไปฅๅค–ใฎๅฎŸไพ‹ใŒใช0 (0%)
ใใฎไป–๏ผˆใƒชใƒ—ใƒฉใ‚คใงๆ•™ใˆใฆใใ ใ•ใ„๏ผ‰0 (0%)
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

Let's create your own implementation using !

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

@fedify@hollo.social

Introducing Fedify: Build Your Own Fediverse App with Ease! ๐Ÿš€

Are you excited about the but find implementing daunting? Meet , a 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:

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!

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

I'm adding the (FEP-c0e0) class to โ€ฆ It will be coming in Fedify 1.1.0.

w3id.org/fep/c0e

ะ’ะธะฝั‚ ะŸั€ะพะบั's avatar
ะ’ะธะฝั‚ ะŸั€ะพะบั

@vint@mastodon.ml ยท Reply to naDne :blobcatmelt2: :debian: 's post

@FiFachik @rf ะ”ะปั ั‚ะตั…, ะบั‚ะพ ั…ะพั‡ะตั‚ ะฟะพั‚ะตัั‚ะธั‚ัŒ ั„ะตะดะตั€ะธั€ะพะฒะฐะฝะธะต ะดะปั ัะฒะพะตะณะพ ะฑะปะพะถะธะบะฐ ั ะฟะพะดะดะตั€ะถะบะพะน , ะผะพะณัƒ ั‚ะพะปัŒะบะพ ะฟะพัะพะฒะตั‚ะพะฒะฐั‚ัŒ . ะขะฐะผ ะตัั‚ัŒ ะฒัั‚ั€ะพะตะฝะฝะฐั ะบะพะผะฐะฝะดะฐ ะดะปั ะฟะพะดะบะปัŽั‡ะตะฝะธั ะบ ัะตั€ะฒะธััƒ ะฝะฐ ะฒั‹ะฑะพั€, ะบะพั‚ะพั€ั‹ะน ะผะพะถะตั‚ ะดะฐั‚ัŒ ะฒั€ะตะผะตะฝะฝั‹ะน ะดะพะผะตะฝ ะดะปั ั‚ะตัั‚ะธั€ะพะฒะฐะฝะธั.

Pierre's avatar
Pierre

@okpierre@mastodon.social

activitypub typescript server framework called Fedify announces first stable release. It is being used by the open source Ghost CMS platform. Can't wait to see what other apps are created with Fedify

Github repo here: github.com/dahlia/fedify/relea

activitypub typescript server framework called Fedify announces first stable release. It is being used by the open source Ghost CMS platform. Can't wait to see what other apps are created with Fedify

Github repo here: https://github.com/dahlia/fedify/releases/tag/1.0.0
ALT text detailsactivitypub typescript server framework called Fedify announces first stable release. It is being used by the open source Ghost CMS platform. Can't wait to see what other apps are created with Fedify Github repo here: https://github.com/dahlia/fedify/releases/tag/1.0.0
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

Fedify, an ActivityPub framework, has finally released its first stable version, 1.0.0! Here are key changes:

Deprecation of the term handle

From this version, the term handle across Fedify will only be used to refer to fediverse handles (e.g., @hongminhee@fosstodon.org). An actor's internal unique ID (e.g., b379dbdc-3b4f-4ef4-88c2-fc25632d1c22) is referred to as an identifier, and the WebFinger name (e.g., hongminhee) is referred to as a username.

The term handle in the API will be maintained for a while for backward compatibility, but deprecation warnings will be logged, and it is planned to be removed in the future.

For more details, please refer to the related documentation.

Linked Data Signatures

Linked Data Signatures is an outdated standard, but it's still relied upon by major fediverse implementations such as Mastodon.

In addition to HTTP Signatures and Object Integrity Proofs, Fedify now supports Linked Data Signatures from this version, thus supporting all types of signature methods used in the fediverse. This makes Fedify an ActivityPub implementation with the best interoperability.

However, Fedify users don't need to do anything special to use Linked Data Signatures. If an incoming activity has Linked Data Signatures, it automatically verifies the signature, and all outgoing activities will have signatures in three formats: HTTP Signatures, Linked Data Signatures, and Object Integrity Proofs.

For more details, please refer to the related documentation.

Activity forwarding

From this version, you can forward activities received in the inbox to other actors using the InboxContext.forwardActivity() method.

At first glance, you might think that you could just resend an activity received in the inbox using the Context.sendActivity() method. However, if you do this, the original signature is removed before the activity is delivered to the inbox, and when sending it, the signature of the forwarding actor is attached instead, causing the receiving side of the forwarded activity to not trust it.

On the other hand, when using the InboxContext.forwardActivity() method, the activity is forwarded with the original signature preserved, avoiding this problem. (Of course, the original activity itself must be signed with Linked Data Signatures or Object Integrity Proofs.)

For more details, please refer to the related documentation.

Sending Delete(Application) on fedify inbox termination

From this version, fedify inbox will send a Delete(Application) activity to all peer servers it encountered when terminated. This is typically an activity sent when deleting an account, which will help prevent residual data related to temporary actors from remaining on other servers.

PostgreSQL drivers

The @fedify/postgres package, which implements PostgreSQL drivers for the KvStore and MessageQueue interfaces, has been released alongside this version.

The PostgreSQL driver is a backend that can be sufficiently used in production, especially recommended for projects already using PostgreSQL.

Additionally, an option to select the PostgreSQL driver has been added to the fedify init command.

Celebrating Fedify 1.0.0

With the release of version 1.0.0, Fedify will now maintain API backward compatibility as much as possible. (Of course, in the long term, there may be a 2.0.0 that breaks backward compatibility.) This should be good news for those who have been hesitant to use Fedify because there hasn't been a stable version until now!

So, hoping that more services will support ActivityPub in the future, I conclude this post!

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

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

Okay, now implements misskey:isCat property, and it will be shipped with Fedify v1.0.0.

https://github.com/dahlia/fedify/commit/f75c19cf84cabb012e68e2893ce63c10c4416b21

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

@fedify@hollo.social

Does need to support the misskey:isCat property?

OptionVoters
Should support it.21 (75%)
Does not need to support it.7 (25%)
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

Looks like v1.0.0 will be released this week! Is there anything you'd like to see added or fixed before then?

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

In advance of the release of v1.0.0, I'm bumping up the versions of dependent packagesโ€ฆ

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

I'm polishing the and filling in the gaps before releasing v1.0. Is there something else you'd like to see in the @fedify docs?

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

@fedify@hollo.social

The next version of , v1.0, adds ParallelMessageQueue, which makes it easy to parallelize sending and receiving activities without increasing the number of processes or nodes.

It's available for preview in v1.0.0-dev.408+f4e245b4 (JSR & npm).

https://unstable.fedify.dev/manual/mq#parallel-message-processing

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

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

The docs now have a section on actor identifiers and usernames.

https://unstable.fedify.dev/manual/actor#actor-identifier-and-webfinger-username

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

@fedify@hollo.social

Starting with v1.0.0, the term handle throughout Fedify will only be used to refer to a fediverse handle (e.g., @hongminhee@fosstodon.org). An actor's internal unique ID (e.g., b379dbdc-3b4f-4ef4-88c2-fc25632d1c22) will be referred to as identifier and a WebFinger name (e.g., hongminhee) will be referred to as username. The term handle in the API will be retained for the time being for backwards compatibility, but a deprecation warning will be logged and will be deprecated in the future.

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

@fedify@hollo.social

Q: Which does your implementation implement, HTTP Signatures, Linked Data Signatures, or Object Integrity Proofs?

Fedify: YยทEยทS!

ๆดช ๆฐ‘ๆ†™๏ผˆใƒ›ใƒณใƒปใƒŸใƒณใƒ’๏ผ‰'s avatar
ๆดช ๆฐ‘ๆ†™๏ผˆใƒ›ใƒณใƒปใƒŸใƒณใƒ’๏ผ‰

@hongminhee@fedibird.com

Fedifyใฎๆฌกใฎใƒใƒผใ‚ธใƒงใƒณใงใ‚ใ‚‹v1.0.0ใŒใƒชใƒชใƒผใ‚นใ•ใ‚Œใ‚Œใฐใ€APIใฏๅฎ‰ๅฎšๅŒ–ใ•ใ‚Œใ‚‹ไบˆๅฎšใงใ™ใ€‚APIใŒๅฎ‰ๅฎšๅŒ–ใ™ใ‚‹ๅ‰ใซๅ…ฅใ‚Œใฆๆฌฒใ—ใ„ๆฉŸ่ƒฝใฏไฝ•ใ‹ๆœ‰ใ‚Šใพใ™ใ‹๏ผŸ


QT: hollo.social/@fedify/019208ce-
[ๅ‚็…ง]

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

@fedify@hollo.social

Once the next version of , v1.0.0, is released, the API will be stabilized. Are there any features you'd like to see before the API is stabilized?

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

@fedify@hollo.social

In the next release of , v1.0.0, you'll be able to forward received activities inside an inbox listener without any modifications.

You can preview this feature in v1.0.0-dev.398+5c6e1394 (JSR & npm).

https://unstable.fedify.dev/manual/inbox#forwarding-activities-to-another-server

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

@fedify@hollo.social

started out exclusively for , but now also supports .js and . However, the we created in the early days still features the character from Deno. Should Fedify change its logo now?

OptionVoters
Yes, because it's misleading.5 (28%)
A logo is a logo, no need to change it.13 (72%)
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

One of the benefits of is that you don't have to worry about whether a property of an Activity Vocabulary object has a URL or embeds an actual object. If you need an object, you can call the `getObject()` method (which will fetch a remote object if necessary). If you need a URI, you can access the `objectId` property.

fedify.dev/manual/vocab#object

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

@fedify@hollo.social

has over 400 stars on GitHub now! ๐ŸŽŠ

https://github.com/dahlia/fedify

The header of Fedify's GitHub repository page. It has 401 stars.
ALT text detailsThe header of Fedify's GitHub repository page. It has 401 stars.
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

is built in for ease of development, but it also supports .js and using . Deno's DX is so good that I don't regret this decision, and I'm looking forward to Deno 2.0 as well.

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

I'm applying to the docs. It works like magic! When I'm done, the Fedify docs will be even easier to read the example code than they are now.

The mouse cursor is hovering over a method in the example code, and information about that API pops up as a tooltip.
ALT text detailsThe mouse cursor is hovering over a method in the example code, and information about that API pops up as a tooltip.
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

Compared to @hollo, @fedify seems to have less people contributing patches. Would this imply that 's codebase is harder to read or to modify?

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

@fedify@hollo.social

The next version of will support (), which means that Fedify will be able to verify activities forwarded by from other servers.

In addition, activities sent with the Context.sendActivity() method will have Linked Data Signatures attached in addition to HTTP Signatures if any RSA-PKCS-v1.5 key pairs are present.

We were not motivated by implementing Linked Data Signatures, which is already an outdated standard, but we hope this change will lead to better compatibility and interoperability of Fedify apps!

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

I recently wrote a manual in Korean, and then translated it into English and Japanese. It's quite a long post, but it's relatively easy to accomplish with . Here's how I used it:

โ€ข Utilize projects to provide prior knowledge.
โ€ข Translate the table of contents first.
โ€ข Define a glossary.
โ€ข Translate chapter by chapter.

However, this method assumes you speak the target languageโ€”it's a way to reduce the labor of , not a way to become fluent in a language you don't know.

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

Working on @fedify's docs about โ€ฆ I hope someday drop the support for Linked Data Signaturesโ€ฆ ๐Ÿ˜‡

The combination of HTTP Signatures and Linked Data Signatures is the most widely supported way to sign activities in the fediverse, as of September 2024. Despite Linked Data Signatures is outdated and not recommended for new implementations, it is still widely used in the fediverse due to Mastodon and other major implementations' reliance on it.

However, for new implementations, you should consider using both Object Integrity Proofs and Linked Data Signatures for maximum compatibility and future-proofing.
ALT text detailsThe combination of HTTP Signatures and Linked Data Signatures is the most widely supported way to sign activities in the fediverse, as of September 2024. Despite Linked Data Signatures is outdated and not recommended for new implementations, it is still widely used in the fediverse due to Mastodon and other major implementations' reliance on it. However, for new implementations, you should consider using both Object Integrity Proofs and Linked Data Signatures for maximum compatibility and future-proofing.
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

The next release will finally be 1.0.0. Stay tuned!

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

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

If you're curious about 's property hydration, here's the docs for it:

https://unstable.fedify.dev/manual/vocab#property-hydration

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

@fedify@hollo.social

has a side effect that when you call the getter method of an Activity Vocabulary object, the property that was internally a URI is populated with the actual ActivityStreams object. Today, someone at Ghost gave us a cool term for this: .

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

Imagine what if every website implemented HTTP/TLS themselves. There would be so much fragmentation that we wouldn't see the we see today.

To me, that's what the looks like today. Mastodon, Pixelfed, etc. have their own implementations of , WebFinger, HTTP Signatures, etc. and each one behaves slightly differently, which leads to poor interoperability. Adoption of new standards is slow.

I wish each major programming language had something like .

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

I received a request from @ghost today to add to @fedify for compatibility with , as Mastodon does not plan to implement Object Integrity Proofs (FEP-8b32) for the near future. ๐Ÿ˜ฉ

However, Mastodon's implementation of LD Signatures does not even use valid JSON-LD properties (despite the name), so I'm not sure how to make it compatible with Mastodon since does JSON-LD processing. ๐Ÿค”

The JSON-LD representation of a Create(Note) activity containing LD Signatures produced by Mastodon and its expanded form. The โ€œsignatureโ€ property and its child properties are not properly namespaced.
ALT text detailsThe JSON-LD representation of a Create(Note) activity containing LD Signatures produced by Mastodon and its expanded form. The โ€œsignatureโ€ property and its child properties are not properly namespaced.
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

Fedify, an server framework, has released v0.15.0! The key changes include:

It is now available in JSR and npm.

Erlend Sogge Heggen's avatar
Erlend Sogge Heggen

@erlend@writing.exchange

I handwavingly predict that the most stable fork will be whichever one decides to rebuild its foundations atop of , thus freeing up the dev(s) to focus on the client-side innovations that the have always excelled at.

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

@fedify@hollo.social

In the next version of , the Article, ChatMessage, Note, and Question classes will have a quoteUrl property. This property corresponds to the following three JSON-LD properties all at once:

Available for preview in version 0.15.0-dev.384+6c39741b (JSR & npm).

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

As a trilingual, I've written the 's tutorial in three languages:

โ€ข English: unstable.fedify.dev/tutorial/m
โ€ข Korean: hackmd.io/@hongminhee/fedify-t
โ€ข Japanese: zenn.dev/hongminhee/books/4a38

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

@fedify@hollo.social ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

In the next version of , it will allow you to decouple actor URIs from WebFinger usernames with the mapHandle() method. For example, you can use UUIDs for actor URIs but let users use their own username of choice for their fediverse handle.

You can preview it in v0.15.0-dev.382+a8a9b73b: JSR & npm.

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

@fedify@hollo.social

ํ•œ๊ตญ์–ดํŒ Fedify ํŠœํ† ๋ฆฌ์–ผ ใ€Š๋‚˜๋งŒ์˜ ์—ฐํ•ฉ์šฐ์ฃผ ๋งˆ์ดํฌ๋กœ๋ธ”๋กœ๊ทธ ๋งŒ๋“ค๊ธฐใ€‹๋ฅผ ๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค! Fedify๋‚˜ ActivityPub์„ ๋ชฐ๋ผ๋„ ์ฐจ๊ทผ์ฐจ๊ทผ ๋”ฐ๋ผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์–ด ์žˆ์œผ๋‹ˆ, ActivityPub ๊ตฌํ˜„์— ๊ด€์‹ฌ์ด ์žˆ์œผ์‹  ๋ถ„๋“ค์€ ๋ถ€๋”” ์ฝ์–ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. (๋Œ€์‹ , ์กฐ๊ธˆ ๊น๋‹ˆ๋‹ค. ๐Ÿ˜…)

https://hackmd.io/@hongminhee/fedify-tutorial-ko

ๆดช ๆฐ‘ๆ†™๏ผˆใƒ›ใƒณใƒปใƒŸใƒณใƒ’๏ผ‰'s avatar
ๆดช ๆฐ‘ๆ†™๏ผˆใƒ›ใƒณใƒปใƒŸใƒณใƒ’๏ผ‰

@hongminhee@fedibird.com

ๆ—ฅๆœฌ่ชž็‰ˆFedifyใƒใƒฅใƒผใƒˆใƒชใ‚ขใƒซใ€Ž่‡ชๅˆ†ใ ใ‘ใฎใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นใฎใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐใ‚’ไฝœใ‚ใ†๏ผใ€ใ‚’Zennใงๅ…ฌ้–‹ใ—ใพใ—ใŸ๏ผActivityPubใฎๅฎŸ่ฃ…ใซ่ˆˆๅ‘ณใฎๆœ‰ใ‚‹ๆ–นใ€…ใฏๆ˜ฏ้žใ”่ฆงใใ ใ•ใ„๏ผ

zenn.dev/hongminhee/books/4a38

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

@fedify@hollo.social

We just finished drafting a new tutorial for ! This tutorial will walk you through the steps of creating your own federated . It's pretty long, though.

Please read it, give us feedback, and have fun!

https://unstable.fedify.dev/tutorial/microblog

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

@fedify@hollo.social

The next version of will add the Context.lookupObject() method, which is preferred over the global lookupObject() function.

Antolius's avatar
Antolius

@antolius@mastodon.social

A panel from the original Watchmen comic, depicting Dr. Manhattan partially reassembling himself after the accident that created him. Text is modified to read: "SEPTEMBER 3RD: A PARTIALLY IMPLEMENTED FEDIFY APP RUNS BEHIND A SERVEO TUNNEL AND FEDERATES FOR THIRTY SECONDS BEFORE VANISHING..."
ALT text detailsA panel from the original Watchmen comic, depicting Dr. Manhattan partially reassembling himself after the accident that created him. Text is modified to read: "SEPTEMBER 3RD: A PARTIALLY IMPLEMENTED FEDIFY APP RUNS BEHIND A SERVEO TUNNEL AND FEDERATES FOR THIRTY SECONDS BEFORE VANISHING..."
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

I'm guessing the next version of might be v1.0.0. ๐Ÿค”

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

@fedify@hollo.social

Are there any features you'd like to see in ?

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

@fedify@hollo.social

Fedifyใฏใ€TypeScriptใจJavaScriptใงๆ›ธใ‹ใ‚ŒใŸActivityPubใ‚ตใƒผใƒใƒผใƒ•ใƒฌใƒผใƒ ใƒฏใƒผใ‚ฏใงใ™ใ€‚ๅˆ†ๆ•ฃๅž‹ใฎใ‚ฝใƒผใ‚ทใƒฃใƒซใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใ‚’ๆง‹็ฏ‰ใ™ใ‚‹ใŸใ‚ใฎใ‚ตใƒผใƒใƒผใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใ‚’ไฝœใ‚‹้š›ใฎ่ค‡้›‘ใ•ใจๅ†—้•ทใชใ‚ณใƒผใƒ‰ใ‚’ๆŽ’้™คใ—ใ€ใƒ“ใ‚ธใƒใ‚นใƒญใ‚ธใƒƒใ‚ฏใจใƒฆใƒผใ‚ถใƒผไฝ“้จ“ใฎ้–‹็™บใซ้›†ไธญใงใใ‚‹ใ‚ˆใ†ใซใ™ใ‚‹ใ“ใจใ‚’็›ฎๆŒ‡ใ—ใฆใ„ใพใ™ใ€‚

็พๅœจๆไพ›ใ—ใฆใ„ใ‚‹ไธปใชๆฉŸ่ƒฝใฏไปฅไธ‹ใฎ้€šใ‚Šใงใ™๏ผš

  • Activity VocabularyใฎใŸใ‚ใฎๅž‹ๅฎ‰ๅ…จใชใ‚ชใƒ–ใ‚ธใ‚งใ‚ฏใƒˆ๏ผˆไธ€้ƒจใฎใƒ™ใƒณใƒ€ใƒผๅ›บๆœ‰ใฎๆ‹กๅผตๆฉŸ่ƒฝใ‚’ๅซใ‚€๏ผ‰
  • WebFingerใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใจใ‚ตใƒผใƒใƒผ
  • HTTP SignaturesใจObject Integrity Proofs
  • ใ‚ฆใ‚งใƒ–ใƒ•ใƒƒใ‚ฏใ‚’ๅ‡ฆ็†ใ™ใ‚‹ใŸใ‚ใฎใƒŸใƒ‰ใƒซใ‚ฆใ‚งใ‚ข
  • NodeInfoใƒ—ใƒญใƒˆใ‚ณใƒซ
  • Node.jsใ€Denoใ€Bunใฎใ‚ตใƒใƒผใƒˆ
  • ใƒ†ใ‚นใƒˆใจใƒ‡ใƒใƒƒใ‚ฐใฎใŸใ‚ใฎCLIใƒ„ใƒผใƒซใƒใ‚งใƒผใƒณ

่ˆˆๅ‘ณใŒใ‚ใ‚‹ๆ–นใฏใ€Fedifyใฎใ‚ฆใ‚งใƒ–ใ‚ตใ‚คใƒˆใ‚’ใ”่ฆงใใ ใ•ใ„๏ผๅŒ…ๆ‹ฌ็š„ใชใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ€ใƒ‡ใƒขใ€ใƒใƒฅใƒผใƒˆใƒชใ‚ขใƒซใ€ใ‚ตใƒณใƒ—ใƒซใ‚ณใƒผใƒ‰ใชใฉใŒ็”จๆ„ใ•ใ‚Œใฆใ„ใพใ™๏ผš

https://fedify.dev/

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

During the development of , I ended up with too many accounts that I created to test.

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

@fedify@hollo.social

Question for those who have followed the tutorial: How long did it take you to follow the tutorial?

OptionVoters
30 minutes or shorter1 (33%)
1 hour or shorter1 (33%)
2 hours or shorter1 (33%)
4 hours or shorter0 (0%)
More than 4 hours0 (0%)
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

I finally finished the first draft of the new tutorial, but it's still in Korean. Now I just need to polish it up and translate it into English.

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

@fedify@hollo.social

Did you know? offers the markdown-it plugins for parsing -style mentions and hashtags syntax:

Check it out!

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

ํŠœํ† ๋ฆฌ์–ผ ์ด์ œ ยฝ๋„ ๋ชป ์“ด ๊ฒƒ ๊ฐ™์€๋ฐ, ็›ฎๆฌก๊ฐ€ ์ด๋งŒํผ์ด๋‹ค. ๋‹ค ์“ธ ์ˆ˜ ์žˆ์„๊นŒโ€ฆ? ๋‹ค ์“ฐ๋”๋ผ๋„ ์‚ฌ๋žŒ๋“ค์ด ์ฝ๊ณ  ๋”ฐ๋ผํ• ๊นŒ?

๋‚˜๋งŒ์˜ ๋‹จ๋ฌธ ๋ธ”๋กœ๊ทธ ๋งŒ๋“ค๊ธฐ
	๋Œ€์ƒ ๋…์ž
	๋ชฉํ‘œ
	๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์…‹์—…
		Node.js ์„ค์น˜ํ•˜๊ธฐ
		fedify ๋ช…๋ น์–ด ์„ค์น˜
		fedify init์œผ๋กœ ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐํ™”
		Visual Studio Code
	์„ ์ˆ˜ ์ง€์‹
		TypeScript
		JSX
	๊ณ„์ • ์ƒ์„ฑ ํŽ˜์ด์ง€
		๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์…‹์—…
		์•ฑ์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ
		๋ ˆ์ฝ”๋“œ ์‚ฝ์ž…
		ํ…Œ์ŠคํŠธ
	ํ”„๋กœํ•„ ํŽ˜์ด์ง€
	์•กํ„ฐ ๊ตฌํ˜„ํ•˜๊ธฐ
		ํ…Œ์ด๋ธ” ์ƒ์„ฑ
		์•กํ„ฐ ๋ ˆ์ฝ”๋“œ
		์•กํ„ฐ ๋””์ŠคํŒจ์ฒ˜
		ํ…Œ์ŠคํŠธ
	์•”ํ˜ธ ํ‚ค ์Œ๋“ค
		ํ…Œ์ด๋ธ” ์ƒ์„ฑ
		ํ‚ค ์Œ ๋””์ŠคํŒจ์ฒ˜
		ํ…Œ์ŠคํŠธ
	Mastodon๊ณผ ์—ฐ๋™
		๊ณต๊ฐœ ์ธํ„ฐ๋„ท์— ๋…ธ์ถœ
	์ˆ˜์‹ ํ•จ
		ํ…Œ์ด๋ธ” ์ƒ์„ฑ
		Follow ์•กํ‹ฐ๋น„ํ‹ฐ ์ˆ˜์‹ 
		ActivityPub Academy
		ํ…Œ์ŠคํŠธ
	ํŒ”๋กœ ์ทจ์†Œ
		Undo ์•กํ‹ฐ๋น„ํ‹ฐ ์ˆ˜์‹ 
ALT text details๋‚˜๋งŒ์˜ ๋‹จ๋ฌธ ๋ธ”๋กœ๊ทธ ๋งŒ๋“ค๊ธฐ ๋Œ€์ƒ ๋…์ž ๋ชฉํ‘œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์…‹์—… Node.js ์„ค์น˜ํ•˜๊ธฐ fedify ๋ช…๋ น์–ด ์„ค์น˜ fedify init์œผ๋กœ ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐํ™” Visual Studio Code ์„ ์ˆ˜ ์ง€์‹ TypeScript JSX ๊ณ„์ • ์ƒ์„ฑ ํŽ˜์ด์ง€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์…‹์—… ์•ฑ์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ๋ ˆ์ฝ”๋“œ ์‚ฝ์ž… ํ…Œ์ŠคํŠธ ํ”„๋กœํ•„ ํŽ˜์ด์ง€ ์•กํ„ฐ ๊ตฌํ˜„ํ•˜๊ธฐ ํ…Œ์ด๋ธ” ์ƒ์„ฑ ์•กํ„ฐ ๋ ˆ์ฝ”๋“œ ์•กํ„ฐ ๋””์ŠคํŒจ์ฒ˜ ํ…Œ์ŠคํŠธ ์•”ํ˜ธ ํ‚ค ์Œ๋“ค ํ…Œ์ด๋ธ” ์ƒ์„ฑ ํ‚ค ์Œ ๋””์ŠคํŒจ์ฒ˜ ํ…Œ์ŠคํŠธ Mastodon๊ณผ ์—ฐ๋™ ๊ณต๊ฐœ ์ธํ„ฐ๋„ท์— ๋…ธ์ถœ ์ˆ˜์‹ ํ•จ ํ…Œ์ด๋ธ” ์ƒ์„ฑ Follow ์•กํ‹ฐ๋น„ํ‹ฐ ์ˆ˜์‹  ActivityPub Academy ํ…Œ์ŠคํŠธ ํŒ”๋กœ ์ทจ์†Œ Undo ์•กํ‹ฐ๋น„ํ‹ฐ ์ˆ˜์‹ 
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

Today, thanks to @ellemedit, we've added two more example projects to !

If you're interested in Fedify and these two frameworks, take a look!

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

@fedify@hollo.social

Released 0.14.2 & 0.13.3, which fix an incompatibility issue with Meta's Threads where sent activities had not been verified by their inbox.

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

@fedify@hollo.social

We've released v0.14.0 of , the server framework, with the following key changes:

Fedify v0.14.0 is available from JSR and npm. See also the full changelog for details.

Happy !

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

@fedify@hollo.social ยท Reply to John Spurlock's post

We've added the Inspecting ActivityPub objects section to the docs, introducing BrowserPub and the fedify lookup command!

https://unstable.fedify.dev/manual/test#inspecting-activitypub-objects

Inspecting ActivityPub objects

BrowserPub

BrowserPub is a browser for debugging ActivityPub and the fediverse. You can punch in any ActivityPub discoverable web URL or fediverse handle, and it will discover and display the underlying ActivityPub.

For example:

โ€ข hollo.social/@fedify
โ€ข @hongminhee@fosstodon.org

If you want to know further details about BrowserPub, read the creator's Mastodon thread.

fedify lookup command

Fedify provides a CLI toolchain for testing and debugging. The fedify lookup command is a simple tool for looking up an ActivityPub object by its URL or fediverse handle.
ALT text detailsInspecting ActivityPub objects BrowserPub BrowserPub is a browser for debugging ActivityPub and the fediverse. You can punch in any ActivityPub discoverable web URL or fediverse handle, and it will discover and display the underlying ActivityPub. For example: โ€ข hollo.social/@fedify โ€ข @hongminhee@fosstodon.org If you want to know further details about BrowserPub, read the creator's Mastodon thread. fedify lookup command Fedify provides a CLI toolchain for testing and debugging. The fedify lookup command is a simple tool for looking up an ActivityPub object by its URL or fediverse handle.
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

Do you know that? Some of the properties in Activity Vocabulary have been renamed in 's JavaScript APIs. Below are some examples:

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

Even I have no idea how much 's API will change, so I don't know when I'll release Fedify 1.0.0. ๐Ÿคฆ

Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

Hollo๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค!

Hollo๋Š” ๊ฐœ์ธ์„ ์œ„ํ•œ ์—ฐํ•ฉํ˜• ๋งˆ์ดํฌ๋กœ๋ธ”๋กœ๊ทธ ์†Œํ”„ํŠธ์›จ์–ด์ž…๋‹ˆ๋‹ค. Fedify์™€ Bun์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ์œผ๋ฉฐ, ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค ๋ฐ ์„œ๋น„์Šค์™€ ๊ต๋ฅ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Hollo์˜ ํŠน์ง•์€ ํ•œ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋œ ์ „์šฉ ์ธ์Šคํ„ด์Šค๋ผ๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ๋งŒ์˜ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๋ฉด์„œ๋„ , ๋ฐ ๊ธฐํƒ€ ActivityPub ์ง€์› ์„œ๋น„์Šค์˜ ์‚ฌ์šฉ์ž๋“ค๊ณผ ์†Œํ†ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋…์ž์ ์ธ ์›น ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์—†์ง€๋งŒ, Mastodon API์™€ ํ˜ธํ™˜๋˜์–ด ๊ธฐ์กด์˜ ๋งŽ์€ Mastodon ํด๋ผ์ด์–ธํŠธ ์•ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ Hollo์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์ต์ˆ™ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋กœ Hollo๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ๊ธฐ๋Šฅ์œผ๋กœ๋Š” ๊ฒŒ์‹œ๋ฌผ ์ž‘์„ฑยทํŽธ์ง‘ยท์‚ญ์ œ, ๋‹ต๊ธ€, ๋ฏธ๋””์–ด ์ฒจ๋ถ€, ํˆฌํ‘œ, ์ข‹์•„์š”, ๋ถ๋งˆํฌ, ๊ณ ์ • ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํ”„๋กœํ•„ ํŽธ์ง‘, ํŒ”๋กœ์šฐ/ํŒ”๋กœ์›Œ ๊ด€๋ฆฌ, ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ ๋“ฑ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋”๋ถˆ์–ด Markdown์„ ์ง€์›ํ•˜์—ฌ ๊ฒŒ์‹œ๋ฌผ์ด๋‚˜ ํ”„๋กœํ•„์˜ ์„œ์‹ ์„ค์ •์„ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Hollo๋Š” ํ˜„์žฌ ๊ฐœ๋ฐœ ์ดˆ๊ธฐ ๋‹จ๊ณ„์— ์žˆ์œผ๋ฉฐ, ์ง€์†์ ์œผ๋กœ ๊ธฐ๋Šฅ ์ถ”๊ฐ€์™€ ๊ฐœ์„ ์ด ์ด๋ฃจ์–ด์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Bun์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๋น ๋ฅธ ์„ฑ๋Šฅ๊ณผ ํšจ์œจ์ ์ธ ๊ฐœ๋ฐœ์ด ์ด๋ค„์ง€๊ณ  ์žˆ๋‹ต๋‹ˆ๋‹ค. ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋กœ GitHub์— ๊ณต๊ฐœ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๊ธฐ์—ฌ๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ์ธ ๋ธ”๋กœ๊ทธ์™€ ์†Œ์…œ ๋ฏธ๋””์–ด์˜ ์žฅ์ ์„ ๊ฒฐํ•ฉํ•œ Hollo๋Š” ํ”„๋ผ์ด๋ฒ„์‹œ๋ฅผ ์ค‘์‹œํ•˜๋ฉด์„œ๋„ ๋” ๋„“์€ ์ปค๋ฎค๋‹ˆํ‹ฐ์™€์˜ ์—ฐ๊ฒฐ์„ ์›ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ ํ•ฉํ•œ ํ”Œ๋žซํผ์œผ๋กœ ๊ฑฐ๋“ญ๋‚˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

https://github.com/dahlia/hollo

Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

Holloใ‚’็ดนไป‹ใ—ใพใ™๏ผ

Holloใฏใ€ๅ€‹ไบบๅ‘ใ‘ใฎ้€ฃๅˆๅž‹ใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐใ‚ฝใƒ•ใƒˆใ‚ฆใ‚งใ‚ขใงใ™ใ€‚FedifyใจBunใ‚’ๅŸบ็›คใซๆง‹็ฏ‰ใ•ใ‚Œใ€ActivityPubใƒ—ใƒญใƒˆใ‚ณใƒซใ‚’้€šใ˜ใฆไป–ใฎใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใ‚„ใ‚ตใƒผใƒ“ใ‚นใจ้€ฃๆบใ™ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚

Holloใฎ็‰นๅพดใฏใ€ไธ€ไบบใฎใƒฆใƒผใ‚ถใƒผใฎใŸใ‚ใซ่จญ่จˆใ•ใ‚ŒใŸๅฐ‚็”จใฎใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใจใ„ใ†็‚นใงใ™ใ€‚ใ“ใ‚Œใซใ‚ˆใ‚Šใ€ใƒฆใƒผใ‚ถใƒผใฏ่‡ชๅˆ†ใ ใ‘ใฎใ‚นใƒšใƒผใ‚นใ‚’ๆŒใกใชใŒใ‚‰ใ€Mastodonใ€Misskeyใ€ใใฎไป–ใฎActivityPubๅฏพๅฟœใ‚ตใƒผใƒ“ใ‚นใฎใƒฆใƒผใ‚ถใƒผใจใ‚‚ไบคๆตใงใใพใ™ใ€‚

็‹ฌ่‡ชใฎใ‚ฆใ‚งใƒ–ใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚นใ‚’ๆŒใŸใชใ„ไปฃใ‚ใ‚Šใซใ€MastodonใฎAPIใจไบ’ๆ›ๆ€งใŒใ‚ใ‚‹ใŸใ‚ใ€ๆ—ขๅญ˜ใฎๅคšใใฎMastodonใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใ‚ขใƒ—ใƒชใ‚’ไฝฟ็”จใ—ใฆHolloใซใ‚ขใ‚ฏใ‚ปใ‚นใงใใพใ™ใ€‚ใ“ใ‚Œใซใ‚ˆใ‚Šใ€ไฝฟใ„ๆ…ฃใ‚ŒใŸใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚นใงHolloใ‚’ๅˆฉ็”จใ™ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚

ไธปใชๆฉŸ่ƒฝใซใฏใ€ๆŠ•็จฟใฎไฝœๆˆใƒป็ทจ้›†ใƒปๅ‰Š้™คใ€่ฟ”ไฟกใ€ใƒกใƒ‡ใ‚ฃใ‚ขๆทปไป˜ใ€ๆŠ•็ฅจใ€ใŠๆฐ—ใซๅ…ฅใ‚Šใ€ใƒ–ใƒƒใ‚ฏใƒžใƒผใ‚ฏใ€ใƒ”ใƒณ็•™ใ‚ใชใฉใŒใ‚ใ‚Šใพใ™ใ€‚ใพใŸใ€ใƒ—ใƒญใƒ•ใ‚ฃใƒผใƒซ็ทจ้›†ใ€ใƒ•ใ‚ฉใƒญใƒผ/ใƒ•ใ‚ฉใƒญใƒฏใƒผ็ฎก็†ใ€ใƒชใ‚นใƒˆไฝœๆˆใชใฉใ‚‚ๅฏ่ƒฝใงใ™ใ€‚ใ•ใ‚‰ใซใ€Markdownใ‚’ใ‚ตใƒใƒผใƒˆใ—ใฆใ„ใ‚‹ใŸใ‚ใ€ๆŠ•็จฟใ‚„ใƒ—ใƒญใƒ•ใ‚ฃใƒผใƒซใฎๆ›ธๅผ่จญๅฎšใŒๅฎนๆ˜“ใซ่กŒใˆใพใ™ใ€‚

Holloใฏ็พๅœจ้–‹็™บใฎๅˆๆœŸๆฎต้šŽใซใ‚ใ‚Šใ€็ถ™็ถš็š„ใซๆฉŸ่ƒฝใฎ่ฟฝๅŠ ใ‚„ๆ”นๅ–„ใŒ่กŒใ‚ใ‚Œใฆใ„ใพใ™ใ€‚Bunใ‚’ไฝฟ็”จใ™ใ‚‹ใ“ใจใงใ€้ซ˜้€Ÿใชใƒ‘ใƒ•ใ‚ฉใƒผใƒžใƒณใ‚นใจๅŠน็Ž‡็š„ใช้–‹็™บใŒๅฎŸ็พใ•ใ‚Œใฆใ„ใพใ™ใ€‚ใ‚ชใƒผใƒ—ใƒณใ‚ฝใƒผใ‚นใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใจใ—ใฆใ€GitHubใงๅ…ฌ้–‹ใ•ใ‚ŒใฆใŠใ‚Šใ€ใ‚ณใƒŸใƒฅใƒ‹ใƒ†ใ‚ฃใ‹ใ‚‰ใฎ่ฒข็Œฎใ‚’ๆญ“่ฟŽใ—ใฆใ„ใพใ™ใ€‚

ๅ€‹ไบบใฎใƒ–ใƒญใ‚ฐใจใ‚ฝใƒผใ‚ทใƒฃใƒซใƒกใƒ‡ใ‚ฃใ‚ขใฎๅˆฉ็‚นใ‚’็ต„ใฟๅˆใ‚ใ›ใŸHolloใฏใ€ใƒ—ใƒฉใ‚คใƒใ‚ทใƒผใ‚’้‡่ฆ–ใ—ใชใŒใ‚‰ใ€ใ‚ˆใ‚Šๅบƒใ„ใ‚ณใƒŸใƒฅใƒ‹ใƒ†ใ‚ฃใจใฎใคใชใŒใ‚Šใ‚’ๆฑ‚ใ‚ใ‚‹ไบบใ€…ใซ้ฉใ—ใŸใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ใจใชใฃใฆใ„ใพใ™ใ€‚

https://github.com/dahlia/hollo

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

Haha, I'm writing a tutorial following the commit logs of the educational implementation of the microblog I made public the other day.

github.com/dahlia/microblog/co

Shrutarshi Basu's avatar
Shrutarshi Basu

@basus@mastodon.social ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

@hongminhee I'd be happy to take a look sometime. I am planning on using to build my own ActivityPub server soon and I am pretty new to TypeScript.

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

The new tutorial I'm writing now even includes an explanation of and for readers who don't know them. As a result, it's getting very long. ๐Ÿ˜“

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

I'm sharing a prototype of written in , codenamed โ€œFediKit.โ€ Many of the ideas for Fedify were already implemented in this prototype, albeit in a different language.

github.com/dahlia/fedikit

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

For educational purpose, I've created a federated microblog example using , with a total of about 30 commits, which you can follow step by step.

Now, I'm starting to write a hands-on Fedify tutorial based on this example code. I'll make it public when I'm done!

github.com/dahlia/microblog

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

I've rewritten several times and in several languages. The first time it was written in , then , then C#, then back to TypeScript. (It was codenamed FediKit at the time of development.) I settled on TypeScript for the following reasons:

โ€ข It has a decent JSON-LD implementation.
โ€ข Lots of people use it. (I wanted Fedify to be widely used.)
โ€ข It's type-safe enough.

Even if I were to build Fedify again, I would choose TypeScript.

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

@fedify@hollo.social

Did you know? not only fully supports .js, but also and !

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

@fedify@hollo.social

Security alert for Fedify users

We've patched a vulnerability in the getActorHandle() function. Versions prior to 0.13.1 and 0.12.3 are affected.

Upgrade immediately:

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

@fedify@hollo.social

In the next version (v0.14.0) of , the performance of the Object.toJsonLd() method will be dramatically (~3k ร—) faster. This is expected to improve the overall performance of Fedify apps!

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

The database agnosticism of as an server framework is โ€ฆ

OptionVoters
โ€ฆ useful.0 (0%)
โ€ฆ unhelpful.0 (0%)
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

I find that database agnosticism, one of 's design principles, is a hindrance to raising its abstraction level. ๐Ÿค”

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

I feel that the current abstraction level of 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?

OptionVoters
Faรงade0 (0%)
Metaframework0 (0%)
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

I'm writing a 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?

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

A quite fair comment on by .

โ€”In your opinion, what is Fedify's weakest point?

Based on my review of the Fedify documentation, I think one potential weak point of Fedify is:

The learning curve and complexity involved in properly implementing all the components of a federated ActivityPub server.

While Fedify aims to simplify building ActivityPub servers, there are still many concepts and pieces that developers need to understand and implement correctly, including:

โ€ข Actor dispatchers
โ€ข Inbox listeners
โ€ข Collection dispatchers (outbox, followers, etc.)
โ€ข Key pair management
โ€ข Object dispatchers
โ€ข Access control
โ€ข Integration with web frameworks

The documentation is quite extensive, which is good, but also indicates there's a lot for developers to learn and configure properly. Even with Fedify abstracting away some of the low-level details, building a fully-featured and interoperable ActivityPub server requires understanding many moving parts.

Additionally, since Fedify provides flexibility in how these components are implemented, developers still need to make many decisions about data storage, business logic, etc. This flexibility is powerful but also puts more onus on developers to implement things correctly.

So while Fedify seems to be a very capable framework, the inherent complexity of building a federated server means there's still a significant learning curve and potential for implementation mistakesโ€ฆ
ALT text detailsโ€”In your opinion, what is Fedify's weakest point? Based on my review of the Fedify documentation, I think one potential weak point of Fedify is: The learning curve and complexity involved in properly implementing all the components of a federated ActivityPub server. While Fedify aims to simplify building ActivityPub servers, there are still many concepts and pieces that developers need to understand and implement correctly, including: โ€ข Actor dispatchers โ€ข Inbox listeners โ€ข Collection dispatchers (outbox, followers, etc.) โ€ข Key pair management โ€ข Object dispatchers โ€ข Access control โ€ข Integration with web frameworks The documentation is quite extensive, which is good, but also indicates there's a lot for developers to learn and configure properly. Even with Fedify abstracting away some of the low-level details, building a fully-featured and interoperable ActivityPub server requires understanding many moving parts. Additionally, since Fedify provides flexibility in how these components are implemented, developers still need to make many decisions about data storage, business logic, etc. This flexibility is powerful but also puts more onus on developers to implement things correctly. So while Fedify seems to be a very capable framework, the inherent complexity of building a federated server means there's still a significant learning curve and potential for implementation mistakesโ€ฆ
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

The JSON-LD processor ended up being 's bottleneck, so I'm in the process of fixing Fedify to generate JSON-LD without the proper JSON-LD processor.

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

@fedify@hollo.social

Fedify, the server framework, has released v0.13.0. Key changes include:

v0.13.0 is available now from JSR and npm.

https://github.com/dahlia/fedify/releases/tag/0.13.0

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

@fedify@hollo.social

What other web frameworks would you like to see integrate with more?

OptionVoters
Koa4 (16%)
Fastify5 (20%)
Oak3 (12%)
Elysia3 (12%)
Next.js6 (24%)
Nuxt.js4 (16%)
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

Introducing @fedify/express, a package that integrates Express, a popular web framework in Node.js, with Fedify. You can install it with the following command:

npm add @fedify/express

This package provides a middleware called integrateFederation() that allows you to integrate with :

import express from "express";
import { integrateFederation } from "@fedify/express";
import { federation } from "./federation";  // Your `Federation` instance

export const app = express();

app.set("trust proxy", true);

app.use(integrateFederation(federation, (req) => "context data goes here"));

https://github.com/dahlia/fedify-express

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

I'm unsure whether to adopt an emerging JavaScript runtime like or for 's tutorial, or stick with traditional .js. ๐Ÿค”

If I choose Bun/Deno, it comes with built-in support, hot reloading, and a fetch-style HTTP server, so I don't have to explain much about it, but I need to deal with installing Bun/Deno itself.

On the other hand, Node.js can be assumed to be already installed on the reader's system, but they will need to set up TypeScript, hot reloading, etc.

OptionVoters
Bun0 (0%)
Deno0 (0%)
Node.js0 (0%)
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

Starting with the next release, v0.13.0, the fedify tunnel command will be added. The following command exposes a local HTTP server running on port 3000 to the public internet:

fedify tunnel 3000

https://unstable.fedify.dev/cli#fedify-tunnel-exposing-a-local-http-server-to-the-public-internet

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

I ended up implementing the `fedify tunnel` command to eliminate the ngrok installation and sign-up part of the tutorial. ๐Ÿ˜‚

unstable.fedify.dev/cli#fedify

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

If you've created a new web framework, you can assume that your readers will have some knowledge of HTTP when you write tutorials for it. However, if you have created a new server framework, you should also explain ActivityPub itself in the tutorials for this framework.

I kept thinking about this while writing the framework tutorial. ๐Ÿ˜ฉ

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: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

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

ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์‹ค์ œ ์“ฐ์ž„์— ์ง‘์ค‘ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์„œ์—๋Š” ๊ฐ™์€ ์ฃผ์š” ๊ตฌํ˜„์ฒด๋“ค์ด ๋งŒ๋“  ์‚ฌ์‹ค์ƒ์˜ ํ‘œ์ค€์— ๋งž์ถ˜ ์–ดํœ˜ API ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•œ ๊ฐ€์ด๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ์ ์€ ๊ณ ๋ฏผ์œผ๋กœ ์ƒํ˜ธ ์šด์šฉ ๊ฐ€๋Šฅํ•œ ์•ฑ์„ ๋งŒ๋“œ์„ธ์š”! ๐Ÿค

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

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

์ธํ„ฐ๋ž™์…˜ ๋””๋ฒ„๊น…์€ ๊ฝค ๊นŒ๋‹ค๋กญ์ฃ . ๊ทธ๋ ‡์ง€๋งŒ ํˆด์ฒด์ธ์ด ๋„์™€๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ…Œ์ŠคํŠธ์™€ ๋””๋ฒ„๊น…์„ ์œ„ํ•œ CLI ํˆด์ฒด์ธ์„ ํฌํ•จํ•˜๊ณ  ์žˆ์–ด ๊ฐœ๋ฐœ๊ณผ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…์ด ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค. ๋จธ๋ฆฌ ์‹ธ๋งค๋Š” ์‹œ๊ฐ„์„ ์ค„์ด๊ณ  ๋ฉ‹์ง„ ๊ธฐ๋Šฅ์„ ๋งŒ๋“œ๋Š” ๋ฐ ๋” ๋งŽ์€ ์‹œ๊ฐ„์„ ์“ฐ์„ธ์š”! ๐Ÿ”

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: 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: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

์†Œ๊ฐœ: () ์ƒ์— ์„œ๋ฒ„ ์•ฑ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๊ฐ•๋ ฅํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ! ๐Ÿš€

Fedify๋Š” ์—ฐํ•ฉํ˜• ์•ฑ์˜ ๋ณต์žกํ•จ์„ ๋‹จ์ˆœํ™”ํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒโ€”๊ณ ์œ ํ•œ ๊ธฐ๋Šฅ๊ณผ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜โ€”์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. Fedify์˜ ํŠน์ง•์„ ์‚ดํŽด๋ณผ๊นŒ์š”? ๐Ÿงต

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

@fedify@hollo.social

As a potential user, which of the following technologies are you familiar with?

OptionVoters
JavaScript17 (14%)
TypeScript13 (11%)
HTML & CSS18 (15%)
JSX (JavaScript XML) or TSX (TypeScript XML)10 (8%)
HTTP14 (11%)
ActivityPub8 (7%)
Node.js13 (11%)
Unix shell12 (10%)
SQL & relational databases14 (11%)
Digital signatures4 (3%)
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

ํŠœํ† ๋ฆฌ์–ผ์—์„œ ์ด๋ ‡๊ฒŒ ์—๋””ํ„ฐ ๋ญ ์“ฐ๋ผ๊ณ  ์ด๋ž˜๋ผ ์ €๋ž˜๋ผ ํ•˜๋Š” ๊ฒŒ ๊ทธ๋‹ค์ง€ ์ข‹์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์€ ์ž˜ ์•Œ๊ณ  ์žˆ์ง€๋งŒโ€ฆ ์“ฐ๋Š”๋ฐ TypeScript LSP ์•ˆ ์ผœ๋‘๊ณ  ์ฝ”๋”ฉํ•˜๋‹ค๊ฐ€ ์ž์ž˜ํ•œ ํƒ€์ž… ์—๋Ÿฌ๋ฅผ ๋ชป ๋ณด๊ณ  ์ง€๋‚˜์ณ์„œ ์˜ค๋žซ๋™์•ˆ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ๊ฝค ๋ดค๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ ‡๊ฒŒ Visual Studio Code ์“ฐ๋ผ๊ณ  ํ•  ์ˆ˜๋ฐ–์— ์—†์—ˆ๋‹ค.

Visual Studio Code

Visual Studio Code๊ฐ€ ์—ฌ๋Ÿฌ๋ถ„์˜ ์ตœ์•  ์—๋””ํ„ฐ๊ฐ€ ์•„๋‹ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ, ์ด ํŠœํ† ๋ฆฌ์–ผ์„ ๋”ฐ๋ผํ•˜๋Š” ๋™์•ˆ์—๋Š” Visual Studio Code๋ฅผ ์จ๋ณด์‹ค ๊ฒƒ์„ ๊ถŒํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์šฐ๋ฆฌ๋Š” TypeScript๋ฅผ ์จ์•ผ ํ•˜๋Š”๋ฐ, Visual Studio Code๋Š” ํ˜„์กดํ•˜๋Š” ๊ฐ€์žฅ ๊ฐ„ํŽธํ•˜๋ฉด์„œ๋„ ๋›ฐ์–ด๋‚œ TypeScript IDE์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ, ์ƒ์„ฑ๋œ ํ”„๋กœ์ ํŠธ ์…‹์—…์— ์ด๋ฏธ Visual Studio Code ์„ค์ •์ด ๊ฐ–์ถฐ์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํฌ๋งคํ„ฐ๋‚˜ ๋ฆฐํŠธ ๋“ฑ๊ณผ ์”จ๋ฆ„ํ•  ํ•„์š”๋„ ์—†์Šต๋‹ˆ๋‹ค.

Visual Studio Code๋ฅผ ์„ค์น˜ํ•˜์˜€๋‹ค๋ฉด, ํŒŒ์ผ โ†’ ํด๋” ์—ด๊ธฐโ€ฆ ๋ฉ”๋‰ด๋ฅผ ๋ˆŒ๋Ÿฌ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค์‹ญ์‹œ์˜ค.

๋งŒ์•ฝ ใ€Œ์ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ๊ถŒ์žฅ๋˜๋Š” biomejs์˜ โ€˜Biomeโ€™ ํ™•์žฅ์„(๋ฅผ) ์„ค์น˜ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?ใ€๋ผ๊ณ  ๋ฌป๋Š” ์ฐฝ์ด ๋œจ๋ฉด ์„ค์น˜ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ํ•ด๋‹น ํ™•์žฅ์„ ์„ค์น˜ํ•˜์„ธ์š”. ์ด ํ™•์žฅ์„ ์„ค์น˜ํ•˜๋ฉด ๋“ค์—ฌ์“ฐ๊ธฐ๋‚˜ ๋„์–ด์“ฐ๊ธฐ ๊ฐ™์€ ์ฝ”๋“œ ์Šคํƒ€์ผ๊ณผ ์”จ๋ฆ„ํ•  ํ•„์š” ์—†์ด ์ž๋™์œผ๋กœ ์ฝ”๋“œ๊ฐ€ ์„œ์‹ํ™” ๋ฉ๋‹ˆ๋‹ค.

Tip

์—ฌ๋Ÿฌ๋ถ„์ด ์ถฉ์„ฑ์Šค๋Ÿฌ์šด Emacs ๋˜๋Š” Vim ์‚ฌ์šฉ์ž๋ผ๋ฉด, ์“ฐ๋˜ ์—ฌ๋Ÿฌ๋ถ„์˜ ์ตœ์•  ์—๋””ํ„ฐ๋ฅผ ์“ฐ๋Š” ๊ฒƒ์„ ๋ง๋ฆฌ์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ๋‹ค์Œ ๋ช‡ ๊ฐ€์ง€ ์„ค์ •์€ ์งš๊ณ  ๋„˜์–ด๊ฐˆ ๊ฒƒ์„ ๊ถŒํ•ฉ๋‹ˆ๋‹ค:

    TypeScript LSP
    Biome LSP

์œ„ ๋‘ LSP ์„ค์ • ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์ƒ์‚ฐ์„ฑ์˜ ์ฐจ์ด๊ฐ€ ํฌ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
ALT text detailsVisual Studio Code Visual Studio Code๊ฐ€ ์—ฌ๋Ÿฌ๋ถ„์˜ ์ตœ์•  ์—๋””ํ„ฐ๊ฐ€ ์•„๋‹ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ, ์ด ํŠœํ† ๋ฆฌ์–ผ์„ ๋”ฐ๋ผํ•˜๋Š” ๋™์•ˆ์—๋Š” Visual Studio Code๋ฅผ ์จ๋ณด์‹ค ๊ฒƒ์„ ๊ถŒํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์šฐ๋ฆฌ๋Š” TypeScript๋ฅผ ์จ์•ผ ํ•˜๋Š”๋ฐ, Visual Studio Code๋Š” ํ˜„์กดํ•˜๋Š” ๊ฐ€์žฅ ๊ฐ„ํŽธํ•˜๋ฉด์„œ๋„ ๋›ฐ์–ด๋‚œ TypeScript IDE์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ, ์ƒ์„ฑ๋œ ํ”„๋กœ์ ํŠธ ์…‹์—…์— ์ด๋ฏธ Visual Studio Code ์„ค์ •์ด ๊ฐ–์ถฐ์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํฌ๋งคํ„ฐ๋‚˜ ๋ฆฐํŠธ ๋“ฑ๊ณผ ์”จ๋ฆ„ํ•  ํ•„์š”๋„ ์—†์Šต๋‹ˆ๋‹ค. Visual Studio Code๋ฅผ ์„ค์น˜ํ•˜์˜€๋‹ค๋ฉด, ํŒŒ์ผ โ†’ ํด๋” ์—ด๊ธฐโ€ฆ ๋ฉ”๋‰ด๋ฅผ ๋ˆŒ๋Ÿฌ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค์‹ญ์‹œ์˜ค. ๋งŒ์•ฝ ใ€Œ์ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ๊ถŒ์žฅ๋˜๋Š” biomejs์˜ โ€˜Biomeโ€™ ํ™•์žฅ์„(๋ฅผ) ์„ค์น˜ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?ใ€๋ผ๊ณ  ๋ฌป๋Š” ์ฐฝ์ด ๋œจ๋ฉด ์„ค์น˜ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ํ•ด๋‹น ํ™•์žฅ์„ ์„ค์น˜ํ•˜์„ธ์š”. ์ด ํ™•์žฅ์„ ์„ค์น˜ํ•˜๋ฉด ๋“ค์—ฌ์“ฐ๊ธฐ๋‚˜ ๋„์–ด์“ฐ๊ธฐ ๊ฐ™์€ ์ฝ”๋“œ ์Šคํƒ€์ผ๊ณผ ์”จ๋ฆ„ํ•  ํ•„์š” ์—†์ด ์ž๋™์œผ๋กœ ์ฝ”๋“œ๊ฐ€ ์„œ์‹ํ™” ๋ฉ๋‹ˆ๋‹ค. Tip ์—ฌ๋Ÿฌ๋ถ„์ด ์ถฉ์„ฑ์Šค๋Ÿฌ์šด Emacs ๋˜๋Š” Vim ์‚ฌ์šฉ์ž๋ผ๋ฉด, ์“ฐ๋˜ ์—ฌ๋Ÿฌ๋ถ„์˜ ์ตœ์•  ์—๋””ํ„ฐ๋ฅผ ์“ฐ๋Š” ๊ฒƒ์„ ๋ง๋ฆฌ์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ๋‹ค์Œ ๋ช‡ ๊ฐ€์ง€ ์„ค์ •์€ ์งš๊ณ  ๋„˜์–ด๊ฐˆ ๊ฒƒ์„ ๊ถŒํ•ฉ๋‹ˆ๋‹ค: TypeScript LSP Biome LSP ์œ„ ๋‘ LSP ์„ค์ • ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์ƒ์‚ฐ์„ฑ์˜ ์ฐจ์ด๊ฐ€ ํฌ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

I'm writing a new . If a tutorial on creating an server needs to deal with persistent data, where should they be stored? I want the tutorial to focus as much as possible on implementing the business logic and as little as possible on other things.

OptionVoters
Regular files0 (0%)
SQLite0 (0%)
MySQL or PostgreSQL0 (0%)
Redis0 (0%)
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

์ƒˆ ํŠœํ† ๋ฆฌ์–ผ์„ ์จ๋ณด๊ณ  ์žˆ๋‹ค.

HackMD์—์„œ ์“ฐ๊ณ  ์žˆ๋Š” Fedify์˜ ์ƒˆ ํŠœํ† ๋ฆฌ์–ผ. ์™ผ์ชฝ์—๋Š” Markdown ํฌ๋งท์˜ ํŠœํ† ๋ฆฌ์–ผ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์žˆ๊ณ , ์˜ค๋ฅธ์ชฝ์—๋Š” ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ€ ์žˆ๋‹ค.
ALT text detailsHackMD์—์„œ ์“ฐ๊ณ  ์žˆ๋Š” Fedify์˜ ์ƒˆ ํŠœํ† ๋ฆฌ์–ผ. ์™ผ์ชฝ์—๋Š” Markdown ํฌ๋งท์˜ ํŠœํ† ๋ฆฌ์–ผ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์žˆ๊ณ , ์˜ค๋ฅธ์ชฝ์—๋Š” ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ€ ์žˆ๋‹ค.
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

If you read a , what software would you like to see as an in the tutorial?

OptionVoters
Microblog (like Mastodon)21 (32%)
Long-form blog (like WordPress)10 (15%)
Photo blog (like Pixelfed)7 (11%)
Forum (like NodeBB)6 (9%)
Link aggregator (like Lemmy)9 (14%)
Much simpler one!13 (20%)
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

A good issue to contribute to for the first time. Anybody interested?

github.com/dahlia/fedify/issue

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

I finally turned the Federation class into an interface now!

github.com/dahlia/fedify/commi

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

@fedify@hollo.social

, an server framework, has released v0.12.0. It's a minor release in about a month, so there's quite a few changes:

It's available on JSR and npm now, and you can upgrade it using the deno add command on Deno:

deno add @fedify/fedify@^0.12.0

Or using the bun add command on Bun:

bun add @fedify/fedify@^0.12.0

Or using the npm add command on Bun:

npm add @fedify/fedify@^0.12.0

fedicat's avatar
fedicat

@fedicat@pc.cafe

More slow tinkering with , now have the actor dispatcher working and serving up my profile as seen from .

fediverse profile showing me working on a laptop on a sofa with a dog on each side
ALT text detailsfediverse profile showing me working on a laptop on a sofa with a dog on each side
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

Since v0.12.0, when verifying HTTP Signatures or Object Integrity Proofs, it will cache the public keys once fetched. It is okay even if a cached key becomes outdated because a verification failure due to a cached key will invalidate the cache and force a verification retry.

This feature is available for preview in v0.12.0-dev.307+235629d5 (JSR or npm).

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

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

Due to the details of the behavior of Astro's middleware, it looks like the next release (v0.12.0) may not be able to ship with the integration. ๐Ÿ˜…

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

The details of the behavior of 's middleware make it difficult for to integrate with Astro. ๐Ÿคฆโ€โ™‚๏ธ

github.com/withastro/astro/iss

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

Now that I've created the `fedify init` command, I've been thinking about how to modify 's . 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. ๐Ÿค”

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

Working on the `fedify init` command, the project setup wizard for โ€ฆ

A demo of the `fedify init` command. The JavaScript runtime choices are Deno, Node.js, and Bun, of which Deno is selected. The web framework choices are Bare-bones, Astro, Fresh, and Hono, with Hono selected. The key-value store options are No cache, Redis, and Deno KV, with Deno KV selected. The message queue options are No background jobs, Redis, Deno KV, and Deno KV is selected. Finally, an Hono project integrated with Fedify is created and the server is started by running the `deno task dev` command.
ALT text detailsA demo of the `fedify init` command. The JavaScript runtime choices are Deno, Node.js, and Bun, of which Deno is selected. The web framework choices are Bare-bones, Astro, Fresh, and Hono, with Hono selected. The key-value store options are No cache, Redis, and Deno KV, with Deno KV selected. The message queue options are No background jobs, Redis, Deno KV, and Deno KV is selected. Finally, an Hono project integrated with Fedify is created and the server is started by running the `deno task dev` command.
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

The fedify command is now available on ! You can install it using the following command:

npm install -g @fedify/cli

Or if you use :

bun install -g @fedify/cli

https://www.npmjs.com/package/@fedify/cli

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

Currently, 's tutorial is lengthy in explaining how to set up a project. If there was a command like `fedify init`, that part could be greatly shortened.

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

I finally realized why so many frameworks come with an init/new command. Having that command makes for shorter tutorials!

fedicat's avatar
fedicat

@fedicat@pc.cafe

finally getting to the part of my deno-fedify experiment, first thing working is the nodeinfo support

screenshot of web browser showing a debug view of JSON showing server info
ALT text detailsscreenshot of web browser showing a debug view of JSON showing server info
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

Today I'm going to work on trying the new workspaces for the repository.

docs.deno.com/runtime/manual/b

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

@fedify@hollo.social

offers robust logging capabilities through integration with LogTape. This feature allows you to easily debug and monitor your Fedify app!

To enable , simply install the @logtape/logtape package and configure it in your app's entry point:

import { configure, getConsoleSink } from "@logtape/logtape";

await configure({
  sinks: { console: getConsoleSink() },
  filters: {},
  loggers: [
    { category: "your-app", sinks: ["console"], level: "debug" },
    { category: "fedify",   sinks: ["console"], level: "info" },
  ],
});

Fedify uses hierarchical categories for fine-grained control over log output. Key categories include ["fedify", "federation", "http"] for HTTP requests/responses and ["fedify", "federation", "inbox"]/["fedify", "federation", "outbox"] for incoming/outgoing activities. (There are more categories.)

With integration, you gain valuable insights into your Fedify app's behavior, making troubleshooting and optimization much more straightforward!

https://fedify.dev/manual/log

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

's security policy is just written!

github.com/dahlia/fedify/secur

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

I want to create good first issues for @fedify, but I don't have a good idea of appropriate tasks for first-time contributors. Any ideas?

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

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

Ready to simplify your ? Check out !

Join us in building a more connected and decentralized web! ๐ŸŒ

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

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

also focuses on the practical side of . Its docs includes guidance on using the vocabulary API in line with de facto norms set by popular implementations like . Build more interoperable apps with less headache! ๐Ÿค

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

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

Debugging interactions can be tricky, but 's got your back! It includes a CLI toolchain for testing and debugging, making development and troubleshooting a breeze. Spend less time scratching your head and more time building awesome features! ๐Ÿ”

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

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

Out of the box, comes packed with features crucial for development:

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

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

Flexibility is key! isn't a full-stack solutionโ€”it's designed to work alongside your favorite web frameworks. Whether you're using , , , or others, Fedify has got you covered with easy integration options. Build your app, your way! ๐Ÿ› ๏ธ

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

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

One of 's strongest features is its type-safe vocabulary objects. These represent the Activity Vocabulary and vendor-specific extensions, ensuring robust and safe code when working with ActivityPub objects and activities. Say goodbye to runtime errors and hello to confident coding! ๐Ÿ’ช๐Ÿผ

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

@fedify@hollo.social

Introducing : A powerful library for building server apps in the ! ๐Ÿš€

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! ๐Ÿงต

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

@fedify@hollo.social

In 's next release, v0.12.0, we'll be adding support for integration with Astro, a web framework for content-driven websites.

https://unstable.fedify.dev/manual/integration#astro

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

@fedify@hollo.social

We released 0.9.2, 0.10.1, and 0.11.1, which patched the last reported , CVE-2024-39687, but the vulnerability of SSRF attacks via DNS rebinding still exists, so we released Fedify 0.9.3, 0.10.2, and 0.11.2, which fixes it.

If you are using an earlier version, please update as soon as possible.

Thanks to @benaryorg for reporting the vulnerability!

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

@fedify@hollo.social

We're releasing @fedify/h3! Now you can integrate with h3, an HTTP server framework behind Nitro, Analog, Vinxi, SolidStart, TanStack Start, and other many web frameworks.

https://github.com/dahlia/fedify-h3

Alejandro Baez's avatar
Alejandro Baez

@zeab@fosstodon.org

Woah, is now live in the with @index.

Absolutely outstanding progress! definitely deserves a great deal of recognition for making this possible. ๐Ÿ˜Ž

Feeling like we now have tooling in place to fediverse all things. ๐Ÿ˜…

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

@fedify@hollo.social

Finally, @ghost has open sourced their implementation powered by ! For Fedify users, this means another production-grade example code.

If you'd like to follow updates on 's ActivityPub implementation, you can do so by following @index!

https://github.com/TryGhost/ActivityPub

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

To users: please update your Fedify as soon as possible!

hollo.social/@fedify/019080c7-

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

@fedify@hollo.social

CVE-2024-39687, a vulnerability that could potentially allow a Server Side Request Forgery (SSRF) attack, was discovered in and a security patch has been applied to fix it. The patched versions are 0.9.2, 0.10.1, and 0.11.1, respectively. If you are using an earlier version, please update as soon as possible.

Thanks to @thisismissem for reporting the vulnerability!

technicat's avatar
technicat

@technicat@universeodon.com

I was planning to play around with but got sidetracked into learning ...

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

@fedify@hollo.social

Hooray, 's GitHub repository just hit 300 stars!

Fedify's GitHub repository, which has over 300 stars.
ALT text detailsFedify's GitHub repository, which has over 300 stars.
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

ํ•œ ๋‹ฌ ์•ž์„œ ์ œ๊ฐ€ ์ผ์ž๋ฆฌ๋ฅผ ์ฐพ๋Š”๋‹ค๋Š” ๊ธ€์„ ์˜ฌ๋ ธ์—ˆ์ง€์š”? ๊ทธ๋Ÿฐ๋ฐ ๊ฐ‘์ž‘์Šค๋Ÿฝ๊ฒŒ ์ œ๊ฐ€ ์˜คํ”ˆ ์†Œ์Šค๋กœ ๋งŒ๋“ค๊ณ  ์žˆ๋˜ @fedify ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ธ€๋กœ๋ฒŒ ๋ธ”๋กœ๊น… ํ”Œ๋žซํผ์ธ @ghost ๋กœ๋ถ€ํ„ฐ ํŽ€๋”ฉ์„ ๋ฐ›๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ผ์ž๋ฆฌ ์ฐพ๋Š” ๊ฒƒ์€ ๊ทธ๋งŒ๋‘๊ณ , ํ•œ๋™์•ˆ ์ผ์„ ํ•˜๊ฒŒ ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

writings.hongminhee.org/2024/0

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

I jsut wrote a detailed post on my blog about @ghost's for @fedify! (Both English and Korean available.)

writings.hongminhee.org/2024/0

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

now has a queue for incoming activities and they are automatically retried when they fail. The default retry strategy is good enough (exponential backoff + decorrelated jitter), and it's even fully customizable. Updated also the docs:

unstable.fedify.dev/manual/inb

You can give it a try by installing 0.12.0-dev.265+cb851932, the latest unstable release:

jsr.io/@fedify/fedify@0.12.0-d
npmjs.com/package/@fedify/fedi

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

In the next version of , the type is introduced to let you fully customize the retry policy of the task queue for incoming and outgoing activities. Of course, you can also simply adjust the parameters of the built-in exponential backoff + decorrelated jitter policy.

outboxRetryPolicy

This API is available since Fedify 0.12.0.

The retry policy for sending activities to recipients' inboxes.

By default, this uses an exponential backoff strategy with a maximum of 10 attempts and a maximum delay of 12 hours.

You can fully customize the retry policy by providing a custom function that satisfies the RetryPolicy type. Or you can adjust the parameters of the createExponentialBackoffRetryPolicy() function, which is a default implementation of the retry policy.
ALT text detailsoutboxRetryPolicy This API is available since Fedify 0.12.0. The retry policy for sending activities to recipients' inboxes. By default, this uses an exponential backoff strategy with a maximum of 10 attempts and a maximum delay of 12 hours. You can fully customize the retry policy by providing a custom function that satisfies the RetryPolicy type. Or you can adjust the parameters of the createExponentialBackoffRetryPolicy() function, which is a default implementation of the retry policy.
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

Basic implementation of the inbox queue is complete and documentation is being worked on.

hollo.social/@fedify/0190687b-

Making inbox listeners non-blocking

This API is available since Fedify 0.12.0.

Usually, processes inside an inbox listener should be non-blocking because they may involve long-running tasks. Fortunately, you can easily turn inbox listeners into non-blocking by providing a queue option to createFederation() function. If it is not present, incoming activities are processed immediately and block the response to the sender until the processing is done.

While the queue option is not mandatory, it is highly recommended to use it in production environments to prevent the server from being overwhelmed by incoming activities.

Note: Activities with invalid signatures/proofs are silently ignored and not queued.
ALT text detailsMaking inbox listeners non-blocking This API is available since Fedify 0.12.0. Usually, processes inside an inbox listener should be non-blocking because they may involve long-running tasks. Fortunately, you can easily turn inbox listeners into non-blocking by providing a queue option to createFederation() function. If it is not present, incoming activities are processed immediately and block the response to the sender until the processing is done. While the queue option is not mandatory, it is highly recommended to use it in production environments to prevent the server from being overwhelmed by incoming activities. Note: Activities with invalid signatures/proofs are silently ignored and not queued.
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

In the next version of , the Context.hostname, Context.host, and Context.origin properties will be added for better multitenancy/virtual hosting support.

https://github.com/dahlia/fedify/issues/66#issuecomment-2198967566

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

When there is no queue, if the process fails, the inbox can just respond with a 500 server error and the sender will resend it.

But with a queue, by the time the inbox responds, it doesn't know if the process will fail because it hasn't run yet. So the sender won't retry whether it fails or not.

So, should it have its own retry logic when there is a queue?

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

I'm adding a queue for incoming activities in , and I have a concern. If an error occurs while processing an activity, should it retry?

hollo.social/@fedify/0190687b-

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

@fedify@hollo.social

has always been queuing outgoing activities, but not incoming activities. Thanks to @ghost's sponsorship, we are now implementing queues for incoming activities!

https://github.com/dahlia/fedify/issues/70

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

It was trivial than I expected; now supports type!

blaine's avatar
blaine

@blaine@mastodon.social

I'm not sure if it's new or if I'm just really bad at paying attention, but I just learned about it and I'm so excited about : unstable.fedify.dev/

I think systems that are shaped like fedify are one of the key things needed to really open experimentation and exploration of the possibilities that the fediverse affords.

ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ's avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ

@hongminhee@todon.eu

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:

โ€ข Type-safe objects for Activity Vocabulary (including some vendor-specific extensions)
โ€ข client and server
โ€ข HTTP Signatures
โ€ข Middleware for handling webhooks
โ€ข protocol
โ€ข .js, , and support
โ€ข CLI toolchain for testing and debugging

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

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

If you want a message queue backend for as well, please upvote this issue!

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

@fedify@hollo.social

has supported optional queuing for outgoing activities, with two built-in message queue backends: InProcessMessageQueue, which is suitable for development, and DenoKvMessageQueue, which is only available in Deno.

Fedify has also had two built-in cache backends, MemoryKvStore, which is suitable for development, and DenoKvStore, which is only available in Deno.

Now, however, by installing the @fedify/redis package, you can use as both a message queue backend and a cache backend! Unlike DenoKvMessageQueue and DenoKvStore, it's also available for .js and .

This feature was made possible with the support of @ghost.

https://github.com/dahlia/fedify-redis

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/

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s post

As it turns out, the issue was neither on 's end nor 's end. It was a issue that I discovered during Hollo development, and anyway it's now fixed!

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

now has the official account! Please follow @fedify!

hollo.social/@fedify/01905d6a-

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!

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

Found a memory leak (on ) in recent commits of โ€”be careful when using the unstable versions.

ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ's avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ

@hongminhee@todon.eu

We have a space on for the community, so if you have any questions, feel free to join us and ask!

matrix.to/#/#fedify:matrix.org

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

I'm happy to announce that the project has been funded by @ghost!

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

development is often motivation to add features to , for example, most of the commits I added to Fedify today were for Hollo.

ๆดช ๆฐ‘ๆ†™ (Hong Minhee)'s avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee)

@hongminhee@fosstodon.org

If you'd like to support the development of or , you can sponsor me on GitHub!

github.com/sponsors/dahlia

Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

Introducing . Hollo is an -enabled single-user microblogging software. Although it's for a single user, it also supports creating and running multiple accounts for different topics.

It's headless, meaning you can use existing client apps instead, with its Mastodon-compatible APIs. It has most feature parity with Mastodon. Two big differences with Mastodon is that you can use in the content of your posts and you can quote another post.

Oh, and Hollo is built using and .

https://github.com/dahlia/hollo

Tiago F's avatar
Tiago F

@tiagojferreira@bolha.us

Fedify รฉ uma biblioteca TypeScript para construir aplicativos de servidor federado desenvolvidos com ActivityPub e outros padrรตes, chamados fediverse . 1 Seu objetivo รฉ eliminar a complexidade e o cรณdigo padrรฃo redundante ao construir um aplicativo de servidor federado, para que vocรช possa se concentrar na lรณgica de negรณcios e na experiรชncia do usuรกrio.

github.com/dahlia/fedify

ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ's avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ

@hongminhee@todon.eu

Version 0.10.0 of , an server framework, has been released! Starting with this release, Fedify, previously distributed under AGPL 3.0, is now distributed under the MIT License to encourage wider adoption. Here are the major changes:

โ€ข In addition to RSA-PKCS#1-v1.5, Fedify now supports Ed25519 for signing and verifying the activities.
โ€ข FEP-521a: Multiple key pairs can now be registered for an actor.
โ€ข FEP-8b32: Implemented Object Integrity Proofs.
โ€ข Added Arrive and Question classes.

github.com/dahlia/fedify/relea

ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ's avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ

@hongminhee@todon.eu

Starting with the next release, , previously distributed under AGPL 3.0, will be distributed under the MIT License to encourage wider adoption!

ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ's avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ

@hongminhee@todon.eu ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ's post

I had three candidates for the name: Fedilib, Libfedi, and , and when I put it to a poll, Fedify was the most popular choice, so it became the current name.

todon.eu/@hongminhee/111976124

ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ's avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ

@hongminhee@todon.eu

A little backstory about 's name: I originally wanted to name Fedify FediKit, but I realized that another project was already taking the name, so I had to change it in a hurry before release.

todon.eu/@hongminhee/111976051

ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ's avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ

@hongminhee@todon.eu

@hollo is a testbed for the bleeding edge of . ๐Ÿ˜‚

Darnell Clayton :verified:'s avatar
Darnell Clayton :verified:

@darnell@one.darnell.one

In The Machine: Making Adoption Easier Again ๐Ÿ”› @darnell@darnell.day (Seize The Day) ๐Ÿ“ฐ darnell.day/ghost-in-the-fedif

ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ's avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ

@hongminhee@todon.eu

I'm very excited that the team has chosen to implement . I've been working closely with the Ghost team, and it's been a lot of fun, and I can't wait to see the ActivityPub implementation at Ghost.

activitypub.ghost.org/day-4/

Jeff Sikes's avatar
Jeff Sikes

@box464@mastodon.social

Ghost will be using the open source Fedify server framework to manage the activitypub bits and pieces of their service.

activitypub.ghost.org/day-4/?r

ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ's avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ

@hongminhee@todon.eu ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ's post

Thanks to @silverpill, is finally FEP-8b32 compliant! Though it's not ready for general release yet, it's passing tests in the latest main branch. I'll test it with Mitra and other FEP-8b32-compliant implementations, and if it works well, it'll be included in 0.10.0.

You can try it out in version 0.10.0-dev.205+0cbca257.

jsr.io/@fedify/fedify@0.10.0-d

ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ's avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ

@hongminhee@todon.eu

I just released 0.9.1, which fixed one small bug.

github.com/dahlia/fedify/relea

ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ's avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ

@hongminhee@todon.eu ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ's post

Implementing Object Integrity Proofs (FEP-8b32) and my implementation is not passing the test vectors. I haven't found the reason for 24 hoursโ€ฆ ๐Ÿ˜ซ

ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ's avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ

@hongminhee@todon.eu ยท Reply to ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ's post

FEP-521a has been implemented in .

Actors now have the property, and the class has been added. For example, if you look at the the actor from the Fedify Example Blog (fedify-blog.deno.dev/users/fed), you can see that it has the assertionMethods property in addition to the publicKey property.

You can try it out in version 0.10.0-dev.196+55cc34d1.

jsr.io/@fedify/fedify@0.10.0-d

ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ's avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ

@hongminhee@todon.eu

As a first step towards adding Object Integrity Proofs (FEP-8b32) to , I've made it support keys. I've also enabled multiple keys to be associated with an actor. For example, if you look at the actor from the Fedify Example Blog (fedify-blog.deno.dev/users/fed), you'll see that it has two public keys, one for RSA and one for Ed25519.

You can try it out in version 0.10.0-dev.190+4dffb89a.

jsr.io/@fedify/fedify@0.10.0-d

ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ's avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ

@hongminhee@todon.eu

Did you know? offers the markdown-it plugins for parsing -style mentions and hashtags syntax.

โ€ข @fedify/markdown-it-mention: github.com/dahlia/markdown-it-
โ€ข @fedify/markdown-it-hashtag: github.com/dahlia/markdown-it-

Check it out!

ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ's avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ

@hongminhee@todon.eu

Version 0.9.0 of , an server framework, has been released! Here are the main changes:

โ€ข Added Tombstone, Hashtag, and Emoji classes.
โ€ข Added normalizeActorHandle() function to normalize an actor handle. This is needed when the domain of the actor handle is an IDN, or when the domain contains capital letters.
โ€ข Added an option to the sendActivity() function, excludeBaseUris, to exclude specified servers from sending activities. This can be used when you don't want to send activities to your own server.
โ€ข Added Context.parseUri(), a method to parse actor, object, inbox, and collection URIs.
โ€ข The time window for HTTP Signatures verification is now configurable.
โ€ข The @fedify/fedify/httpsig module has been renamed to . This is in preparation for implementing additional object integrity proofs other than HTTP Signatures.
โ€ข Improved interoperability with .

github.com/dahlia/fedify/relea

ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ's avatar
ๆดช ๆฐ‘ๆ†™ (Hong Minhee) ๐Ÿค๐Ÿผ

@hongminhee@todon.eu

Just set up a Misskey instance for debugging โ€ฆ