Oddbean new post about | logout
 We need more enterprise relay devs. The situation is dire. Relay operators cannot do this alone.

If you are a server-side dev, start a new or join a current relay codebase and apply to OpenSats. 
 I'd like to find someone locally who is technical enough to manage a relay or 2 here (one specifically for local community) and fund them to do so. Is there a good guide somewhere on what hardware to consider and how much storage etc? Am assuming easiest is start 9 or umbrel but no idea how much actual storage would be required 
 It will depend a lot of what types of content the relay will have to support. There is on recipe. They will need to learn while doing it. 
 Thats what i was assuming. Bit tougher sometimes in costa rica for cost and hardware availability. Think 4tb a reasonable starting point? 
 Good enough. Memory could be more important depending on the implementation you want to run.  
 Ok. Thats a bitch here. Am getting a fruend to bring ram fir me when he comes on holiday next week. Max available in costa rica is 32gb and if you order to be shipped in, ends up doubling cost! Sounds like rule os 7 Ps needs to be applied here 
 I would run a relay but I don't want to become a target running it on one of my servers on clearnet, neither use a vps. A for relay makes more sense, but still limited on client mobile side, too much battery... Would there be a way to rum on clearnet with some sort of server side bridge so clients don't know to which relay there're connected to? Something like what simplex did on clients but on server side 
 I see many incentives not to run a relay rn 
 https://relay.tools lets you run them with filters on them, i have one at https://mleku.nostr1.com that only allows posts from people i want to read or who i interact with a lot, it makes my experience generally smoother too because of that 
 Nice, but I would like to self-host one. 
 relay.tools on github has all the stuff he uses to deploy it including the sproket for strfry 
 I agree that having a relay on the clearnet is not a good idea. Being responsible for what others post is a nightmare, even with filters and censorship options.

No one needs to be anonymous enough (there are exceptions) to use the Tor network as a default for relaying, even though it is a good option.

So this is a barrier we will have to overcome: the clearnet brings unpleasant responsibilities, and Tor brings slowness. 
 Should I apply for opensats? I have a full time job. How much should a request a grant for? The new grain release has a lot of whitelist functionality and a decent method of importing events from other relays. I mentioned you in the release notes for helping me see my kind5 handling wasn't quite right. 😊 
 You should apply. I would ask for a full time salary. They can always offer you less and then you can decide to take or not. 
 except for me, of course, because you all hate me and would never approve that

i was paid to build replicatr at first but now it's entirely a hobby project because the damn thing has buggy database concurrency and i wanted to just fully fix the entire codec completely improved over go-nostr

anyhow, i am paid enough to spend my spare time on this, but you have known i'm a server dev since at least march or so this year 
 You should apply as well. The hate is a self inflicted wound that can be fixed. You keep *unecessarily* thrashing everyone you meet. Because of that you not only don't get what you want, but you also alienate people to not use your creations. Focus all that anger on building and you will do really well. 
 Yeah let start coding without having a good understanding of the bigger picture. I mean, distributed systems can't be that hard now can they!!? 
 None of us would be here if we had waited for the "good understanding of the bigger picture"...  
 #nostrmeetNgreet   finefoods/finefriends       real ngu        lfg! 
 Might be too late for that.  There has been an exodus of relay operators.  The biggest cost is dev time, and we wont get many of those developers back.  OpenSats can still do good, but the benefit would have been greater if they had acted earlier. 
 It's not too late. Dev rotation is not good but it's also not the end of the world. Fresh ideas are helpful and virtually all devs in Nostr right now have a better understanding of the needs than what we had back in 2022/2023. 
 It really is.  The relay dev landscape is dire.  We're going the way of email with a few big providers.  But that's OK.  Primal is great, damus is great, and so on.  I appreciate your attempts to turn the tanker, as I have tired to do, vut the relay part of the project is ded, w/o practical path to revival.  I wish you very good luck and thanks for trying, I very much hope Im wrong and you're right! 
 We need to better optimize the relay implementations so they're as lightweight as possible. Some requesting relay operators to use a minimum of 4 vCPU and 8GB RAM VPS because Postgres is a chonker, might restrict someone wanting to contribute a free relay if the costs are too high. 
 Yes, but still doesnt change the fact that most of the relay operators that were willing to put in the effort have now left, and are not coming back.  Retention is hard work, and it was needed 1-2 years ago.  Something is always better than nothing, but the timing is also important. 
 How does a tiny relay hosted on a server no one knows about helps nostr? Is this outbox model here with us in this room? 
 Depending upon how you've set it up, my client could still send the tiny relay a REQ to retrieve notes, adding to the redundancy of the network. 
 Ok, lets imagine I’ve setup such a relay. How do you get its address? Why would you add it to your client? If no one sends EVENT, your REQ will always be empty, does it increase redundancy in this way? 
 I would LOVE to be able to contribute and run a relay...but have no idea how....

