Index: src/routes/posts.js
===================================================================
--- src/routes/posts.js	(revision 80c36a11780668405aae6004e333b68963a6b9db)
+++ src/routes/posts.js	(revision aa45208c239be20a3667852f4cc17c43e78c4394)
@@ -537,5 +537,7 @@
         const id = note.object_uri || uri;
         return Promise.resolve(ActivityPubService.sendInteraction(site, on ? 'boost' : 'unboost', id, note.actor_uri))
-          .then(() => on ? ActivityPubService.markBoosted(site.slug, id) : ActivityPubService.unmarkBoosted(site.slug, id));
+          // Boost → store the post in the timeline (even if you don't follow the author) so it
+          // surfaces in the Cirkel; unboost → just clear the flag.
+          .then(() => on ? ActivityPubService.upsertBoostedNote(site.slug, note) : ActivityPubService.unmarkBoosted(site.slug, id));
       })
       .catch((e) => console.warn('[AP] remote boost failed:', e.message));
