Index: src/routes/posts.js
===================================================================
--- src/routes/posts.js	(revision 78b6d8a72b391c1960a8488dc735fb03495bc209)
+++ src/routes/posts.js	(revision b6cdc3d275d5ec20895f6b9ecb10bb5a6a5408ff)
@@ -501,4 +501,5 @@
     followed,
     liked: !!req.query.liked,
+    boosted: !!req.query.boosted,
     siteTitle: site ? site.title : '',
   });
@@ -515,4 +516,22 @@
   }
   res.redirect('/authorize_interaction?liked=1&uri=' + encodeURIComponent(uri));
+});
+
+// 🔁 Boost a remote post from your own site. Also flags it for the Cirkel
+// (markBoosted is a no-op if the post isn't in your timeline).
+router.post('/authorize_interaction/boost', requireSiteManager, (req, res) => {
+  const site = res.locals.site;
+  const uri = (req.body.uri || '').toString();
+  if (site && uri) {
+    ActivityPubService.resolveRemoteNote(uri)
+      .then((note) => {
+        if (!note) return;
+        const id = note.object_uri || uri;
+        return Promise.resolve(ActivityPubService.sendInteraction(site, 'boost', id, note.actor_uri))
+          .then(() => ActivityPubService.markBoosted(site.slug, id));
+      })
+      .catch((e) => console.warn('[AP] remote boost failed:', e.message));
+  }
+  res.redirect('/authorize_interaction?boosted=1&uri=' + encodeURIComponent(uri));
 });
 
