Activity Relay 3.1.0 and Activity Relay Directory 1.3.0 are released!

Activity Relay 3.1.0 and Activity Relay Directory 1.3.0 are released!

Activity Relay 3.1.0 and Activity Relay Directory 1.3.0 are released. This synchronized release brings together some notable improvements in the heartbeat protocol. These enhancements allow a Relay operator to push stats and information to Directory servers automatically, keeping information up to date.

Live installations of the Relay and Directory may be found at:

https://directory.argentwolf.org

https://relay.argentwolf.org

On the Relay itself, the policy information will be presented on the default home page:

On the Directory, this information will be reflected as well with time stamps on when it was received and last checked for health by the Directory:

Other relays may be manually added to the Directory by the Directory operator/Admin. I have manually collected a list of Fediverse relays and populated my Directory installation with information about them. These sites are not automatically updated with regard to policy, but are verified as reachable by the Directory server.

Relays that are restricted (Approval Required) or closed to sign ups will appear as such on the Directory. Relays that go offline or are otherwise unreachable will appear in the offline list, eventually moving to the Graveyard after 30 days of offline time. Offline relays can be added the the Directory, but they will not become visible on the index until they pass an online check.

As always, if you want to make your own front facing website, you can disable the built in pages and use your own endpoints!

Comments, feedback, and bug reports are all welcome! Repo links below, available in both .deb and docker images. If you found these useful, please consider a tip to my Ko-fi to support further development! Thank you!

https://github.com/thystra/Activity-Relay

Activity-Relay 3.1.0

  • Added Activity-Relay Directory Protocol v2 profile synchronization and Protocol v3 participating-site telemetry.
  • Added automatic Directory reconciliation on relay startup, including an immediate heartbeat for already-registered relays.
  • Improved manual Directory register, heartbeat, and sync commands so they coordinate cleanly with the background scheduler.
  • Added richer relay profile metadata for registration status, topics, languages, regions, contact details, and related information.
  • Added --test-config validation with safer handling of optional profile errors.
  • Added optional SUPPORT information to the generated relay website, including links and plain-text values such as cryptocurrency addresses.
  • Hardened the outbound Directory client against malformed responses, unsafe redirects, oversized responses, and other hostile input.
  • Improved static-site tooling, operator documentation, and deterministic release packaging.
  • Preserves existing relay identity, Redis state, subscriptions, delivery behavior, and queue compatibility.
  • Published for linux/amd64 and linux/arm64 at ghcr.io/thystra/activity-relay:3.1.0.

https://github.com/thystra/activity-relay-directory

Activity-Relay Directory 1.3.0

  • Added source-aware relay profiles with per-field precedence: override > relay > csv.
  • Added bounded CSV import/export for relay metadata, including profile-change previews before applying updates.
  • Added support for updating metadata on already-known relays even when they are currently unreachable.
  • Added Activity-Relay lifecycle Protocol v2 profile synchronization and Protocol v3 participating-site telemetry while retaining Protocol v1 compatibility.
  • Treats successful authenticated registration as current relay-liveness evidence, improving restart and recovery behavior.
  • Expanded /v2/relays and the public Directory with profile information, site counts, and Open/Restricted/Closed registration status.
  • Preserves the existing four operational tiers: Heartbeat + Online, Online, Offline/Unreachable, and Graveyard.
  • Added configurable Directory title, banner, support information, and improved operator-facing presentation.
  • Keeps descriptive metadata separate from reachability, heartbeat health, moderation, pruning, and tier placement.
  • Upgrades existing databases in place to schema 12 while preserving the frozen /v1/relays compatibility API.
  • Published for linux/amd64 at ghcr.io/thystra/activity-relay-directory:1.3.0.

Activity Relay Directory 1.2.0 Released

Activity-Relay Directory 1.2 expands relay discovery, long-term availability tracking, and the public-facing Directory while preserving the authenticated V1 lifecycle protocol and the frozen /v1/relays compatibility API.

Highlights

  • More resilient relay discovery and bulk imports
  • Retention and automatic retry of unavailable relay candidates
  • ActivityStreams Group relay actor support
  • Four public operational relay tiers
  • 30-day transition to the Graveyard tier
  • Aggregate online, offline, and pending-verification counts on the public-facing Directory page
  • Local tier-scoped exports and public plain-text relay downloads
  • Automatic recovery of previously unavailable relays
  • Debian upgrade handling that reloads systemd definitions without automatically restarting an active Directory

Activity Relay Directory 1.2.0 can be downloaded from here: https://github.com/thystra/activity-relay-directory/releases/tag/v1.2.0

A working example of Activity Relay Directory may be found at https://directory.argentwolf.org

If you find this useful, please consider tipping me at my ko-fi! Thanks!

ARD 1.3 is mapped out and will be paired with a synchronized release of Activity Relay server. The 1.3 edition will allow for additional information, e.g. notes, state, and filtering, to be provided by Relay server operators rather than manually input by the Directory server operator/admin.

Activity Relay 3.0.1 maintenance release

30 Sep 2026

Activity Relay 3.0.1 has been released to fix a couple bugs caused by invalid follower states blocking relay operation.

