[{"data":1,"prerenderedAt":668},["ShallowReactive",2],{"project-48529990":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":35,"aspects":36,"strip":46,"post_text":50,"what":51,"said":101,"maker_in_thread":230,"shape":243,"grid":247,"attempts":630,"same_week":631,"maker_shows":48,"maker_hidden":660,"reader_version":661,"card":662},"48529990","Kage","Shadow any website to a single binary for offline viewing","title","Show HN: Kage – Shadow any website to a single binary for offline viewing","https:\u002F\u002Fgithub.com\u002Ftamnd\u002Fkage","github.com","tamnd",1781457938,2026,712,141,24,4366,1,"legend","dev_tools","website archiver","cli",[24,25,26,27,28],"offline website archive","website mirror","zim","wget alternative","single binary","debated",-0.053,{"positive":32,"neutral":33,"mixed":18,"critical":34},16,28,19,64,{"docs":37,"idea":40,"execution":43,"performance":45},{"positive":38,"critical":39},0,4,{"positive":41,"critical":42},10,6,{"positive":18,"critical":44},7,{"positive":38,"critical":18},[47,38,38,48,48,47,47,38,38,38,38,18,18,18,47,18,47,38,48,39,18,47,18,47,48,47,39,47,48,48,18,47,18,47,18,47,48,47,18,49],3,5,2,null,{"problem":52,"audience":66,"pricing":50,"motivation":76,"time_to_build":50,"stack":81,"openness":99,"stage":100,"team_size":100},{"value":53,"source":54,"evidence":55},"Browsing entire websites offline, such as docs or essays, when internet access is limited","maker",[56,60,63],{"id":57,"by":58,"text":59},"48530457","wolttam","One use I'd have for this is company wikis that you want to give folks easy offline access to (maybe the wiki has documentation that's useful at sites that don't have cellular…",{"id":61,"by":11,"text":62},"48543362","Good news for you: here is the command to clone Apple Docs: ```bash bin\u002Fkage clone https:\u002F\u002Fdeveloper.apple.com\u002Fdocumentation\u002F \\ --scope-prefix \u002Fdocumentation\u002F \\ --out…",{"id":64,"by":11,"text":65},"48533990","Making docs available offline was one of my main motivations for building this tool. I will try Apple Docs too. I previously downloaded the Snowflake docs, and it was something…",{"value":67,"source":68,"evidence":69},"People wanting offline copies of websites, such as docs readers and travellers","inferred",[70,74,75],{"id":71,"by":72,"text":73},"48530765","lolpython","This is cool. I could see myself downloading the articles behind the first couple pages of hacker news with this, for viewing on a flight or long distance train ride with spotty…",{"id":64,"by":11,"text":65},{"id":57,"by":58,"text":59},{"value":77,"source":54,"evidence":78},"Offline access to documentation and websites, such as Apple and Snowflake docs",[79,80],{"id":64,"by":11,"text":65},{"id":61,"by":11,"text":62},[82,90],{"value":83,"source":84,"evidence":85},"Go","commenter",[86],{"id":87,"by":88,"text":89},"48532064","soulofmischief","Cool project! I know it's written in go, but it would be cool to see something like this which uses Cosmopolitan Libc + redbean or something similar to create a binary which runs…",{"value":91,"source":54,"evidence":92},"Chrome\u002FChromium headless rendering",[93,96],{"id":94,"by":11,"text":95},"48534032","Exactly. For downloading, Kage requires Chrome or Chromium. Running it inside Docker makes setup easier and keeps cleanup simple:…",{"id":97,"by":11,"text":98},"48530624","I tried to follow well-known formats first, such as WARC and ZIM from Kiwix, so we could benefit from existing tooling support. For my own custom data format, I have a lot of…","open_source","unknown",{"praise":102,"objections":116,"requests":157,"questions":180,"alternatives":203},[103],{"value":104,"source":84,"evidence":105},"Useful idea for offline reading and archiving",[106,107,108,112],{"id":57,"by":58,"text":59},{"id":71,"by":72,"text":73},{"id":109,"by":110,"text":111},"48532715","nitotm","I was looking for something like this the other day, it can be very helpful.",{"id":113,"by":114,"text":115},"48534430","kadhirvelm","This is awesome, we wanted an offline copy of someone’s prototype (as built on Lovable, etc) so we could do version control and sharing in an easier format. Wrote our approach…",[117,131,142],{"value":118,"source":84,"evidence":119},"Strips JavaScript, so interactive sites and navigation break",[120,124,127],{"id":121,"by":122,"text":123},"48536278","carsonye","This is interesting. Is the intended use case mostly read-only websites like blogs\u002Fdocs\u002Fessays? How well does it handle sites where navigation, search, dropdowns, or other UI…",{"id":125,"by":11,"text":126},"48544522","Currently, all of that is broken. At one point, I had a traumatic experience where an archived HTML file kept redirecting to the live site, even though I already had all the…",{"id":128,"by":129,"text":130},"48543690","kjmh","I was floored by the idea of browsing docs offline but disappointed that recreating the demo of archiving Paul Graham’s essays gave me a ZIM with broken images and broken Unicode…",{"value":132,"source":84,"evidence":133},"README reads as AI-generated",[134,138],{"id":135,"by":136,"text":137},"48531868","chinnyys","The readme is AI slop, and incredibly grating to read. The disgust I felt while reading it almost put me off trying the project. Is the code also AI slop?",{"id":139,"by":140,"text":141},"48533061","sneak","The README is LLM slop. This makes me assume the code is the same.",{"value":143,"source":84,"evidence":144},"Existing tools like SingleFile, HTTrack, and Print to PDF already do this",[145,149,153],{"id":146,"by":147,"text":148},"48530138","maxloh","I find SingleFile [0] a much more robust version of this. It strips out all the JavaScript too, but also packs everything into a single HTML file that is easy to transfer. Binary…",{"id":150,"by":151,"text":152},"48539723","aa-jv","I've been using \"Print to PDF\" as my principle bookmarks management tool, since 1998, and I have over 90,000+ such PDF's sitting on my system, easily re-read and discovered. So I…",{"id":154,"by":155,"text":156},"48531174","telesilla","I've been using httrack (https:\u002F\u002Fwww.httrack.com) to download wikis to read on flights, which isn't perfect but better than I'd found previously. I'll try this out, I'd be…",[158,165,173],{"value":159,"source":84,"evidence":160},"Cookie and login support",[161],{"id":162,"by":163,"text":164},"48562234","b0dhimind","I've had a subscription to this site: app.dancevision.com for a while. It requires cookies to login and view and each video (3 directories down) is hosted on Vimeo. Could Kage…",{"value":166,"source":84,"evidence":167},"Single HTML output that opens without a server",[168,169],{"id":57,"by":58,"text":59},{"id":170,"by":171,"text":172},"48531707","ninalanyon","> kage serve $HOME\u002Fdata\u002Fkage\u002Fpaulgraham.com If the result is static why does it need a server? Isn't it possible to make it so that it can simply be opened by the browser? Like:…",{"value":174,"source":84,"evidence":175},"Rate limiting and subset cloning",[176],{"id":177,"by":178,"text":179},"48530366","gregwebs","This seems like it has potential to create a lot of load on a site- are there settings to set how fast it clones or avoid images\u002Fvideos? Is there a way to only get a subset of a…",[181,196],{"value":182,"source":84,"evidence":183},"How does it differ from MHTML, wget, or HTTrack?",[184,188,192],{"id":185,"by":186,"text":187},"48544507","Departed7405","What's the advantage compared to mhtml?",{"id":189,"by":190,"text":191},"48535975","G_o_D","How its different then MHTML ??",{"id":193,"by":194,"text":195},"48531960","shinryuu","Reminds me of this. https:\u002F\u002Fgwern.net\u002Fgwtar Compared to that is there anything kage does better?",{"value":197,"source":84,"evidence":198},"Why is --no-sandbox used with Chrome?",[199],{"id":200,"by":201,"text":202},"48530697","dimiprasakis","Neat project, I like the idea. One thing from a quick read: you launch Chrome with --no-sandbox. Is there a good reason for that? Security wise it's probably not a good idea. If…",[204,208,212,219,226],{"value":205,"source":84,"evidence":206},"SingleFile",[207],{"id":146,"by":147,"text":148},{"value":209,"source":84,"evidence":210},"HTTrack",[211],{"id":154,"by":155,"text":156},{"value":213,"source":84,"evidence":214},"wget --mirror",[215],{"id":216,"by":217,"text":218},"48530415","rahimnathwani","So this is like using wget --mirror except that it works on pages that require javascript, right?",{"value":220,"source":84,"evidence":221},"Teleport Pro",[222],{"id":223,"by":224,"text":225},"48540125","snowflaxxx","Meet Teleport Pro",{"value":227,"source":84,"evidence":228},"gwtar",[229],{"id":193,"by":194,"text":195},{"comments":231,"answered":232,"key":233},23,11,[234,237,240],{"id":235,"text":236},"48533811","I have a bunch of opinionated\u002Fpersonal-use binaries like this in my $HOME\u002Fbin\u002F, like delete-all-npm, clean-rust-cache, download-youtube-playlist, and get-markdown \u003Curl>. It feels…",{"id":238,"text":239},"48530498","Submitting this to Hacker News is the right place! Thanks for your idea. I will consider implementing that :) Also, in my mind, I already have a script\u002Fprogram to convert HTML to…",{"id":241,"text":242},"48534311","Not yet supporting cookies, since I created this tool for shadowing public websites first. I will add options to pass cookies later. It will pass them to the underlying…",{"commenters":244,"max_depth":245,"maker_replies":231,"first_comment_mins":41,"lifespan_hours":246},93,8,234,[248,252,256,259,263,266,269,271,274,277,279,280,282,284,287,289,292,296,299,302,305,307,310,313,314,317,320,322,325,327,330,332,334,336,338,341,344,347,349,351,353,357,359,361,363,365,369,372,375,378,381,384,386,388,391,394,396,399,402,405,408,411,414,417,418,421,423,425,428,430,433,436,438,440,444,446,449,451,453,456,458,460,462,464,467,469,472,473,475,477,479,482,484,486,490,493,497,499,501,502,505,508,511,513,516,520,523,527,531,533,535,536,537,539,542,544,548,552,555,559,561,565,569,571,573,575,579,583,587,589,593,596,600,602,606,610,612,614,616,618,622,626],[249,38,47,250,251,38],"48531866","project\u002Fneutral\u002Fdocs","simonw",[253,38,38,254,255,38],"48532547","other\u002Fneutral\u002Fnone","alterom",[257,38,38,254,258,38],"48532584","jubilanti",[260,38,38,261,262,38],"48534223","commenter\u002Fneutral\u002Fnone","embedding-shape",[264,38,38,254,265,38],"48533527","stavros",[267,38,38,254,268,38],"48533639","vqtska",[270,38,38,254,262,38],"48534845",[272,38,38,254,273,38],"48536336","Noumenon72",[275,38,38,254,276,38],"48537672","LocoPadre",[278,38,38,254,268,38],"48538749",[235,38,38,254,11,18],[57,18,48,281,58,38],"project\u002Fpositive\u002Fidea",[238,18,38,283,11,18],"maker\u002Fneutral\u002Fidea",[285,18,48,281,286,38],"48533206","mgiampapa",[241,18,38,288,11,18],"maker\u002Fneutral\u002Fnone",[290,18,48,281,291,38],"48535507","smeej",[293,18,47,294,295,38],"48535980","project\u002Fneutral\u002Fidea","mcdonje",[297,18,47,294,298,38],"48537439","d3Xt3r",[300,18,38,261,301,38],"48539835","Bad_CRC",[303,18,38,254,304,38],"48540287","samat",[306,18,38,254,298,38],"48546811",[308,18,47,294,309,38],"48535189","gwern",[311,18,38,254,312,38],"48542602","everforward",[170,49,47,294,171,38],[315,49,38,261,316,38],"48531768","doctoboggan",[318,49,38,261,319,38],"48531951","pixelatedindex",[321,49,38,261,262,38],"48532252",[323,49,38,261,324,38],"48532410","rzzzt",[326,49,38,261,262,38],"48534185",[328,49,38,261,329,38],"48537340","dncornholio",[331,49,38,261,262,38],"48538596",[333,49,38,261,324,38],"48545118",[335,49,38,261,262,38],"48548773",[337,49,38,261,324,38],"48560837",[339,49,38,261,340,38],"48532366","dmazzoni",[342,49,38,261,343,38],"48532384","recursive",[345,49,38,261,346,38],"48532737","danielheath",[348,49,38,261,343,38],"48535946",[350,49,38,261,346,38],"48547931",[352,49,38,261,343,38],"48548409",[354,49,18,355,356,38],"48532202","project\u002Fcritical\u002Fexecution","afavour",[358,49,38,261,262,38],"48532263",[360,49,38,288,11,18],"48533846",[146,47,18,362,147,38],"project\u002Fcritical\u002Fidea",[364,47,38,288,11,18],"48530227",[366,47,18,367,368,38],"48530473","project\u002Fcritical\u002Fnone","sdevonoes",[370,47,38,254,371,38],"48530803","sermah",[373,47,38,254,374,38],"48530990","ivangelion",[376,47,18,377,147,38],"48531487","project\u002Fcritical\u002Fdocs",[379,47,38,254,380,38],"48534524","sillysaurusx",[382,47,38,261,383,38],"48534934","nikisweeting",[385,47,38,283,11,18],"48530246",[387,47,47,294,147,38],"48531639",[389,47,18,362,390,38],"48530635","HelloUsername",[392,47,18,362,393,38],"48530706","nmstoker",[395,47,38,261,340,38],"48532408",[397,47,48,281,398,38],"48532239","wamatt",[400,47,38,254,401,38],"48532780","initramfs",[403,47,38,254,404,38],"48532249","arikrahman",[406,39,18,377,407,38],"48537847","xlii",[409,39,38,261,410,38],"48541696","xd1936",[412,39,38,261,413,38],"48545073","praveer13",[415,39,38,261,416,38],"48548018","timerol",[154,48,48,281,155,38],[419,48,47,294,420,38],"48532953","throwaway219450",[422,48,38,261,155,38],"48533629",[424,48,38,294,11,18],"48533945",[426,48,47,427,383,38],"48533661","project\u002Fneutral\u002Fnone",[429,48,38,254,11,18],"48533911",[431,42,47,427,432,38],"48531536","latexr",[434,42,48,435,404,38],"48532261","project\u002Fpositive\u002Fnone",[177,44,47,437,178,38],"project\u002Fneutral\u002Fperformance",[439,44,38,288,11,18],"48530422",[441,44,18,442,443,38],"48532910","project\u002Fcritical\u002Fperformance","ares623",[200,245,47,445,201,38],"project\u002Fmixed\u002Fexecution",[447,245,38,448,383,38],"48533656","commenter\u002Fneutral\u002Fexecution",[94,245,38,450,11,18],"project\u002Fneutral\u002Fexecution",[452,245,38,448,383,38],"48534865",[454,245,38,455,11,18],"48537319","maker\u002Fneutral\u002Fexecution",[457,245,18,355,201,38],"48539656",[459,245,38,448,383,38],"48547983",[216,461,47,294,217,38],9,[463,461,38,288,11,18],"48530443",[465,41,38,254,466,38],"48532556","coffeecoders",[468,41,38,254,11,18],"48534063",[470,41,38,254,471,38],"48540325","couscouspie",[71,232,48,281,72,38],[193,474,47,294,194,38],12,[87,476,47,294,88,38],13,[478,476,38,283,11,18],"48534151",[480,476,38,261,481,38],"48537078","jokethrowaway",[483,476,38,261,88,38],"48539015",[113,485,48,281,114,38],14,[487,488,18,355,489,38],"48546166",15,"ralferoo",[491,32,48,492,481,38],"48537064","project\u002Fpositive\u002Fexecution",[494,495,47,294,496,38],"48530411",17,"sanqui",[498,495,38,288,11,18],"48530467",[500,495,47,294,496,38],"48530537",[97,495,38,288,11,18],[503,495,48,504,496,38],"48530708","maker\u002Fpositive\u002Fnone",[506,495,48,504,507,38],"48531300","Prime_Axiom",[509,495,48,504,510,38],"48533367","threecheese",[512,495,38,261,11,18],"48533955",[514,495,48,281,515,38],"48530479","Dhavidh",[517,518,47,294,519,38],"48537116",18,"sails",[521,34,38,254,522,38],"48531047","Igor_Wiwi",[524,525,38,254,526,38],"48535038",20,"amatecha",[528,529,18,362,530,38],"48532868",21,"cynicalsecurity",[532,529,38,427,11,18],"48534110",[162,534,47,427,163,38],22,[121,231,47,450,122,38],[125,231,38,355,11,18],[538,231,38,450,11,18],"48544529",[540,16,18,355,541,38],"48534691","jyscao",[135,543,18,377,136,38],25,[545,546,47,250,547,38],"48541229",26,"ekianjo",[549,550,47,294,551,38],"48535024",27,"godot",[553,33,38,254,554,38],"48539598","Sathwickp",[556,557,47,427,558,38],"48539336",29,"c7b",[560,557,38,427,11,18],"48544560",[562,563,18,355,564,38],"48658236",30,"aivanise",[566,567,47,437,568,38],"48532996",31,"calrizien",[64,567,38,570,11,18],"maker\u002Fpositive\u002Fidea",[61,567,38,572,11,18],"maker\u002Fpositive\u002Fdocs",[109,574,48,281,110,38],32,[576,577,18,355,578,38],"48530797",33,"daviding",[580,581,47,294,582,38],"48536136",34,"smusamashah",[584,585,48,281,586,38],"48567570",35,"aynite",[185,588,47,294,186,38],36,[590,591,38,261,592,38],"48536235",37,"rickylin",[594,591,38,261,595,38],"48536307","italiancheese",[597,598,47,294,599,38],"48532430",38,"KellyCriterion",[189,601,47,294,190,38],39,[603,604,47,294,605,38],"48533539",40,"chfritz",[607,608,38,254,609,38],"48537230",41,"endorphine",[139,611,18,377,140,38],42,[150,613,18,362,151,38],43,[223,615,38,254,224,38],44,[128,617,18,355,129,38],45,[619,620,47,294,621,38],"48532524",46,"Onavo",[623,624,18,362,625,38],"48530967",47,"delduca",[627,628,48,435,629,38],"48530597",48,"grahamstanes17",[],[632,636,641,646,650,655],{"id":633,"name":634,"points":635,"category":20},"48490024","Homebrew 6.0.0",1481,{"id":637,"name":638,"points":639,"category":640},"48496539","FablePool",526,"web_saas",{"id":642,"name":643,"points":644,"category":645},"48510341","Putt.day",320,"games",{"id":647,"name":648,"points":649,"category":645},"48573012","Ribbie",260,{"id":651,"name":652,"points":653,"category":654},"48523534","Inkwash",250,"creative",{"id":656,"name":657,"points":658,"category":659},"48567877","High-Res Neural Cellular Automata",208,"ai",false,"v2",{"id":663,"name":5,"line":6,"ai":660,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":664,"top":18,"kw":665,"maker":11,"domain":10,"tier":19,"attempts":38,"strip":666,"url":9,"mix":667,"praise":104,"objection":118,"sub":21},48529990,-0.05,[24,25,26,27,28],"3005533000011131305413135343551313135312",[32,33,18,34],1794036702882]