Getting the knowledge out is the important next step...can we make it "simple"? 
 Grain is pretty simple. Just download the latest release unzip the app folder and run the executable. The program does the rest. From there you can change config.yml to suit your preferences. Whitelist domains, npubs, set rate limits by kind or by category.  
 Is there a link? (Would peek at it...) 
 https://github.com/0ceanslim/grain

You'll also need mongo DB. Just read the readme.  
 Wait i don't quite understand it. Do we need more relay codebases? Are they outdated? Or do we need more relays? Or faster/bigger relays?

I used to run a relay on my but once i noticed there was stuff on i did not want on it and that could actually get me in trouble with the law as well i simply destroyed it.

I am a backend dev but since i am still doing a normie full-time job as well to provide for my family so my time is pretty limited. 
 We need maintenance on the current code bases (strfry is abandoned), we need new codebases (moonliths can only go so far) and we need more relay management APIs so that operators can monitor, see the risk they are taking and take action. 
 I can have a look at strfry and its issuetracker since python is my native tongue. Maybe there are some small thing i can fix. 
 UI Python or backend python? 

Maybe writing a desktop client that helps monitor the relay for content the operator doesn't want to have is your best bet. I wish we had a simple observe all reports and when new ones show up, highlight them with two keyboard-controlled actions: keep or delete post. Operators can just spend a few seconds on each to clear their database :)  
 Python is also my language of experience. I'd like to help out. 
Since I have not so much open source project experience,  I probably need help know where to get started 
 Oh i thought it was python, i don't think i can or want to touch cpp :/ 
 I like what nostr:nprofile1qqsth7fr42fyvpjl3rzqclvm7cwves8l8l8lqedgevhlfnamvgyg78spz3mhxue69uhhyetvv9ujuerpd46hxtnfduq3qamnwvaz7tmwdaehgu3wwa5kuegpz4mhxue69uhk2er9dchxummnw3ezumrpdejqj9swg4 is working on, regarding this. Exploring financial models for the relay network. 
 What if instead it was absolutely trivial for anyone to run a relay with zero setup or maintenance and we obviated the need for "enterprise" with "massive proliferation of personal/communities"? 
 If I knew what any of that meant I would ve so down. 
 I submit that you already know exactly what it means: you acquire a single executable/program that has zero dependencies. you click on it. you now have a relay running forever and it never breaks. 
 Love that 
 There are several docker images out there which lowers the barrier somewhat.

We could also create a dedicated raspberry pi distro. 

We could also create scripts to set up VMs within cloud providers.

There are a lot of technically savvy people that we can lean on for this. 
 The technology my company is pioneering is designed to make this kind of implementation very feasible (no docker, no bash glue, just a single binary). Building a Nostr relay is at the top of my priority list once we finish some big runtime changes. 

https://github.com/operating-function/pallas 
 This is awesome! I’ll need to spend more time digging in later.

So you persist funding state, can send state over the wire to be continued elsewhere, and can run processes in parallel. So this can be a distributed runtime?

Decentralized HPC could work well with this design… 
 Function* state 
 Yes! Well, more or less, but mostly yes! 
 Thinking more in this: since functions treat memory and storage interchangeably and can be restarted at arbitrary points then does state have timestamps as a first class citizen? Meaning: if my function is sensitive to data freshness then can I easily discern fresh from stale? 
 From a persisted function’s perspective, there are two sources of data: its own and that which gets submitted from the outside. 

