diff --git a/config/config.exs b/config/config.exs
index b884b3514..d8f9eb22e 100644
--- a/config/config.exs
+++ b/config/config.exs
@@ -192,9 +192,6 @@ config :pleroma, :instance,
   federating: true,
   federation_incoming_replies_max_depth: 100,
   federation_reachability_timeout_days: 7,
-  federation_publisher_modules: [
-    Pleroma.Web.ActivityPub.Publisher
-  ],
   allow_relay: true,
   public: true,
   quarantined_instances: [],
diff --git a/lib/pleroma/web/federator.ex b/lib/pleroma/web/federator.ex
index 8621d984c..6deebb963 100644
--- a/lib/pleroma/web/federator.ex
+++ b/lib/pleroma/web/federator.ex
@@ -6,9 +6,9 @@ defmodule Pleroma.Web.Federator do
   alias Pleroma.Activity
   alias Pleroma.Object.Containment
   alias Pleroma.User
+  alias Pleroma.Web.ActivityPub.Publisher
   alias Pleroma.Web.ActivityPub.Transmogrifier
   alias Pleroma.Web.ActivityPub.Utils
-  alias Pleroma.Web.Federator.Publisher
   alias Pleroma.Workers.PublisherWorker
   alias Pleroma.Workers.ReceiverWorker
 
diff --git a/lib/pleroma/web/federator/publisher.ex b/lib/pleroma/web/federator/publisher.ex
index 8c6547208..03509bbaf 100644
--- a/lib/pleroma/web/federator/publisher.ex
+++ b/lib/pleroma/web/federator/publisher.ex
@@ -3,8 +3,6 @@
 # SPDX-License-Identifier: AGPL-3.0-only
 
 defmodule Pleroma.Web.Federator.Publisher do
-  alias Pleroma.Activity
-  alias Pleroma.Config
   alias Pleroma.User
   alias Pleroma.Workers.PublisherWorker
 
@@ -38,50 +36,6 @@ defmodule Pleroma.Web.Federator.Publisher do
     )
   end
 
-  @doc """
-  Relays an activity to all specified peers.
-  """
-  @callback publish(User.t(), Activity.t()) :: :ok | {:error, any()}
-
-  @spec publish(User.t(), Activity.t()) :: :ok
-  def publish(%User{} = user, %Activity{} = activity) do
-    Config.get([:instance, :federation_publisher_modules])
-    |> Enum.each(fn module ->
-      if module.is_representable?(activity) do
-        Logger.debug("Publishing #{activity.data["id"]} using #{inspect(module)}")
-        module.publish(user, activity)
-      end
-    end)
-
-    :ok
-  end
-
-  @doc """
-  Gathers links used by an outgoing federation module for WebFinger output.
-  """
-  @callback gather_webfinger_links(User.t()) :: list()
-
-  @spec gather_webfinger_links(User.t()) :: list()
-  def gather_webfinger_links(%User{} = user) do
-    Config.get([:instance, :federation_publisher_modules])
-    |> Enum.reduce([], fn module, links ->
-      links ++ module.gather_webfinger_links(user)
-    end)
-  end
-
-  @doc """
-  Gathers nodeinfo protocol names supported by the federation module.
-  """
-  @callback gather_nodeinfo_protocol_names() :: list()
-
-  @spec gather_nodeinfo_protocol_names() :: list()
-  def gather_nodeinfo_protocol_names do
-    Config.get([:instance, :federation_publisher_modules])
-    |> Enum.reduce([], fn module, links ->
-      links ++ module.gather_nodeinfo_protocol_names()
-    end)
-  end
-
   @doc """
   Gathers a set of remote users given an IR envelope.
   """
diff --git a/lib/pleroma/web/nodeinfo/nodeinfo.ex b/lib/pleroma/web/nodeinfo/nodeinfo.ex
index 9e27ac26c..4d5a9a57f 100644
--- a/lib/pleroma/web/nodeinfo/nodeinfo.ex
+++ b/lib/pleroma/web/nodeinfo/nodeinfo.ex
@@ -6,7 +6,7 @@ defmodule Pleroma.Web.Nodeinfo.Nodeinfo do
   alias Pleroma.Config
   alias Pleroma.Stats
   alias Pleroma.User
-  alias Pleroma.Web.Federator.Publisher
+  alias Pleroma.Web.ActivityPub.Publisher
   alias Pleroma.Web.MastodonAPI.InstanceView
 
   # returns a nodeinfo 2.0 map, since 2.1 just adds a repository field
diff --git a/lib/pleroma/web/web_finger.ex b/lib/pleroma/web/web_finger.ex
index 0684a770c..26fb8af84 100644
--- a/lib/pleroma/web/web_finger.ex
+++ b/lib/pleroma/web/web_finger.ex
@@ -5,8 +5,8 @@
 defmodule Pleroma.Web.WebFinger do
   alias Pleroma.HTTP
   alias Pleroma.User
+  alias Pleroma.Web.ActivityPub.Publisher
   alias Pleroma.Web.Endpoint
-  alias Pleroma.Web.Federator.Publisher
   alias Pleroma.Web.XML
   alias Pleroma.XmlBuilder
   require Jason