The new one is pretty different, so optimal deployment strategies and hosting are still something I need to test under production load.
@redsolver.dev
Developer, working on content-addressed storage/routing networks (https://sfive.net), custom feeds for Bluesky (@skyfeed.app) and other cool open-source stuff! Matrix: @red:y4y.me Email: red@skyfeed.dev
The new one is pretty different, so optimal deployment strategies and hosting are still something I need to test under production load.
The most effective optimization is really the new architecture, because the old one was built in the early days of Bluesky and never designed for massive scale. So while tuning individual feeds and optimizing some knobs did help and reduce resource usage, they were mostly band-aids.
The most expensive part is compute, I have a lot of dedicated Hetzner servers for running the queries. Storage is also pretty expensive, but that's part of the dedicated servers (nvmes), so not really an extra cost. Bandwidth is 2 TB per month max, I'm only serving compressed JSON (a lot of it)
ok so the old infra was:
indexer(dart) -> SurrealDB -> query-engine (rust)
the indexer could not keep up with the firehose, but while re-writing it I noticed that surrealdb could not handle full bsky backfill. So now I also created a custom DB layer, and all components use the same data structures.
The old query engine was also written in Rust, but it was pretty ugly code :P so now it's nicer Rust code!
My current timeline is getting this ready in 1-2 months, alongside the migration of most existing feeds to the new architecture
To stay up-to-date you can follow me and the @skyfeed.app account
I'm curious what you think, so please feel to reply here with ideas and feedback or drop me a message :)
For now, the plan would be to launch with just one feature:
Currently, feeds are cached for up to 5 minutes, depending on server load. If you pay, all feeds you publish would update in real-time and feeds used by paid users would also update more frequently, keeping their contents fresh for everyone
So the only solution that feels fair to me is adding an optional SkyFeed Pro subscription which would support the project and add new resource-intensive features for advanced feed builders, like unlimited history or personalized feeds. I'm still open to suggestions, so please tell me what you think!
However, even the new engine doesn't change the fact that SkyFeed needs revenue.
First of all, I am committed to *never* adding ads, because they go against the spirit of algorithmic choice.
Also, the entire backend will continue to be fully open-source and all existing features will remain free.
The good news: After 4 iterations, the new fully Rust-based architecture is almost ready. The historical backfill is running, and experiments with the new query engine have been very promising. I am confident that the new engine will deliver and am excited about the amazing new feeds it will enable!
The first component I started to rewrite was the indexer, but I quickly realized the storage and query layers also needed a ground-up rebuild. This took far longer than expected and was the main reason for not improving the SkyFeed app or adding support for new features like video
It felt wrong to ask for money before delivering the level of service I expect. But being a solo developer and SkyFeed not my main job made that near-impossible.
I also realized that the current architecture struggled to keep up, let alone enable new resource-intensive features I promised long ago.
Donations mostly covered costs at the end of 2024, but expenses skyrocketed as I scaled everything to keep up with Bluesky growing quickly. While fighting the fires popping up in the infrastructure, I couldn't really focus on releasing new features, fix bugs or implement long-promised improvements
Let's get straight to the point:
Renting servers for hosting all 75k+ SkyFeed feeds for millions of users daily costs me ~1094 EUR/month
SkyFeed is 100% free, so the only income is my GitHub Sponsors (github.com/redsolver) with ~191 EUR/month
The math does not quite work out here.
Hi! SkyFeed is struggling and I need to find a solution.
If you don't know SkyFeed, it's a service I built 2 years ago, enabling anyone to build and publish feeds using a visual block-based editor.
SkyFeed is still hosting the most feeds on Bluesky, but that comes at a cost [1/X]
hmm could you try again? it loads for me, maybe it was a temporary issue
skyfeed is currently down, main database seems to be having issues - sorry about this, I'm on it and trying to fix it asap
thanks, that detail was helpful in narrowing down the cause. two servers did have outdated post data in memory. this does not affect list inputs, because they always fetch fresh posts from the database.
so should be fixed now, but I'm still monitoring if maybe the cache proxy is also causing issues
if you have a feed which does not seem to update at all over the past 2-3 days, please send me the feed and a link to a missing recent post you would expect to see on the feed. before doing that, please triple-check that your content language bluesky app settings are set correctly. thanks :)
I get pinged quite frequently about all skyfeed feeds having issues, but then I go online, check a few feeds and everything seems to be fine. however despite this being the case, there has been a concerning amount of pings the past few days, so I assume that maybe one of the servers is broken. [1/2]
that's a good point (multiple underscores blending together), but I don't think that would be a big issue because there's never more than one :: in an ipv6 address and something like ::: is not allowed and would be rejected by the web browser as invalid format.
It would be nice if IPv6 used underscores instead of colons for separating groups.
__1:5050 is so much nicer than [::1]:5050 imo
and you would be able to double-click to select a long address in most places!
Mastodon Plush being held up by a person in front of a street sign reading "Federation Street" Image Source: https://shop.joinmastodon.org/products/mastodon-plushie
Plushtodon for reference:
location here:
The #WHY2025 AT Protocol and Bluesky Meetup is TODAY at 15:00!
We will meet at this location: map.why2025.org#m=52.6925197...
I will be holding a Plushtodon, so you can use that to recognize me. If you can't find us, send me a Bluesky DM ๐ฆ See you later!
Hey, if you're at #WHY2025, I'm organizing a little AT Protocol & Bluesky Meetup ๐ฆ
It doesn't matter if you're already building something on AT Proto, are just a user interested in how everything works under the hood or simply want to talk about decentralized social media, everyone's welcome!
Made a feed for #WHY2025, see you there!
bsky.app/profile/did:...
anyone here going to #WHY2025 ?
no, it should show a default web server page hostedcon the domain
as emoji: ๐ฅบ.st