the function is entirely responsible for the shape of its own data. it can add timestamps to it if it wants but they’re not there by default since there is no default.

all of the data coming in from the outside is the result of a “system call” which the persisted function had previously made, but beyond being associated with that system call, there is no metadata associated with it. one such system call you can make is to ask for the current time. 

we try to do as little as possible in the runtime. anything which can be offered using software inside the system, should be. what you’re describing could be a library. 

though i suspect that i don’t exactly get what you’re saying with fresh vs stale. my first thought is that if you’re concerned with this, you should ask your data sources to tag their data with time or sequence numbers, or do so yourself at insertion. but the data that we insert might not come from the outside, we could for example discard the input and update our state by simply incrementing it by one, or something. should the new state have the same timestamp as the input, or as the previous state? 
 Doing as little as possible in the runtime makes a lot of sense. Less overhead, less to maintain, etc.

As for the freshness, I was originally thinking perhaps latency sensitive function calls might pose a problem if the process crashes and recovers seconds later and responds with data that’s no longer relevant. Given these are pure functions it makes total sense to just pass along the timestamp (or increment a counter) and these considerations are going to be app dependent anyway.

I’m really excited about this project and plan to experiment with it in the near future. The docs are well written too. Thank you for the work and the thoughtful response! 
 Makes sense!
Thanks for the kind words; we've done a big push on documentation lately so it's nice to see it paying off :)

What's your technical background? Functional programming? operating systems? blockchains? kernel work? all / none of the above? 
Feel free to message me on nostr or at vinney@vaporware.network if you ever have technical questions or want to bounce ideas. we also have a Telegram linked on our site and github. 
 My degree is in applied math so I’ve had to lazy load a CS degree over the years. I’ve been a backend engineer my whole career though. At times doing machine learning but these days it’s mostly “medium data” (2-3 PB) pipelines and storage solutions. No kernel work although I’d like to get my hands dirty with eBPF and the like.

I’ll definitely be reaching out as I’m playing with Pallas! My dream is to have something like this as the foundation for a decentralized AI model where, for example, anyone could download a binary and contribute to training and/or running a very large LLM running on Nostr. Perhaps a combination of OpenDiLoCo [1] and Pallas could work. The idea being that millions of people collaborating to train and run frontier models is likely a better world than one where only a couple companies can afford the compute.

1. https://github.com/PrimeIntellect-ai/OpenDiLoCo 
 Sounds like we're extraordinarily aligned :D 
 Do you happen to know if there's a conformance suite somewhere? I am pondering a relay implementation and an easy, automated way to ensure I am hitting the mark as far as correctness of protocol implementation while driving at performance would be a big help. 

If there's no such thing, perhaps that's another way some motivated dev might contribute? 
 No, but I think that is also an area that must be developed and could easily get funded: a testing suite that runs in production, testing all relays once a day for compliance to the basic features of the protocol (querying, posting, etc).

The service can even use a specific key to allow paid relays to enable full access to that key for testing purposes. 
 @Unhosted Marcellus Bring on that relay implementation with PHP 🥸 
 What are the top relay production ready that would need help? Is Nex a thing? I know ruby and a bit of elixir.. not sure there are anything written in those languages I could help with… 
 Unlikely to be actively developed but you may be interested https://github.com/viktorvsk/saltivka 
 What does opensats do? Financing relays? 
 Supporting open source projects 
 Eu adoraria fazer isso😸
Infelizmente sou uma adolescente sem grana😟
nostr:nevent1qqs8fu8hqpdtu6xswe6r79xz7vvp6g550e9knqe2ra2glcakl398kwspz9mhxue69uhkummnw3ezuamfdejj7q3qgcxzte5zlkncx26j68ez60fzkvtkm9e0vrwdcvsjakxf9mu9qewqxpqqqqqqzfw64yu 
 I’ve started working on a relay long time ago and didn’t see anyone willing to work on relays operators incentives. 

There was completely no sense to run a relay except for altruism. And everyone was saying its not a problem because nostr has already won because its a protocol and if at some point there is not enough relays you can just spin your own up.

