🆕 blog! “Some updates to ActivityBot”

I couple of years ago, I developed ActivityBot - the simplest way to build Mastodon Bots. It is a single PHP file which can run an entire ActivityPub server and it is less than 80KB.

It works! You can follow @openbenches to see the latest entries on OpenBenches.org, and @colours for a …

👀 Read more: shkspr.mobi/blog/2026/03/some-

#ActivityBot #ActivityPub #mastodon #php

shkspr.mobi/blog/2026/03/some-updates-to-activitybot/
Logo for ActivityPub.Terence Eden’s BlogSome updates to ActivityBotI couple of years ago, I developed ActivityBot - the simplest way to build Mastodon Bots. It is a single PHP file which can run an entire ActivityPub server and it is less than 80KB. It works! You can follow @openbenches@bot.openbenches.org to see the latest entries on OpenBenches.org, and @colours@colours.bots.edent.tel for a slice of colour in your day, and @solar@solar.bots.edent.tel to see…

Replying to @⁨Edent@mastodon.social⁩

I'm going to start doing some user research for #ActivityBot. I'd like to pay participants £20 / €20 for an hour of their time.

This has to be a voucher (no cash or cash-like cards) so which would you prefer?

Steam (Games)35%
Kobo (Books)28%
Pi Hut (Hardware)26%
Something else (please say what)9%
en

Replying to @⁨Edent@mastodon.social⁩

I'm going to try and keep a record of all the bugs, errors, and inconsistencies I've reported in #ActivityPub and #Mastodon documentation.

First up, how big are the limits on what you can federate?

Mastodon lists some limits in KB/MB, but others are just raw numbers. That might make sense for an ASCII world - but emoji complicate everything.

github.com/mastodon/mastodon/i

github.com/mastodon/mastodon/issues/40290

Replying to @⁨Edent@mastodon.social⁩

A weird #ActivityPub message from #Frendica.

Signed on 2026-09-01
Published on 2026-03-02

That's a skew of six months! The message type is "Undo" - so they're undoing a like they sent in March.

Is there *really* a worry about accepting requests like this? Given the message has been signed, what risk is there to replay attacks?

Bug report at github.com/friendica/friendica

github.com/friendica/friendica/issues/16150
I have searched open and closed issues for duplicates Bug Description My AP server has received an Undo request from a server running Friendica 'Blutwurz' 2026.05-1595 The header which contains the...GitHubUndo published timestamp doesn't match signature date · Issue #16150 · friendica/friendicaI have searched open and closed issues for duplicates Bug Description My AP server has received an Undo request from a server running Friendica 'Blutwurz' 2026.05-1595 The header which contains the...by edent

Replying to @⁨Profpatsch@mastodon.xyz⁩

@Profpatsch @Edent

An HTTP signature proves that an activity exists on the originating server - it's substitute for fetching activity by its ID. The originating server has full control over the activity JSON and the request headers, so the date of publishing doesn't matter.

What may matter is the date when the signature itself was created. If you receive a request signed several days ago, that might indicate a replay attack... Or a broken clock on the sender side.