Introducing: AlgoRelay

Build your own nostr algorithm!

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

Reply to this note

Please Login to reply.

Discussion

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:npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft has got himself a challenger with all the goods you're delivering lately. Amazing work, man.

I hope you’re also as fucking bullshit as nostr:npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft

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 nostr:npub1kepyvqdmml68gzv279933c70tf70a6huz22n3dps3pxwrgg7fl6qx34w62

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.

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. 🫂

nostr:npub1q3sle0kvfsehgsuexttt3ugjd8xdklxfwwkh559wxckmzddywnws6cd26p have you messed around with vector databases? If so, what is your take? Are they a siren song?

Cool. I'm looking forward to clients supporting custom "lists" which each is just a relay. I'd like to do a topic based one that uses a relevancy metric using an LLM and pulls from thousands to hundreds of thousands of other relays via a 3+ deep social graph.

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

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

Great stuff!

nostr:note19gs6krdzkluayhctrferqgyrd5qsep04m6a5q30pvut68n09af7s894h8s

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?