Did anything change recently? 
 Make a paid one.  
 Why would one put time into developing a paid relay if not only no one is going to pay for it but even theoretical incentives to operate a relay do not exist?

Thats what I am (was) talking about - first we, as a community, have to think about the incentives and try to solve them before thinking about enterprise relays, or super mega efficient 5MB relays

But almost no one in the community does not see the lack of incentives as a problem. Judging by your answer, you too 
 My man, I started this whole discussion. I see the bad incentives from free relays as a massive problem. But there are a few relays making money now. So, somebody else found the answer to the why that you are looking for and is making it work. If you need the community to figure out how to make your company work, your company is worthless.

That being said, I have been helping several relays getting paid with specs for one-click payments and renewals on demand. So, there are people trying to help if you are interested. 
 I’m not sure why are you referring to me as I’m company even though I’ve mentioned that I was involved in development. I never had any plans to earn money by operating a relay. I was trying to create a relay that others would operate and earn money on it (because this is the only sustainable way to operate a real relay long term IMO). But I’ve found zero demand for that.

So I was right that you don’t think the lack of incentives for operators is a real problem and you are also sure that free market will decide, so nothing changed in a year looks like, sigh

I really hope to be wrong and to see some day that someone decided to create an enterprise grade relay without thinking about any incentives for operators and it actually played well and they’ve got more than they could dream about :)

But right now I can only see declining number of relays and all of the “paid” relays posting post mortems and deciding to shutdown unfortunately 
 Virtually everyone I know is demanding an enterprise-grade relay software to run because they already know how to make money with it. I don't think that is a problem. They just don't have any option to use at the moment. So, maybe things have changed since you last talked to potential clients of your software. 
 I would really appreciate those people to write at least short and brief articles on how they are going to make money with it, I don’t think this is such a big secret in an open source ecosystem, and it would definitely help spark interest in developers 
 I agree, but I don't think they will. Yeah, the ecosystem is open source, but companies are here to compete, not to teach their way of winning to others. It's a big chicken and egg problem. 
 I wish those people all the best but tbh I don’t believe they either exist or have some real vision

Even if they are real and have such a strong vision they can only keep it in secret… they can’t find a $10k investment/credit to hire a dev? Sounds unreal, sorry, would love to be wrong here :) 
 Some of them are already building their own relay systems. But that will be private code most likely. My original post was to see if anyone wants to build it in the open with funds from Opensats (which can be much more than 10k). 
 What do the relay developers you know consider to be missing from existing implementations to make the enterprise grade? If the only thing missing is a proverbial "throat to choke" when something breaks, I might have an idea for a business model 😅 
 I could create enterprise relay software easily in python or spring boot. But I already failed to create notable income from my lightning dev. There's not enough money in these volunteer parties to compete with real dev income. 
 Yo.

A Nostr marketplace indexer [nip-15] relay will optionally index marketplaces, along with stalls and products (see: diagon alley model). Commissions paid upwards.

Nostr telemedicine app (on enterprise relay). Document management (bloods, diagnostic imagery) is the main challenge. Subscription model.

Need devs. Can pay in corn. 
 Hey, thanks for that! But I’m not interested right now. Did you try asking here https://t.me/nostr_protocol ? There may be some nostr devs who might be interested 
 Haven't hit the telegram group yet - thanks for the link. Already talking to one dev team, but going to need more... particularly app devs.

I have no doubt that it'll be possible to create value / incentives. I think about this problem a lot. Some larger players will have a better chance of trailblazing quickly.

If seems logical to me that for-profit organisations (probably startups) will fund relay devs out of imperative, as people start to view and use nostr for more valuable use cases.

 
 There are lots of unsolved problems but there is thr biggest fundamental issue I personally can’t find any solution to and the community simply ignores it. Consider pre requisits

1. You consider nostr to become a social network in modern definition of the term i.e allowing hundreds of millions of ppl around the globe to communicate and discover

2. You do not expect every 3rd nostr user to selfhost their relay on a $5/mo and this to somehow magically allow previous thesis

3. You do not expect 100% of the users to pay $10/mo for the less features any existing “free” social network provides

With this in mind, the fundamental problem is the following:

The only way to provide customers with okish services requires you to consolidate client and server and at this point you become web2.0 company with incentives to lock your users inside of your ecosystem.