https://github.com/thystra/Activity-Relay/releases/tag/v3.0.1

Activity-Relay 3.0.1 is a focused reliability release for follower-state handling and relay fan-out.

Fixed

  • Prevent stale mutual-follow responses from recreating incomplete Redis follower records.
  • Validate follower state before persistence.
  • Ignore malformed persisted follower records when loading relay state.
  • Isolate invalid or unplannable delivery targets so one bad receiver cannot abort healthy fan-out.
  • Keep queue reservations and remaining-delivery counts aligned with deliveries actually planned.
  • Harden manual follower acceptance ordering.
  • Update Forgejo container/release CI for Debian Trixie’s split Docker client packages.

No configuration or data migration is required.

The 3.0.1 candidate was production-tested on relay.argentwolf.org, including real WordPress fan-out to healthy Friendica and Mastodon receivers while an independently failing receiver continued through its isolated retry path.

Container: ghcr.io/thystra/activity-relay:3.0.1

See docs/releases/v3.0.1.md and CHANGELOG.md for complete details.

The attached files are the exact canonical artifacts produced and accepted by the Forgejo release workflow.

If you find this useful, please consider leaving a tip on my Ko-Fi – https://ko-fi.com/thewolfandtheraven

Activity Relay 3.0.0 and Activity Relay Directory 1.0.0 Released!

