Oddbean new post about | logout
 Introducing: AlgoRelay

Build your own nostr algorithm!
https://i.nostr.build/XPRvfXEpnW3C37k3.jpg

AlgoRelay is the first nostr native relay capable of serving personalized, algorithmic feeds without the use of external or proprietary APIs or DVMs.

It prioritizes surfacing content from the people you care about, based on your personal interactions.

For new users, it solves the "who should I follow?" problem by surfacing popular content in a global feed with our best content. 

Clients can easily add personalized feeds by  displaying notes from a single relay, using the same REQ parameters we're already using - simply perform an auth handshake.

Coracle is the first client to implement it, you can see it in action here:
https://coracle.social/relays/wss%3A%2F%2Falgo.utxo.one%2F

Don't like the way my relay is surfacing content? You can easily adjust the weightings in your own relay by changing a few numbers - no coding required!

I look forward to seeing a blossoming market of algorithmic relays putting choice back in the user's hands. This is a big step forward for nostr, giving the masses what they want using open source, transparent algorithms.

This relay is released under an MIT license, feel free to use it however you see fit.

To run your own relay, get started here:
https://github.com/bitvora/algo-relay 
 This is the begging of what I was promised with Nostr... Be your own algoritm 👠 
â–² â–¼
 That's really cool! As soon as I logged in, it returned notes from my follows and interactions. I can't wait to see how this evolves over time.  
â–² â–¼
 Looks like nostr:nprofile1qqs04xzt6ldm9qhs0ctw0t58kf4z57umjzmjg6jywu0seadwtqqc75sprfmhxue69uhhq7tjv9kkjepwve5kzar2v9nzucm0d5hsz9thwden5te0wfjkccte9ejxzmt4wvhxjme0qythwumn8ghj7un9d3shjtnswf5k6ctv9ehx2ap0y8qdrm has got himself a challenger with all the goods you're delivering lately. Amazing work, man. 
 There is no second best to nostr:nprofile1qqs04xzt6ldm9qhs0ctw0t58kf4z57umjzmjg6jywu0seadwtqqc75sprfmhxue69uhhq7tjv9kkjepwve5kzar2v9nzucm0d5hsz9thwden5te0wfjkccte9ejxzmt4wvhxjme0qythwumn8ghj7un9d3shjtnswf5k6ctv9ehx2ap0y8qdrm 
â–² â–¼
 I hope you’re also as fucking bullshit as @PABLOF7z 
â–² â–¼
 I have viewed my feed in gossip (gossip lets you view a relay's global feed) and it was tailored to me.

One note seemed strangely irrelevant (not very connected to me nor reacted to much).

It appeared to me that as I went down the feed, there were fewer events per time period, and those had to be much more popular (based on reactions).  Which makes sense.

I'd love an English description of the algorithm. 
 It doesn't respect since/until filters, only limit. Works best if you just do a big limit to start.

It blends mostly personalized notes and mixes in viral posts as well.

I've done my best to write up how the algorithm works on GitHub, let me know if you think it needs some more meat.

Definitely will be improving it overtime, stay tuned! 
â–² â–¼
 Ah, well gossip is using since/until as well as limit in order to load chunks at a time with a known number of events.  It also specifies kinds (that the user has selected and that gossip knows how to display).  But it still worked pretty well.  I'll read the github notes shortly. 
â–² â–¼
 Insane turnaround time on this one 🤙🔥 
â–² â–¼
 Algos are here ..

..  and they are open sourced ..  which means genie is out of the bottle .. 

Would you rather #askNostr who to follow ? Or let a #nostr algorithm do it for you ? 

If first , tell me who to follow except of course your self :-) ... just one recommendation !  And I will .. 


nostr:nevent1qqsz5gdtpk3t07wjtu935u3syzpk6qgvsh6aaw6qghskw9arehj75lgpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsyg8zenmu7gzq8ulj5jj4kv50ph3muwz43f747vmr9ld2alrjdswgavpsgqqqqqqs2hhjt7 
â–² â–¼
 👀 
â–² â–¼
 Super cool! Nice work 🚀

Check it out @thebitcoinarchitect 
â–² â–¼
 https://m.primal.net/LaOu.png 

Not sure if you were thinking of Juan or Evita Peron at the time ;) 
 Ty sir 🙠
â–² â–¼
 Just say it's exclusively for Argentinians and that's a feature, not a bug ;) 
â–² â–¼
 Ach, no idea how to adjust it cos I'm too stupid. But first impression is that islt seems almost identical to primal 'trending' which is no use to me. But hopefully I'll work out how to adjust one day lol. Maybe it's useful for new people coming from bitcointwitter tho ;) 
 It's completely different than primal

It looks at who you interact with and prioritizes those people

It's also interoperable in all clients, not exclusive to primal  
â–² â–¼
 Weird, definitely showing me people I don't interact with lol. Just saw the coracle preview page thing you linked and it was the same-old type primal trending guff lol. Maybe I'm using it wrong..which is very likely. ¯â \â _â (â ãƒ„â )â _â /â Â¯ 
 You logged in with your own nsec? 
â–² â–¼
 Yeah normal main account. 
 Do you primarily only react/comment/zap the shitfluencers? 😅 
â–² â–¼
 No lol, in fact I've blocked some of them lol 
 Ok thanks for feedback I'll take a look 
â–² â–¼
 ouch, we need a postgress DB for this one 😟 That's too much for my poor raspberry pi.  
 Lol yeah this one needs serious compute  
â–² â–¼
 maybe with a cluster of raspberry pis? :-D 
 Just buy a real computer lol 😆 