If you believe in “free market” you have to understand web2.0 companies tried to break this circle for 30 years without luck. So the problem nostr faces right now is much challenging than implementing enterprise relay or even figuring out this hopium outbox model. But its easier to ignore hard challenges 
 I think we're quickly going to move toward a mesh of FOSS mobile devices that relay and use I2P / Reticulum or some such. I think marketplaces is the killer Nostr app; not twitteresque clique circlejerk. 
 In my definition you have a different assumption on the first item - I don’t believe in the foreseeable future there will be a mesh of foss mobile devices that will be used as a social network in todays terms i.e hundreds of millions of users. I could believe this could be true for tens of thousands though. In this case nostr will be completely different product compared to how I see it now and how others see it now.

If you believe this network to onboard hundreds of millions of users, I would be cery gld to appear wrong 
 If the raison d'etre of such an organisation (DAO or otherwise) is Freedom, then it'll just manifest in whatever way is conducive to more freedom. Hopefully we're going to get a big dose of Libertarianism from the US in the coming months, so it'll be a good time to experiment with different value propositions.  
 I’d love to collaborate with someone in the creation of a service that keeps track of your web of trust, i.e. it monitors follows, mutes, zaps, reactions, etc and processes them in real time into influence scores as calculated using the grapevine protocol. These scores will be stored using events which will probably be too large for most standard relays to want to store. But clients will want to access these scores, either by API or by accessing the relevant events, and use them to stratify content. In theory everyone could run a personal “grapevine relay” that stores these large files, but in practice most users won’t do that. But what they will do is pay for a service that runs one of these specialized relays for them.

I talk about the grapevine in a podcast with hodlbod — I’ll post the link to the podcast below. Or check out brainstorm.ninja, which will calculate these scores (your grapevine) for you. What I haven’t done yet is build the relay to store the scores as some kind of specialized event.

Anyone who knows how to build relays and would like to collaborate on a project like this, hit me up. 
 Link to the podcast where @hodlbod interviews me about the grapevine. 

https://fountain.fm/episode/aD6Jp6wGxOOitdqeaBii 
 What you describe is very interesting and I personally think this is a move into right direction, because still a lot of ppl here think “dumb servers, smart clients, outbox, alltoclient etc”

However, you describe it as API or some set of events - and at least at first sight I don’t see why this software should be a relay. At most it may have to know how to connect to relays to get data from them 
 The main reason for a specialized relay is that the files that store influence scores may end up being pretty big, maybe big enough that most relays will reject them. Perhaps there would be ways to keep the files smaller but I’d rather have the option of larger files without worrying that I’m going to end up pissing off relay operators everywhere. Right now at brainstorm.ninja, I have about 20,000 npubs with nonzero influence scores. That number will grow as the number of nostr users increases. My plan right now is to store them as an event, maybe a modified NIP-51, which is accessed by clients. An API would be another option in case the file size were to get too unwieldy.

So I’m not sure yet whether it would make more sense for the calculation of the influence scores to be kept separate from the relay or to merge them. I’m leaning towards keeping them separate, if it’s going to be a relay managed by an enterprise service that charges a fee. But if it’s going to be a personal relay, and the scores will help the relay know which content is worth keeping and which content should be tossed out, perhaps it would make sense for score calculation and the relay to be merged together — not sure yet if that makes sense or not. 
 Also, @hodlbod has had the idea of a relay+DVM where the web of trust places some restrictions on what data I may or may not be willing to share (with or without a fee) with which npubs. Whether to keep DVM, relay, and grapevine calculations all separate or whether there is a compelling reason to combine them together, I’m not sure. 
 i am very interested in these wot scores. i attempted to calculate mine but something went wrong on brainstorm.ninja it said i had 40k wot but couldnt show it or etc, i have a follow list of approx 1200..  i will try and run it locally maybe and see whats happening.. 
 Hmm. The site tends to run slow while it’s downloading follows data. If you give it time to do that, then turn off downloads and calculate the WoT scores afterwards, that might help. There are definitely some optimizations I need to do. 
 Sounds a bit like a social credit system. Ahaha  
 Usually, the phrase “social credit system” implies centralization. Think CCP.