I am pleased to announce that Activity Relay 3.0 and Activity Relay Directory 1.0 are released! This brings a conclusion to this passion project. I’ve been dabbling in the Fediverse for a while, and have, for some years, wanted to run my own relay. Of course, there were never very many good relay packages, and of what there were, were incomplete or incompatible with Friendica (or WordPress!, which was what I wanted to use as my platform of choice.

You can get them here:

https://github.com/thystra/Activity-Relay
Operational Example: https://relay.argentwolf.org

https://github.com/thystra/activity-relay-directory
Operational Example: https://directory.argentwolf.org

So, now having access to AI, I forked the Yukimochi Activity Relay and spent some time directing AI to fix and modernize the Relay software. 3.0 now supports RFC 9421 HTTP Message Signatures and RFC 9530 Digest Fields – a big thanks to @julian for turning me onto that. A docker image and a .deb package is provided. An optional front end website is also part of it, which can be disabled or otherwise configured with your own custom front end for the statistics.

The most significant addition to this is the link to Activity Relay Directory (ARD). Once I had my relay server up and running, I wanted to advertise it. I messaged the 4 or 5 current list of relays that I could find. I never heard back from any of them, if they even had a way to message them. So how does one advertise a Relay? Thus, the Directory was born.

Relay operators can opt in to have their Relay auto report to a Directory and indicate that it is up. Directory operators can set their Directory to open or closed, and no manual intervention is required. An example can be seen at https://directory.argentwolf.org. Other Relay implementations can use the Protocol to talk to the Directory Server as well.

I am also committing to maintain a list where Relay operators can find other Directories to list their Relay in.

Of course, as the human in charge, all faults are mine. So if there is an issue, please log a bug against the appropriate package. If you have an instance, I’d love to see you connect to the relay. If you host a Relay, please try the directory server.

This was something I’ve wanted for a while, and I’m happy to give back to the Fediverse community.

@alan

Activity-Relay v2.5.0 is released!

Activity-Relay v2.5.0 is now released!

  • Added signed authorized-fetch support for secure-mode Mastodon servers.
  • Improved Friendica and NodeBB interoperability while preserving the existing relay identity and public key.
  • Added reliable Redis-backed claims and recovery for interrupted work.
  • Added per-receiver retries, retained payloads, and detailed delivery diagnostics.
  • Added receiver-health tracking, Prometheus metrics, and private health/readiness endpoints.
  • Migrated to the maintained Redis-only Machinery v2 fork.
  • Published a native Debian package and multi-architecture container images for AMD64 and ARM64.

Activity-Relay Server 2.5.0 is now live at https://relay.argentwolf.org as an example server.

If you find it useful, please star it on GitHub! Thank you!

Changelog

Please help me out with connecting and testing! If you have any issues, please let me know! You can reach me at @alan, or open an issue on https://github.com/thystra/Activity-Relay

#activitypub #friendica #mastodon #fediverse #nodebb #relay #relayserver #relayservers #relaytest

Activity-Relay Server 2.5.0 RC2 pushed

Activity-Relay Server 2.5.0 RC 2 is now live at https://relay.argentwolf.org

Please help me out with connecting and testing! If you have any issues, please let me know! You can reach me at @alan, or open an issue on https://github.com/thystra/Activity-Relay

RC2 enhancements include:

  • Reliable delivery retries: Each relay fan-out target now receives one initial attempt plus five delayed retries.
  • Bounded Fibonacci backoff: Retry delays occur at approximately 8, 13, 21, 34, and 55 seconds.
  • Longer activity retention: Shared activity bodies remain in Redis for 15 minutes, covering the full retry window with additional margin.
  • Correct terminal accounting: remain_count is reduced only after successful delivery or final retry exhaustion—not after every failed attempt.
  • Protection against premature payload deletion: A temporary failure from one receiver can no longer delete the activity needed by its own retry or other pending receivers.
  • Structured delivery diagnostics: Logs now include task UUID, activity storage ID, activity/object/actor identifiers, origin domain, receiver domain, attempt number, remaining retries, and body SHA-256.
  • Delivery timing details: Each attempt records elapsed processing time and the scheduled time or delay for the next retry.
  • Improved HTTP failure evidence: Logs capture HTTP status codes, classified error types, and bounded response text from receivers, including useful errors such as 424 Failed Dependency.
  • Safer diagnostic logging: Raw activity bodies, HTTP signatures, private keys, and unbounded remote responses are not written to logs.
  • At-least-once recovery: A receiver that finishes processing after the relay times out may receive the same activity again during retry, allowing recovery from ambiguous timeout outcomes.
  • Receiver-health tracking across retries: Successful and failed attempts update per-receiver delivery statistics and consecutive-failure state.
  • Regression coverage: New tests verify retriable failure retention, successful later delivery, terminal cleanup, retry timing, metadata extraction, and bounded response handling.
  • Operational observability: RC2 supports private health, readiness, and Prometheus metrics endpoints, now enabled locally in production on 127.0.0.1:9090.
  • Preserved upgrade state: Deployment validation confirmed that the relay actor identity, private key, configuration, website settings, and all Redis logical data remained intact during the RC1-to-RC2 upgrade.

Changelog

Activity-Relay Server v2.5.0 RC1 is now live

Activity-Relay Server 2.5.0 RC 1 is now live at https://relay.argentwolf.org

Please help me out with connecting and testing! If you have any issues, please let me know! You can reach me at @alan, or open an issue on https://github.com/thystra/Activity-Relay

What’s new in Activity-Relay v2.5.0-rc1

  • Adds relay-signed actor and object fetches for Mastodon authorized-fetch and secure-mode compatibility.
  • Publishes the relay actor as an ActivityStreams Application, allowing current Friendica versions to discover and register the relay while preserving the existing actor ID, endpoints, and public key.
  • Uses a shared, exact-authority HTTP-signature implementation for both authorized fetches and outbound delivery.
  • Adds durable per-receiver delivery-health tracking through /status.json schema version 4.
  • Adds an optional private observability listener for Prometheus metrics, process health, and Redis-backed readiness checks.
  • Adds bounded Redis-backed operational metrics shared across the API and worker processes.
  • Migrates asynchronous delivery to the maintained Redis-only Machinery v2 fork.
  • Adds leased in-flight task claims and at-least-once recovery, preventing silent task loss after an abrupt worker or host failure. A duplicate delivery remains possible if the remote server accepts a request immediately before the worker terminates.
  • Preserves the existing actor key, actor address, queue data, delayed retries, configuration names, and Redis database through the tested upgrade path.
  • Includes extensive package, rollback, Redis-failure, worker-interruption, Mastodon, Friendica, NodeBB, container, race-test, and production validation.

Full RC changelog: Activity-Relay v2.5.0-rc1 changelog

Full release notes and downloads: Activity-Relay v2.5.0-rc1 release

Known limitation: NodeBB 4.14.2 may return HTTP 424 when it performs an unsigned follow-up fetch from an origin that requires signed GET requests. The relay-delivered request itself remains properly signed. (Bug Report)


If you find this project useful, please give it a star on GitHub! Any tips and/or support contributions are appreciated!

Activity-Relay server 2.4.0 released

29 July 2026

Activity-Relay server 2.4.0 is released.
Github: https://github.com/thystra/Activity-Relay

Notable changes and features:

  • Debian (.deb) and docker compose installation methods.
  • Optional Caddy example reviewed from the idea in upstream PR 60, implemented as documentation rather than a runtime dependency.
  • Standard actor outbox, followers, following, and shared-inbox metadata.
  • Friendica and standards-style server-actor follow compatibility.
  • NodeBB reciprocal follow, public-key, HTTP Host signing, and embedded Announce interoperability.
  • Public connected, receiving, and publisher status information.
  • Open signed publisher ingestion with policy enforcement.
  • Bounded queue, fan-out, remote response, and concurrency controls.
  • Multiple explicit daily-summary slots and resilient mail handling for reports to the server administrator.
  • Configurable Cache size limits in the config.yml.
  • Upgrade-safe optional website customization.
  • Native package identity preservation and inactive-by-default services.

Changelog

Future roadmap

You can see a live install at: https://relay.argentwolf.org – Please try to connect and let me know of any issues!

If you have any issues, please let me know at alan@friendica.argentwolf.org, on github, or here!

Fediverse Relay server updated

I’ve updated the relay server back end to properly support wordpress clients pushing content to the relay. If you have a server you wouldn’t mind pointing at the relay, I’d love to get some more sites on it to test it out.

The address is: https://relay.argentwolf.org

If you have any issues, please let me know at alan@friendica.argentwolf.org thanks!

If you are interested in trying the server out, you can get it here. Version 2.4.0 is in testing and will be released soon!

https://github.com/thystra/Activity-Relay