â–² â–¼
 nah, takes too much space. I'd rather "rent" a VPS somewhere. I'ts cheaper too... 
â–² â–¼
 is all teh state of the relay recorded in the DB? Could i run several instances with a single DB backend? 
 Each relay would be pulling duplicate notes and trying to write them to the DB, it would be pretty ugly

But in theory yes you could do this, it uses mostly postgres to compute the stuff  
â–² â–¼
 but it still wouldn't solve my problem, i'd actually need the postgres DB to be in a cluster, not the relays, since the DB does all the hard work. 
â–² â–¼
 How is the user configured? Is there an event to configure preferences? Is there a NIP to define this configuration? 
 Currently only by running your own relay

But I may have something cooking up for users depending on time 
â–² â–¼
 It would be interesting to have a nip to standardize the configuration options. This way there could be more feed algorithm options without needing different integrations in the clients. 
â–² â–¼
 AlgoRelay เป็นรีเลย์à¹à¸šà¸š nostr ตัวà¹à¸£à¸à¸—ี่สามารถให้บริà¸à¸²à¸£à¸Ÿà¸µà¸”à¹à¸šà¸šà¸­à¸±à¸¥à¸à¸­à¸£à¸´à¸˜à¸¶à¸¡à¸—ี่ปรับà¹à¸•à¹ˆà¸‡à¹„ด้โดยไม่ต้องใช้ API ภายนอà¸à¸«à¸£à¸·à¸­ DVM!

nostr:nevent1qvzqqqqqqypzpckv7l8jqspl8u4y54dn9rcduwlrs4v2040nxce0m2h0cunvrj8tqqsz5gdtpk3t07wjtu935u3syzpk6qgvsh6aaw6qghskw9arehj75lgyg8n6y

#siamstr
 
 For shits n giggles I kinda wanna make wss://edgestr.lol, a relay that promotes edgy content, as in only notes containing key words and phrases that would get you banned from legacy social media.  
 There’s this guy I know … Hoffman or something … he could do it right. 🫂 
â–² â–¼
 revolutionary tech.

nostr devs are heroes.

LET'S FUCKING GO

nostr:nevent1qqsz5gdtpk3t07wjtu935u3syzpk6qgvsh6aaw6qghskw9arehj75lgpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtczyr3vea70ypqr70e2ff2mx28smca78p2c5l2lxd3jlk4wl3exc8ywkqcyqqqqqqgx7qlp3 
â–² â–¼
 nostr:nprofile1qqsqgc0uhmxycvm5gwvn944c7yfxnnxm0nyh8tt62zhrvtd3xkj8fhgprdmhxue69uhkwmr9v9ek7mnpw3hhytnyv4mz7un9d3shjqgcwaehxw309ahx7umywf5hvefwv9c8qtmjv4kxz7gpzemhxue69uhhyetvv9ujumt0wd68ytnsw43z7s3al0v have you messed around with vector databases? If so, what is your take? Are they a siren song? 
â–² â–¼
 I am happy about Nostr at the moment, but thanks for the work! 
â–² â–¼
 Well done, I think you sparked a fire with this one.  
 Ty for the zap 
â–² â–¼
 link just says "that's all" with a pumpkin 
â–² â–¼
 nostr:nevent1qqsz5gdtpk3t07wjtu935u3syzpk6qgvsh6aaw6qghskw9arehj75lgpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsyg8zenmu7gzq8ulj5jj4kv50ph3muwz43f747vmr9ld2alrjdswgavpsgqqqqqqs2hhjt7 
â–² â–¼
 Ok now we talking 
â–² â–¼
 Okay, so now, now I'm really, REALLY excited about the Ostrich. Super cool.  
â–² â–¼
 This relay seems useful, but only for people that utilize clients that take advantage of them. If your client doesn't allow you to generate feeds from a specific relay, then using this type relay won't be overly useful. Even if you removed all relays except this relay, to essentially only have a feed from this relay only, then you'd be hurting your decentralization and censorship resistance efforts. Being able to choose your own algorithm by creating a brand new feed is just another piece of the user choice puzzle and we'll hopefully see more clients adopt this path moving forward. 
nostr:nevent1qqsz5gdtpk3t07wjtu935u3syzpk6qgvsh6aaw6qghskw9arehj75lgpz9mhxue69uhkummnw3ezuamfdejj7q3qutx00neqgqln72j22kej3ux7803c2k986henvvha4thuwfkper4sxpqqqqqqz4sywtg 
â–² â–¼
 Fuck yeah 
â–² â–¼
 good job 
 Client devs pls add support for this type of relay asap 🧑â€ðŸ’»ðŸ™

Just do auth then display the notes in order the relay gives you, should be very simple!

DM me with any questions

nostr:nevent1qqsz5gdtpk3t07wjtu935u3syzpk6qgvsh6aaw6qghskw9arehj75lgpzpmhxue69uhh5cts9emkzarrdqhsyg8zenmu7gzq8ulj5jj4kv50ph3muwz43f747vmr9ld2alrjdswgavpsgqqqqqqsg4lznp 
â–² â–¼
 How does it define new users? Are lurkers who aren't new treated the same way? 
 If it came find any reactions posts or comments 
â–² â–¼
 Very nice! If i understood correctly the algo-relay serves different global feed to each npub, is this correct? How did you achieve that? What would be hardware requirments for running this relay? 
 If many people use the relay, it needs a very powerful server, 8+ cores 
â–² â–¼
 This is why we need personal servers 
â–² â–¼
 AI i a algo   t-y 
â–² â–¼
 Is this built in to Coracle or do we have to add algo.utxo.one to our relays?