frontpage.
newsnewestaskshowjobs

Open Source @Github

fp.

Show HN: Kage – Shadow any website to a single binary for offline viewing

https://github.com/tamnd/kage
175•tamnd•3h ago•43 comments

Show HN: Trace – Offline Mac meeting transcripts you can flag mid-call

https://traceapp.info
12•AG342•23h ago•2 comments

Show HN: 3D print Z reinforcement via injected loops

https://mgunlogson.github.io/magma/
37•mgunlogson•5d ago•11 comments

Show HN: Ray Hosting – Topology-aware game server orchestrator made from scratch

https://ray-hosting.com/en-US
2•bardhyliis•25m ago•0 comments

Show HN: Discover Wikipedia articles popular on Hacker News

https://www.orangecrumbs.com/
4•octopus143•2h ago•0 comments

Show HN: Dual YOLOv8n UAV Detection on RK3588S at 42 FPS Using NPU

https://github.com/alebal123bal/khadas_yolov8n_multithread
56•alebal123bal•5h ago•9 comments

Show HN: Philosophy for Kids

https://philosophy.ocaho.com/
3•rahimnathwani•2h ago•1 comments

Show HN: I am building a map of people who lived in the Roman Empire

https://new.roman-names.com/
196•metiscus•4d ago•44 comments

Show HN: Paca – Lightweight Jira alternative for human-AI collaboration

https://github.com/Paca-AI/paca
160•pikann22•1d ago•57 comments

Show HN: A zero-telemetry clipboard, color picker, and capture suite

5•Peacetoes•4h ago•6 comments

Show HN: Bastion – isolated Linux VMs for background coding agents

https://bastion.computer/
24•almostlit•17h ago•2 comments

Show HN: Homebrew 6.0.0

https://brew.sh/2026/06/11/homebrew-6.0.0/
1454•mikemcquaid•3d ago•355 comments

Show HN: I run a vision model on every screenshot, locally, on a 4GB GPU

https://github.com/ayushh0110/ScreenMind
32•skye0110•21h ago•4 comments

Show HN: Afterburner – Capability-Sandboxed JavaScript/TS Runtime in Rust

https://github.com/afterburner-sh/afterburner
6•vertexclique•7h ago•2 comments

Show HN: Putt.day a daily mini golf game

https://putt.day/
309•ellg•1d ago•110 comments

Show HN: Lightweight Task queue on Erlang/OTP, SQLite-backed, no overengineering

https://github.com/entGriff/ezra
73•ent1c3d•4d ago•11 comments

Show HN: 2 Weeks of Hallucinate – The Photo Gallery

https://hallucinate.site/gallery
71•stagas•1d ago•24 comments

Show HN: Öcha – A minimalist, Kindle-style RSS and newsletter reader

https://readocha.com/
4•pavn•5h ago•0 comments

Show HN: Velyr – an AI agent that finds and fixes conversion leaks on your site

https://velyr.io/
7•flo_r•10h ago•1 comments

Show HN: Quant Picker – which GGUF file fits your model and machine

https://vettedconsumer.com/quant-picker/
18•ermantrout•1d ago•0 comments

Show HN: FablePool – pool money behind a prompt, and Fable builds it in public

https://fablepool.com
521•matthewbarras•2d ago•274 comments

Show HN: StackScope – I crawled over 40k indie launches to see what they ship

https://stackscope.dev/
64•datafreak_•2d ago•17 comments

Show HN: Extend UI – open-source UI kit for modern document apps

https://www.extend.ai/ui
250•kbyatnal•4d ago•81 comments

Show HN: Boo – Screen-style terminal multiplexer built on libghostty

https://github.com/coder/boo
94•kylecarbs•2d ago•28 comments

Show HN: GlyphX, a local-first LaTeX editor that compiles offline

4•kanakkholwal•5h ago•0 comments

Show HN: Skill for your agent to visualize your gbrain and Obsidian

https://github.com/vladignatyev/brain-map-skill
21•v_ignatyev•1d ago•16 comments

Show HN: Claw Patrol, a security firewall for agents

https://github.com/denoland/clawpatrol
110•rough-sea•5d ago•30 comments

Show HN: HelixDB – A graph database built on object storage