But a decentralized reputation system != a social credit system, in the same sense that bitcoin != central banking. 
 I'm not sure about that. 
 > There was completely no sense to run a relay except for altruism.

Which has always been a *massive* motivator, often sufficient on its own, in the field of tech, especially software.
Many platforms, organizations and projects are run for this purpose alone.

I do not understand why Nostr specifically needs to have economic incentives, or really any incentive other than furthering the fundamental human right to freedom of speech.

Obviously you need economic incentives for "enterprise" relays, but I disagree with OP anyways.
Enterprises haven't been what has promoted freedom in anything related to software, and I don't think they will be. 
 anyone should have their own individual light relay (in app?) and above all that these relays are interconnected (each one goes to get the information from the other API or Gossip style) so access to Nostr is from an app and everyone is a relay, the incentive is to want to participate and make V4V as income with its publications. 
 Whats the difference between in-app relay and p2p? 
 currently in the apps there is only the client, the idea would be to have the server directly in it 
 Tem umas coisas que eu penso sobre deixar o meu relay público e "profissional", ter domínio próprio, servidor e etc. Mas uma coisa que eu queria mesmo era manter a localidade dele aqui no norte, mesmo que ninguém ligue para a localidade eu acho relevante não concentrar muitos relays em infras de big techs da vida.

nostr:nevent1qqs8fu8hqpdtu6xswe6r79xz7vvp6g550e9knqe2ra2glcakl398kwspzpmhxue69uhkummnw3ezuamfdejsygzxpsj7dqha57pjk5k37gkn6g4nzakewtmqmnwryyhd3jfwlpgxtspsgqqqqqqswuhytf 
 Did not realize how bad the situation was. I should probly put the frontend fluff aside soon and get my hands back into C++ strfry to have a look.  

👀 cc: @cloud fodder 
 i dont know if strfry needs dev, i mean sure there is some stuff but none of that matters if no one connects.

 i think clients need help making outbox/inbox work.. it sounds very hard, it has been being worked on for over a year now..

mostly i just wanna see peoples notes and know the network is ready should there be an influx of users, in other words, scale.  if it all depends on a few big hardcoded relays its not ready. 
 Understand where you are comijg from. I think for me at least i need to try to understand how strfry works at the core to have a better view
Of where i can be helpful to the network 
 it would most certainly be helpful, and fun, to dive into it.  its a really cool piece of tech! 
 Hey nostr:nprofile1qqsdu74x8vw8aqylv6n8hhxjh4xf22sfe4fwuq0d0ke435ym4ktlssqpz4mhxue69uhhyetvv9ujumt0wd68ytnsw43qzxthwden5te0wfjkccte9eeks6t5vehhycm99ehkuegprpmhxue69uhkummnw3ezucm0d9hxvatwvshxzursdn707c, maybe this is something for you? Also you could include ir in the proton subscription. 
 This is a big deal for some of us members of @GitCitadel. Server and library developer myself. 

https://github.com/vnuge/noscrypt 
 What are the limitations of current nostr relays? Should nostr scale by more smaller relays and/or a smaller amount of larger more technical relays?  
 Millions of small relays is better than a few large ones. But large ones should also exist. 
 Hey, what do I need to run to start relaytools?
I followed the guide but when it says *You should now have a working relaytools* I do not.
All the other steps worked up until here.
Following: https://github.com/relaytools/docs/blob/master/relaytools-setup.md#lets-now-set-up-relaytools 
 Ok I rtfm a bit more and have got further - still going.
To be fun I'm trying to get this running on archlinux (my only server I have at home) and am saving the commands to push to the repo once I have it running. 
 Bit of an old thread now but my journey took me into installing proxmox (incredibly fun hypervisor) and various images and relay implementations before making one that works. Behold another relay operating at tom.zapto.org/ 
 Let me tell you nerds sth: Nostr is not working because shit's not easy enough. You guys talk about new features every day and there is no way for us noobs to participate. Still haven't figured out where to drop my fucking nwc connection string in amethyst. Give me a god damn step by step instruction on relay management. I'd be happy to pay for the relays if I knew how!