[{"data":1,"prerenderedAt":698},["ShallowReactive",2],{"project-46454693":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":46,"post_text":49,"what":50,"said":96,"maker_in_thread":240,"shape":251,"grid":256,"attempts":660,"same_week":661,"maker_shows":34,"maker_hidden":690,"reader_version":691,"card":692},"46454693","OpenWorkers","Self-hosted Cloudflare workers in Rust","title","Show HN: OpenWorkers – Self-hosted Cloudflare workers in Rust","https:\u002F\u002Fopenworkers.com\u002Fintroducing-openworkers","openworkers.com","max_lt",1767280146,2026,500,158,50,4366,2,"legend","infrastructure","self-hosted serverless runtime","other",[24,25,26,27,28],"self-hosted workers","cloudflare workers alternative","v8 isolates","rusty_v8","edge functions","curious",0.045,{"positive":32,"neutral":33,"mixed":34,"critical":35},15,32,1,12,60,{"idea":38,"privacy":40,"docs":41,"execution":44,"pricing":45},{"positive":39,"critical":39},7,{"positive":34,"critical":34},{"positive":42,"critical":43},0,3,{"positive":34,"critical":34},{"positive":42,"critical":42},[18,34,42,42,34,42,34,43,34,42,43,34,43,43,47,42,42,42,42,43,42,42,42,47,34,47,47,42,47,47,43,34,47,43,42,48,42,43,43,34],5,4,"I've been working on this for some time now, starting with vm2, then deno-core for 2 years, and recently rewrote it on rusty_v8 with Claude's help.\n\nOpenWorkers lets you run untrusted JS in V8 isolates on your own infrastructure. Same DX as Cloudflare Workers, no vendor lock-in.\n\nWhat works today: fetch, KV, Postgres bindings, S3\u002FR2, cron scheduling, crypto.subtle.\n\nSelf-hosting is a single docker-compose file + Postgres.\n\nWould love feedback on the architecture and what feature you'd want next.",{"problem":51,"audience":57,"pricing":67,"motivation":71,"time_to_build":76,"stack":77,"openness":93,"stage":94,"team_size":95},{"value":52,"source":53,"evidence":54},"Running Cloudflare Workers-style code on your own infrastructure without vendor lock-in","maker",[55],{"id":56},"post",{"value":58,"source":59,"evidence":60},"Developers who want Workers DX on their own infra","inferred",[61,64],{"id":62,"by":11,"text":63},"46459829","Thanks for the clarification on CF's V8 patching strategy, that 24h turnaround is impressive and exactly why I point people to Cloudflare when they need production-grade…",{"id":65,"by":11,"text":66},"46456398","Thanks! Main differences: 1. Complete stack: workerd is just the runtime. OpenWorkers includes the full platform – dashboard, API, scheduler, logs, and self-hostable bindings…",{"value":68,"source":53,"evidence":69},"Free tier on managed dashboard; self-hosting available",[70],{"id":65,"by":11,"text":66},{"value":72,"source":53,"evidence":73},"Wanted Workers DX without vendor dependency, after building on vm2 and deno-core",[74,75],{"id":56},{"id":62,"by":11,"text":63},null,[78,82,85,89],{"value":79,"source":53,"evidence":80},"Rust",[81],{"id":65,"by":11,"text":66},{"value":27,"source":53,"evidence":83},[84],{"id":56},{"value":86,"source":53,"evidence":87},"Postgres",[88],{"id":56},{"value":90,"source":53,"evidence":91},"Docker Compose",[92],{"id":56},"open_source","beta","unknown",{"praise":97,"objections":117,"requests":147,"questions":176,"alternatives":205},[98,106],{"value":99,"source":100,"evidence":101},"Architecture is technically excellent and a good product idea","commenter",[102],{"id":103,"by":104,"text":105},"46458326","keepamovin","Technically, and architecturally this is excellent. It’s also an excellent product idea. And I’m particularly a fan of the big-ass-vendor-inversion-model where instead of the big…",{"value":107,"source":100,"evidence":108},"Good escape hatch from Cloudflare lock-in",[109,113],{"id":110,"by":111,"text":112},"46456788","victorbjorklund","Cool. I always liked CF workers but haven’t shipped anything serious with it due to not wanting vendor lock-in. This is perfect for knowing you always got a escape hatch.",{"id":114,"by":115,"text":116},"46456550","orliesaurus","Good to see this! Cloudflare's cool, but those locked-in things (KV, D1, etc.) always made it hard to switch. Offering open-source alternatives is always good, but maintainign…",[118,129,136],{"value":119,"source":100,"evidence":120},"Self-hosting undercuts the edge computing benefit of many points of presence",[121,125],{"id":122,"by":123,"text":124},"46456481","bob1029","> It brings the power of edge computing to your own infrastructure. I like the idea of self-hosting, but it seems fairly strongly opposed to the concept of edge computing. The…",{"id":126,"by":127,"text":128},"46461733","brainless","I am always interested in seeing alternatives in the edge compute space but self hosting does not make sense to me. The benefit of edge is the availability close to customers.…",{"value":130,"source":100,"evidence":131},"Sandbox security guarantees are unproven for untrusted code",[132],{"id":133,"by":134,"text":135},"46455222","simonw","The problem with sandboxing solutions is that they have to provide very solid guarantees that code can't escape the sandbox, which is really difficult to do. Any time I'm…",{"value":137,"source":100,"evidence":138},"Unclear why it beats running Node or Deno in a container",[139,143],{"id":140,"by":141,"text":142},"46456898","theknarf","Why would I want this over just sticking Node \u002F Deno \u002F Bun in a Docker container?",{"id":144,"by":145,"text":146},"46455579","strangescript","Cool project, but I never found the cloudflare DX desirable compared to self hosted alternatives. A plain old node server in a docker container was much easier to manage, use and…",[148,155,162,169],{"value":149,"source":100,"evidence":150},"Kubernetes deployment guide",[151],{"id":152,"by":153,"text":154},"46455795","kachapopopow","Could you add a kubernetes deployment quick-start? Just a simple deployment.yaml is enough.",{"value":156,"source":100,"evidence":157},"GitHub auto-deploy on push",[158],{"id":159,"by":160,"text":161},"46455505","st3fan","This is very nice! Do you plan to hook this up to GitHub, so that a push of worker code (and maybe a yaml describing the environment & resources) will result in a redeploy?",{"value":163,"source":100,"evidence":164},"Publish a roadmap of unimplemented features",[165],{"id":166,"by":167,"text":168},"46455080","indigodaddy","Perhaps it might be helpful to some to also lay out the things that don't work today (or eg roadmap of what's being worked on that doesn't currently work?). Anyway, looks very…",{"value":170,"source":100,"evidence":171},"Add a license",[172],{"id":173,"by":174,"text":175},"46489442","yencabulator","I don't see a single license mentioned anywhere?",[177,184,191,198],{"value":178,"source":100,"evidence":179},"How does it differ from workerd?",[180],{"id":181,"by":182,"text":183},"46456003","tbrockman","Cool project, great work! Forgive the uninformed questions, but given that `workerd` (https:\u002F\u002Fgithub.com\u002Fcloudflare\u002Fworkerd) is \"open-source\" (in terms of the runtime itself,…",{"value":185,"source":100,"evidence":186},"Does it use the actual Cloudflare runtime?",[187],{"id":188,"by":189,"text":190},"46455183","vmg12","Does this actually use the cloudflare worker runtime or is this just a way to run code in v8 isolates?",{"value":192,"source":100,"evidence":193},"What is the failure model when user code misbehaves?",[194],{"id":195,"by":196,"text":197},"46460492","IntelliAvatar","Nice project. One thing Cloudflare Workers gets right is strong execution isolation. When self-hosting, what’s the failure model if user code misbehaves? Is there any…",{"value":199,"source":100,"evidence":200},"Does it need Node.js?",[201],{"id":202,"by":203,"text":204},"46461558","willtemperley","I've decided to ditch CF because Wrangler is deployed via NPM and I cannot bear NodeJS and Microsoft NPM anymore. I get the impression this can't be run without NodeJS right now?",[206,214,219,226,233],{"value":207,"source":100,"evidence":208},"Cloudflare Workers",[209,210],{"id":181,"by":182,"text":183},{"id":211,"by":212,"text":213},"46456007","rozenmd","Probably worth pointing out that the Cloudflare Workers runtime is already open source: https:\u002F\u002Fgithub.com\u002Fcloudflare\u002Fworkerd",{"value":215,"source":100,"evidence":216},"workerd",[217,218],{"id":181,"by":182,"text":183},{"id":211,"by":212,"text":213},{"value":220,"source":100,"evidence":221},"Deno",[222],{"id":223,"by":224,"text":225},"46456595","nextaccountic","Any reason to abandon Deno? edit: if the idea was to have compatibility with cloudflare workers, workers can run deno https:\u002F\u002Fdocs.deno.com\u002Fexamples\u002Fcloudflare_workers_tutorial\u002F",{"value":227,"source":100,"evidence":228},"OpenFaaS",[229],{"id":230,"by":231,"text":232},"46455266","kristianpaul","Interesting option to consider next to openfaas",{"value":234,"source":100,"evidence":235},"Rivet actors",[236],{"id":237,"by":238,"text":239},"46455909","dangoodmanUT","This is similar to what rivet (1) does, perhaps focusing more on stateless than rivet does (1) https:\u002F\u002Fwww.rivet.dev\u002Fdocs\u002Factors\u002F",{"comments":241,"answered":242,"key":243},24,13,[244,247,248],{"id":245,"text":246},"46462045","The DX is great: simple deployment, no containers, no infra to manage. I build a lot of small weekend projects that I don't want to maintain once shipped. OpenWorkers gives you…",{"id":62,"text":63},{"id":249,"text":250},"46455369","Fair point. The V8 isolate provides memory isolation, and we enforce CPU limits (100ms) and memory caps (128MB). Workers run in separate isolates, not separate processes, so it's…",{"commenters":252,"max_depth":253,"maker_replies":241,"first_comment_mins":254,"lifespan_hours":255},80,9,52,120,[257,259,263,266,268,272,275,279,282,285,288,291,293,296,299,303,306,308,311,313,316,319,322,325,327,329,333,336,339,342,344,347,350,351,354,357,361,364,366,369,371,374,377,381,384,387,391,395,397,399,401,402,403,406,409,410,413,416,419,421,424,427,429,432,434,437,439,442,444,446,448,450,452,454,457,459,460,463,466,469,471,473,475,478,481,483,485,487,490,492,494,496,500,502,506,508,512,515,518,520,523,524,526,528,531,533,536,540,543,546,549,554,556,557,558,562,564,566,567,570,572,574,576,578,580,582,584,586,590,592,594,597,599,601,603,606,609,611,613,616,618,620,621,623,625,629,631,633,636,638,640,642,644,646,650,654,656,658],[122,42,34,258,123,42],"project\u002Fcritical\u002Fidea",[260,42,43,261,262,42],"46456551","project\u002Fneutral\u002Fidea","patmorgan23",[264,42,43,261,265,42],"46456784","trevor-e",[267,42,34,258,160,42],"46456890",[269,42,43,270,271,42],"46456997","project\u002Fmixed\u002Fidea","andrewaylett",[273,42,34,258,274,42],"46457161","nrhrjrjrjtntbt",[276,42,42,277,278,42],"46457435","other\u002Fneutral\u002Fnone","locknitpicker",[280,42,42,277,281,42],"46457546","robertcope",[283,42,42,277,284,42],"46463016","h33t-l4x0r",[286,42,42,277,287,42],"46464279","c0balt",[289,42,42,277,290,42],"46465612","nwellinghoff",[292,42,42,277,281,42],"46471425",[294,42,42,277,295,42],"46457896","RandomDistort",[297,42,42,277,298,42],"46459044","gpm",[300,42,42,301,302,42],"46459268","other\u002Fneutral\u002Fpricing","NicoJuicy",[304,42,42,301,305,42],"46461958","Hamuko",[245,42,42,307,11,34],"maker\u002Fpositive\u002Fdesign",[309,42,43,310,274,42],"46462400","project\u002Fneutral\u002Fnone",[312,42,34,258,278,42],"46457231",[314,42,42,277,315,42],"46457534","closingreunion",[317,42,42,277,318,42],"46457776","geysersam",[320,42,42,277,321,42],"46457808","martinald",[323,42,42,277,324,42],"46461824","csomar",[326,42,42,277,284,42],"46463077",[133,34,34,328,134,42],"project\u002Fcritical\u002Fprivacy",[330,34,43,331,332,42],"46455238","project\u002Fneutral\u002Fprivacy","vlovich123",[334,34,42,277,335,42],"46455251","samwillis",[337,34,42,277,338,42],"46456216","oldmanhorton",[340,34,42,277,341,42],"46458963","kentonv",[62,34,42,343,11,34],"maker\u002Fneutral\u002Fprivacy",[345,34,43,331,346,42],"46455263","ForHackernews",[348,34,43,331,349,42],"46455371","twosdai",[249,34,42,343,11,34],[352,34,34,353,298,42],"46455458","project\u002Fcritical\u002Fdocs",[355,34,42,356,11,34],"46455920","maker\u002Fpositive\u002Fdocs",[358,34,42,359,360,42],"46455408","commenter\u002Fcritical\u002Fprivacy","imcritic",[362,34,42,363,298,42],"46455623","other\u002Fneutral\u002Fprivacy",[365,34,42,343,11,34],"46455952",[367,34,42,368,134,42],"46455918","commenter\u002Fneutral\u002Fprivacy",[370,34,42,277,167,42],"46456557",[372,34,42,368,373,42],"46459493","laurencerowe",[375,34,42,363,376,42],"46457526","d4mi3n",[378,34,43,379,380,42],"46459361","project\u002Fneutral\u002Fdocs","AgentME",[382,34,42,383,11,34],"46462669","maker\u002Fneutral\u002Fidea",[385,34,43,331,386,42],"46455935","ZiiS",[388,34,34,389,390,42],"46456966","project\u002Fcritical\u002Fexecution","m11a",[392,34,42,393,394,42],"46458745","commenter\u002Fneutral\u002Fnone","CuriouslyC",[396,34,43,331,271,42],"46457026",[398,34,43,331,380,42],"46459382",[400,34,42,368,271,42],"46467028",[181,18,43,261,182,42],[65,18,42,383,11,34],[404,18,43,405,324,42],"46462679","project\u002Fneutral\u002Fexecution",[407,18,42,408,11,34],"46463081","maker\u002Fneutral\u002Fexecution",[166,43,43,379,167,42],[411,43,42,412,11,34],"46455215","maker\u002Fneutral\u002Fdocs",[414,48,47,415,153,42],"46455235","project\u002Fpositive\u002Fidea",[417,48,42,277,418,42],"46455386","geek_at",[420,48,42,301,153,42],"46455774",[422,48,42,301,423,42],"46455821","Imustaskforhelp",[425,48,42,393,426,42],"46456164","andruby",[428,48,42,393,111,42],"46456224",[430,48,42,393,431,42],"46456445","shimman",[433,48,42,393,111,42],"46456589",[435,48,42,393,436,42],"46457153","mystifyingpoi",[438,48,42,393,431,42],"46458843",[440,48,42,393,441,42],"46456844","oldandboring",[443,48,42,393,423,42],"46458125",[445,48,42,393,153,42],"46457197",[447,48,42,393,111,42],"46462915",[449,48,42,393,153,42],"46463888",[451,48,42,393,423,42],"46458281",[453,48,42,277,426,42],"46509674",[455,48,42,393,456,42],"46456229","dijit",[458,48,42,301,153,42],"46457039",[211,48,43,310,212,42],[461,48,42,462,11,34],"46456133","maker\u002Fneutral\u002Fnone",[464,48,42,277,465,42],"46456293","buremba",[467,48,42,277,468,42],"46457436","ketanhwr",[470,48,42,277,465,42],"46490007",[472,48,42,277,341,42],"46490397",[474,48,42,277,465,42],"46490761",[476,48,42,393,477,42],"46456142","re-thc",[479,48,42,393,480,42],"46456334","otterley",[482,48,42,393,477,42],"46456399",[484,48,42,393,480,42],"46456434",[486,48,42,393,153,42],"46457156",[488,48,42,393,489,42],"46461467","pyvpx",[491,48,42,393,153,42],"46463901",[493,48,42,393,477,42],"46464331",[495,48,42,393,153,42],"46464922",[497,48,42,498,499,42],"46460784","commenter\u002Fneutral\u002Fpricing","nijave",[501,48,42,393,477,42],"46464317",[503,47,47,504,505,42],"46457937","maker\u002Fpositive\u002Fexecution","mmastrac",[507,47,42,462,11,34],"46458133",[509,510,34,353,511,42],"46456234",6,"j1elo",[513,510,43,379,514,42],"46456336","vishnugupta",[516,510,42,277,517,42],"46456499","simlevesque",[519,510,42,412,11,34],"46456604",[521,510,47,522,511,42],"46457430","maker\u002Fpositive\u002Fnone",[202,39,43,405,203,42],[525,39,42,408,11,34],"46462085",[103,527,47,415,104,42],8,[529,253,43,261,530,42],"46460279","valdair3d",[532,253,42,462,11,34],"46462105",[534,253,47,535,530,42],"46513350","project\u002Fpositive\u002Fnone",[537,538,42,277,539,42],"46456982",10,"abalashov",[541,538,42,542,278,42],"46457035","other\u002Fneutral\u002Fidea",[544,538,42,277,545,42],"46457127","nine_k",[547,538,42,277,548,42],"46462837","rcarmo",[550,551,43,552,553,42],"46456233",11,"project\u002Fneutral\u002Fpricing","byyll",[555,551,47,415,431,42],"46456468",[110,35,47,415,111,42],[114,242,47,415,115,42],[559,560,47,535,561,42],"46461338",14,"mariopt",[563,560,42,462,11,34],"46463418",[565,560,43,261,561,42],"46465192",[144,32,47,535,145,42],[568,32,43,261,569,42],"46455693","skybrian",[223,571,43,405,224,42],16,[573,571,42,405,11,34],"46456991",[188,575,43,405,189,42],17,[577,575,42,405,11,34],"46455211",[126,579,34,258,127,42],18,[195,581,43,405,196,42],19,[583,581,42,405,11,34],"46462134",[585,581,47,415,196,42],"46463329",[587,588,47,535,589,42],"46455590",20,"mohsen1",[591,588,42,261,11,34],"46456708",[237,593,43,261,238,42],21,[595,596,43,261,465,42],"46456154",22,[598,596,43,261,569,42],"46456174",[600,596,42,393,465,42],"46456212",[602,596,42,393,480,42],"46456406",[604,596,42,393,605,42],"46456520","justincormack",[607,596,42,608,465,42],"46456724","other\u002Fneutral\u002Fperformance",[610,596,42,405,11,34],"46459414",[612,596,42,277,390,42],"46456949",[614,615,43,379,548,42],"46462828",23,[617,615,42,379,11,34],"46476511",[619,615,47,535,548,42],"46480168",[159,241,43,261,160,42],[622,241,42,261,11,34],"46455656",[624,241,42,261,11,34],"46455684",[626,627,42,277,628,42],"46457730",25,"TZubiri",[630,627,42,277,628,42],"46457743",[140,632,34,258,141,42],26,[634,632,47,635,390,42],"46456920","project\u002Fpositive\u002Fprivacy",[152,637,43,379,153,42],27,[639,637,42,379,11,34],"46476537",[641,637,43,379,153,42],"46476675",[173,643,34,353,174,42],28,[230,645,47,415,231,42],29,[647,648,43,261,649,42],"46457055",30,"utopiah",[651,648,42,652,653,42],"46457070","commenter\u002Fneutral\u002Fdocs","lukevp",[655,648,42,393,649,42],"46462348",[657,648,34,258,278,42],"46457147",[659,648,43,261,649,42],"46462371",[],[662,667,671,676,681,686],{"id":663,"name":664,"points":665,"category":666},"46491749","taws",390,"dev_tools",{"id":668,"name":669,"points":670,"category":666},"46511469","Prism.Tools",380,{"id":672,"name":673,"points":674,"category":675},"46499646","DoNotNotify",347,"productivity",{"id":677,"name":678,"points":679,"category":680},"46488654","how browsers work",302,"learning_science",{"id":682,"name":683,"points":684,"category":685},"46501137","Tailsnitch",280,"security_privacy",{"id":687,"name":688,"points":689,"category":666},"46449852","Enroll",265,false,"v2",{"id":693,"name":5,"line":6,"ai":690,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":694,"top":18,"kw":695,"maker":11,"domain":10,"tier":19,"attempts":42,"strip":696,"url":9,"mix":697,"praise":99,"objection":119,"sub":21},46454693,0.05,[24,25,26,27,28],"2100101310313350000300051550553153040331",[32,33,34,35],1793991137985]