https://github.com/HelixDB/helix-db/tree/main
157•GeorgeCurtis•4d ago•42 comments

Show HN: Turn your name into a tree in an infinite procedural shanshui landscape

https://landscape.bairui.dev/
41•subairui•4d ago•21 comments

Show HN: Motplot is a crossword but it plays like Sudoku

https://motplot.app/
5•jamwise•15h ago•3 comments
Open in hackernews

Show HN: Kage – Shadow any website to a single binary for offline viewing

https://github.com/tamnd/kage
174•tamnd•3h ago

Comments

maxloh•2h ago
I find SingleFile [0] to be 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 assets (like web fonts and images) are packed as base64 strings.

They also offer a CLI powered by Puppeteer. [1]

[0]: https://github.com/gildas-lormeau/singlefile

[1]: https://github.com/gildas-lormeau/single-file-cli

tamnd•2h ago
It seems this repo only saves one web page?

What I'm implementing here is mirroring a whole website, with all its subpages, so you can browse it all offline. For example, all essays from paulgraham.com.

maxloh•1h ago
Oh, I see. In that case, feature-wise, it is actually a modern alternative to HTTrack.

I think the misunderstanding stems from the browser's "Save As" reference in the description. It is misleading. You use "Save As" to save a single page, not an entire website.

Also, the description lacks a clear explanation of the project's purpose. It would be helpful to include a sentence explaining that the program downloads an entire website, not just a single page.

tamnd•2h ago
And thanks for the link. Let me implement this single HTML feature, it looks nice to have!
maxloh•1h ago
Yeah. An idea on top of that is to bundle an entire website into a single HTML page, with vendored JavaScript to enable client-side routing (all of the original pages' JS is still stripped out).

That way, the page is self-contained as it is, but requires no bundled binary code to serve the site. It is actually safer security-wise.

The vendored script can be as simple as this:

  const site = {
    "path-1": "<!DOCTYPE html><html> ... </html>",
    "path-2": "<!DOCTYPE html><html> ... </html>",
    // More paths
  }

  function attachListeners() {
    for (const [path, html] of Object.entries(site)) {
      document.querySelector(`a[href=${path}]`).onclick = () => {
        document.documentElement.outerHTML = html
        attachListeners()
      }
    }
  }

  document.addEventListeners("DOMContentLoaded", attachListeners)
HelloUsername•2h ago
What's the difference with, any webbrowser on a computer, File -> Save as ?
nmstoker•2h ago
That's for a single page, this handles the whole site. Also the browser Save As options often work poorly.
wamatt•5m ago
Love love love SingleFile too. The FF extension works pretty well for a clean save.

That said, Kage looks promising if OP can combine SingleFile reproduction quality with the HTTPTrack spidering approach. SPA's are kinda tricky with archiving and do wonder how well Kage would handle that

arikrahman•4m ago
This is what I first thought and it's a very elegant solution, and not needlessly overcomplicated.
gregwebs•2h ago
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/videos? Is there a way to only get a subset of a website?
tamnd•2h ago
Could you help create a new issue for that? I will do it later. It is already 1:00 AM my time, but I am happy that anyone is interested in it. : )
sanqui•2h ago
Cool concept. I would like to see this combined with mitmproxy for archive grade fidelity. You could be saving exactly the data served and at the same time a representation by a modern (contemporary) browser, with all JS having run. This combination would be my perfect replacement for the WARC format.
tamnd•2h ago
I'm working on WARC too, with format from Common Crawl!

By converting it to Markdown, we save a lot of space, but it is for a different purpose and a different project: https://github.com/tamnd/ccrawl-cli

sanqui•2h ago
That's neat! In my opinion, the WARC format is quite tricky and underspecified especially since HTTP2 introduced new semantics. It encodes too much in-band and requires rewriting of the server data. A mitmproxy capture is higher fidelity and supports capturing modern features such as WebSockets. I think if we could wrap Kage's crawler interactions by it and store its capture (the intercepted traffic), we could make a potentially nice new archival format.
tamnd•2h ago
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 private code that I plan to release soon. It is optimized for compression, fast lookups, and more. I have been working on it for two years. This is part of a larger, ambitious umbrella project: I am building Google from scratch (all open source), something that anyone can host, including the crawler, indexer, storage, and serving layers. Stay tuned!

rahimnathwani•2h ago
So this is like using wget --mirror except that it works on pages that require javascript, right?
tamnd•2h ago
Yeah, it is. For example, openai.com is rendered with Next.js, so I will try to mirror it tomorrow.
wolttam•2h ago
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 coverage).

Cool!

It would be especially cool to have a version that didn't require the separate serving process - even though it's nifty you can package up a whole site as a single binary.

Maybe a single HTML entrypoint shim with a bit of javascript that could index into an archive (potentially embedded) of the site's content?

tamnd•2h ago
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/program to convert HTML to Markdown, so it could actually store everything on disk as a folder of Markdown files, and then commit them to a Git repo.

grahamstanes17•2h ago
nice
dimiprasakis•2h ago
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 there is no reason, I'd suggest leaving the sandbox on!

In any case, cool stuff :)

lolpython•2h ago
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 internet
daviding•2h ago
Nice idea! fwiw, false positives and all, but the Windows 11 default Windows Security doesn't like it: `leakless.exe: Operation did not complete successfully because the file contains a virus or potentially unwanted software.`
delduca•1h ago
curl can do this
Igor_Wiwi•1h ago
This is quite useful tool, especially for the cases where internet access is limited (the flights for example). I implemented it as a separate feature in mdview.io: for example you can export a document as a html file for offline usage, with all the presentation features like reach tables, mermaid and etc built in. Example https://mdview.io/s/why-markdown-became-default-format-for-a... then try to Export - Export HTML
telesilla•1h ago
I've been using httrack (https://www.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 delighted to have good results. Thanks for the post.
latexr•1h ago
For those with an eReader, one thing that works really well is using pandoc to download and convert a webpage to EPUB that you can then load to your reader.

  pandoc --from html --to epub --output /PATH/TO/FILE.epub https://example.com
arikrahman•3m ago
Thanks, will try this out on the Kobo later.
ninalanyon•56m ago
> kage serve $HOME/data/kage/paulgraham.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:

$ firefox $HOME/data/kage/paulgraham.com

Then the result would be useable on machines without kage nstalled.

doctoboggan•50m ago
Usually JavaScript is blocked when you load pages that way.
pixelatedindex•32m ago
I thought all the JS was stripper?
embedding-shape•4m ago
Since when? You won't be able to make HTTP requests to localhost, as it'd be a different Origin, but I don't think any mainstream browser blocks JS outright when you use file:// to load and view HTML files.
afavour•10m ago
You’ll likely run into a ton of CORS issues doing that.
embedding-shape•3m ago
I don't think so, there is no HTTP requests being done from JS as it's stripped away, and all the other resources are pulled down (and I'm assume their reference made relative), so really shouldn't be any issues because of CORS at all.
simonw•40m ago
I was intrigued to see how the demo GIF in the README was generated: https://github.com/tamnd/kage/blob/01e75b87ecc893bbba7943c63...

Turns out it's using another project by the same author: https://github.com/tamnd/ascii-gif

The script used for the demo is at https://github.com/tamnd/kage/blob/01e75b87ecc893bbba7943c63... and has a comment showing how to run it:

  ascii-gif render docs/demo/kage.tape -o docs/static/demo.gif
Looks like it's an opinionated wrapper around https://github.com/charmbracelet/vhs
chinnyys•40m ago
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?

shinryuu•31m ago
Reminds me of this. https://gwern.net/gwtar

Compared to that is there anything kage does better?

soulofmischief•22m ago
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 anywhere. Would be fun to be able to pass around self-executable website archives.

https://github.com/jart/cosmopolitan

https://justine.lol/cosmopolitan/index.html

https://redbean.dev

(Certificates just expired for justine's website, just ignore the warning.)

sanqui•2h ago
I'm a fan of compatibility with established formats!

Sounds awesome. There is a lot of untapped potential with respect to efficiently archiving and indexing websites. I saw the impressive things Marginalia Search is doing in this area (the blog is great when it gets technical). There is also a lot of very complete archives of websites out there which are not being indexed at all, and I would love to make them available for researchers. In any case, I'm interested in your project!

Prime_Axiom•1h ago
Looking forward to the next project! I love these kinds of archiving tools.
Dhavidh•2h ago
sound interesting