The best Hacker News stories from Show from the past day
Latest posts:
Show HN: MMOndrian
Made a collaborative, persistent state Mondrian-style painting editor. Feedback welcome!
Show HN: Ts-SSH – SSH over Tailscale without running the daemon
ts-ssh solves a specific problem: accessing machines on your Tailnet from
environments where you can't install the full Tailscale daemon (like CI/CD runners or
restricted systems).<p><pre><code> It uses Tailscale's tsnet library to establish userspace connectivity, then provides
a standard SSH experience. Works with existing workflows since it supports normal SSH
features like ProxyCommand, key auth, and terminal handling.
Some features that proved useful:
• Parallel command execution across multiple hosts
• Built-in tmux session management for multi-host work
• SCP-style file transfers
• Works on Linux/macOS/Windows (AMD64 and ARM64)
The codebase is interesting from a development perspective - it was written almost
entirely using AI tools (mainly Claude Code, with some OpenAI and Jules). Not as an
experiment, but because it actually worked well for this kind of systems programming.
Happy to discuss the workflow if anyone's curious about that aspect.
Source and binaries are on GitHub. Would appreciate feedback from anyone dealing with
similar connectivity challenges.</code></pre>
Show HN: A color name API that maps hex to the closest human-readable name
I built this API to return the closest named color for any hex value—using curated lists like my own [1], XKCD [2], and others.<p>I made it from scratch without Express or any frameworks because:<p>- I’m a frontend/interaction dev and wanted to learn how to build an API from the ground up.
- Existing APIs didn’t guarantee unique names per color—mine does.
- It also supports WebSocket updates, gzip responses, and multiple name sets.<p>I’ve been collecting color names for over 10 years [1]. With ~30,000 entries, bundling them into every color-related project became excessive. This API keeps things lightweight—for me and hopefully for others too.<p>GitHub: <a href="https://github.com/meodai/color-name-api">https://github.com/meodai/color-name-api</a><p>Would love feedback on naming logic, accuracy, performance, or backend best practices I might’ve missed.<p>[1] Large Color Name List: <a href="https://github.com/meodai/color-names">https://github.com/meodai/color-names</a>
[2] XKCD color survey results: <a href="https://xkcd.com/color/rgb/" rel="nofollow">https://xkcd.com/color/rgb/</a>
We moved from AWS to Hetzner, saved 90%, kept ISO 27001 with Ansible
Earlier this year I led our migration off AWS to European cloud (Hetzner + OVHcloud), driven by cost (we cut 90%) and data sovereignty (GDPR + CLOUD Act concerns).<p>We rebuilt key AWS features ourselves using Terraform for VPS provisioning, and Ansible for everything from hardening (auditd, ufw, SSH policies) to rolling deployments (with Cloudflare integration). Our Prometheus + Alertmanager + Blackbox setup monitors infra, apps, and SSL expiry, with ISO 27001-aligned alerts. Loki + Grafana Agent handle logs to S3-compatible object storage.<p>The stack includes:
• Ansible roles for PostgreSQL (with automated s3cmd backups + Prometheus metrics)
• Hardening tasks (auditd rules, ufw, SSH lockdown, chrony for clock sync)
• Rolling web app deploys with rollback + Cloudflare draining
• Full monitoring with Prometheus, Alertmanager, Grafana Agent, Loki, and exporters
• TLS automation via Certbot in Docker + Ansible<p>I wrote up the architecture, challenges, and lessons learned: <a href="https://medium.com/@accounts_73078/goodbye-aws-how-we-kept-iso-27001-slashed-costs-by-90-914ccb4b89fc" rel="nofollow">https://medium.com/@accounts_73078/goodbye-aws-how-we-kept-i...</a><p>I’m happy to share insights, diagrams, or snippets if people are interested — or answer questions on pitfalls, compliance, or cost modeling.
Show HN: Inspect and extract files from MSI installers directly in your browser
Hey everyone!<p>I'm excited to share a small web app I built that allows you to view and extract the contents of Windows MSI installers directly in your browser. It's essentially a web-based "lessmsi" powered by Pyodide.<p>You can try it out at: <a href="https://pymsi.readthedocs.io/en/latest/msi_viewer.html" rel="nofollow">https://pymsi.readthedocs.io/en/latest/msi_viewer.html</a><p>My motivation for building this was from part of my day job -- I often get Windows MSI installers and need to extract files while preserving the relative directory structure and filenames, as they would appear after a full installation. The existing tools I found were good but limited in which platforms they support: lessmsi works great on Windows, while msitools works for Linux/macOS. Neither is a truly cross-platform solution that works on any major OS.<p>So we developed pymsi (a pure Python library, available on GitHub at <a href="https://github.com/nightlark/pymsi">https://github.com/nightlark/pymsi</a>) to handle reading and extracting MSI files from Python. Then I realized that since pymsi has no native dependencies, it could potentially run in a web browser using Pyodide. After a bit of "vibe coding" and fixing some "hallucinated" functions/classes that don't exist in pymsi, the result was this client-side web app.<p>If you need an MSI file to experiment with, older versions of PowerToys included the installer in .msi form, such as this one: <a href="https://github.com/microsoft/PowerToys/releases/download/v0.21.1/PowerToysSetup-0.21.1-x64.msi">https://github.com/microsoft/PowerToys/releases/download/v0....</a><p>Note that the underlying pymsi library hasn't been extensively tested against a bunch of MSI installers yet, so there might still be lingering bugs. If you come across any issues, please don't hesitate to report them in on the GitHub repository (<a href="https://github.com/nightlark/pymsi/issues">https://github.com/nightlark/pymsi/issues</a>).<p>I'd love to hear your feedback and answer any questions!
Show HN: Inspect and extract files from MSI installers directly in your browser
Hey everyone!<p>I'm excited to share a small web app I built that allows you to view and extract the contents of Windows MSI installers directly in your browser. It's essentially a web-based "lessmsi" powered by Pyodide.<p>You can try it out at: <a href="https://pymsi.readthedocs.io/en/latest/msi_viewer.html" rel="nofollow">https://pymsi.readthedocs.io/en/latest/msi_viewer.html</a><p>My motivation for building this was from part of my day job -- I often get Windows MSI installers and need to extract files while preserving the relative directory structure and filenames, as they would appear after a full installation. The existing tools I found were good but limited in which platforms they support: lessmsi works great on Windows, while msitools works for Linux/macOS. Neither is a truly cross-platform solution that works on any major OS.<p>So we developed pymsi (a pure Python library, available on GitHub at <a href="https://github.com/nightlark/pymsi">https://github.com/nightlark/pymsi</a>) to handle reading and extracting MSI files from Python. Then I realized that since pymsi has no native dependencies, it could potentially run in a web browser using Pyodide. After a bit of "vibe coding" and fixing some "hallucinated" functions/classes that don't exist in pymsi, the result was this client-side web app.<p>If you need an MSI file to experiment with, older versions of PowerToys included the installer in .msi form, such as this one: <a href="https://github.com/microsoft/PowerToys/releases/download/v0.21.1/PowerToysSetup-0.21.1-x64.msi">https://github.com/microsoft/PowerToys/releases/download/v0....</a><p>Note that the underlying pymsi library hasn't been extensively tested against a bunch of MSI installers yet, so there might still be lingering bugs. If you come across any issues, please don't hesitate to report them in on the GitHub repository (<a href="https://github.com/nightlark/pymsi/issues">https://github.com/nightlark/pymsi/issues</a>).<p>I'd love to hear your feedback and answer any questions!
Show HN: SnapQL – Desktop app to query Postgres with AI
SnapQL is an open-source desktop app (built with Electron) that lets you query your Postgres database using natural language. It’s schema-aware, so you don’t need to copy-paste your schema or write complex SQL by hand.<p>Everything runs locally — your OpenAI API key, your data, and your queries — so it's secure and private. Just connect your DB, describe what you want, and SnapQL writes and runs the SQL for you.
Show HN: SnapQL – Desktop app to query Postgres with AI
SnapQL is an open-source desktop app (built with Electron) that lets you query your Postgres database using natural language. It’s schema-aware, so you don’t need to copy-paste your schema or write complex SQL by hand.<p>Everything runs locally — your OpenAI API key, your data, and your queries — so it's secure and private. Just connect your DB, describe what you want, and SnapQL writes and runs the SQL for you.
Show HN: Nxtscape – an open-source agentic browser
Hi HN - we're Nithin and Nikhil, twin brothers and founders of nxtscape.ai (YC S24). We're building Nxtscape ("next-scape") - an open-source, agentic browser for the AI era.<p>-- Why bother building a new browser?
For the first time since Netscape was released in 1994, it feels like we can reimagine browsers from scratch for the age of AI agents. The web browser of tomorrow might not look like what we have today.<p>We saw how tools like Cursor gave developers a 10x productivity boost, yet the browser—where everyone else spends their entire workday—hasn't fundamentally changed.<p>And honestly, we feel like we're constantly fighting the browser we use every day. It's not one big thing, but a series of small, constant frustrations. I'll have 70+ tabs open from three different projects and completely lose my train of thought. And simple stuff like reordering tide pods from amazon or filling out forms shouldn't need our full attention anymore. AI can handle all of this, and that's exactly what we're building.<p>Here’s a demo of our early version <a href="https://dub.sh/nxtscape-demo" rel="nofollow">https://dub.sh/nxtscape-demo</a><p>-- What makes us different
We know others are exploring this space (Perplexity, Dia), but we want to build something open-source and community-driven. We're not a search or ads company, so we can focus on being privacy-first – Ollama integration, BYOK (Bring Your Own Keys), ad-blocker.<p>Btw we love what Brave started and stood for, but they've now spread themselves too thin across crypto, search, etc. We are laser-focused on one thing: making browsers work for YOU with AI. And unlike Arc (which we loved too but got abandoned), we're 100% open source. Fork us if you don't like our direction.<p>-- Our journey hacking a new browser
To build this, we had to fork Chromium. Honestly, it feels like the only viable path today—we've seen others like Brave (started with electron) and Microsoft Edge learn this the hard way.<p>We also started with why not just build an extension. But realized we needed more control. Similar to the reason why Cursor forked VSCode. For example, Chrome has this thing called the Accessibility Tree - basically a cleaner, semantic version of the DOM that screen readers use. Perfect for AI agents to understand pages, but you can't use it through extension APIs.<p>That said, working with the 15M-line C++ chromium codebase has been an adventure. We've both worked on infra at Google and Meta, but Chromium is a different beast. Tools like Cursor's indexing completely break at this scale, so we've had to get really good with grep and vim. And the build times are brutal—even with our maxed-out M4 Max MacBook, a full build takes about 3 hours.<p>Full disclosure: we are still very early, but we have a working prototype on GitHub. It includes an early version of a "local Manus" style agent that can automate simple web tasks, plus an AI sidebar for questions, and other productivity features (grouping tabs, saving/resuming sessions, etc.).<p>Looking forward to any and all comments!<p>You can download the browser from our github page: <a href="https://github.com/nxtscape/nxtscape">https://github.com/nxtscape/nxtscape</a>
Show HN: Nxtscape – an open-source agentic browser
Hi HN - we're Nithin and Nikhil, twin brothers and founders of nxtscape.ai (YC S24). We're building Nxtscape ("next-scape") - an open-source, agentic browser for the AI era.<p>-- Why bother building a new browser?
For the first time since Netscape was released in 1994, it feels like we can reimagine browsers from scratch for the age of AI agents. The web browser of tomorrow might not look like what we have today.<p>We saw how tools like Cursor gave developers a 10x productivity boost, yet the browser—where everyone else spends their entire workday—hasn't fundamentally changed.<p>And honestly, we feel like we're constantly fighting the browser we use every day. It's not one big thing, but a series of small, constant frustrations. I'll have 70+ tabs open from three different projects and completely lose my train of thought. And simple stuff like reordering tide pods from amazon or filling out forms shouldn't need our full attention anymore. AI can handle all of this, and that's exactly what we're building.<p>Here’s a demo of our early version <a href="https://dub.sh/nxtscape-demo" rel="nofollow">https://dub.sh/nxtscape-demo</a><p>-- What makes us different
We know others are exploring this space (Perplexity, Dia), but we want to build something open-source and community-driven. We're not a search or ads company, so we can focus on being privacy-first – Ollama integration, BYOK (Bring Your Own Keys), ad-blocker.<p>Btw we love what Brave started and stood for, but they've now spread themselves too thin across crypto, search, etc. We are laser-focused on one thing: making browsers work for YOU with AI. And unlike Arc (which we loved too but got abandoned), we're 100% open source. Fork us if you don't like our direction.<p>-- Our journey hacking a new browser
To build this, we had to fork Chromium. Honestly, it feels like the only viable path today—we've seen others like Brave (started with electron) and Microsoft Edge learn this the hard way.<p>We also started with why not just build an extension. But realized we needed more control. Similar to the reason why Cursor forked VSCode. For example, Chrome has this thing called the Accessibility Tree - basically a cleaner, semantic version of the DOM that screen readers use. Perfect for AI agents to understand pages, but you can't use it through extension APIs.<p>That said, working with the 15M-line C++ chromium codebase has been an adventure. We've both worked on infra at Google and Meta, but Chromium is a different beast. Tools like Cursor's indexing completely break at this scale, so we've had to get really good with grep and vim. And the build times are brutal—even with our maxed-out M4 Max MacBook, a full build takes about 3 hours.<p>Full disclosure: we are still very early, but we have a working prototype on GitHub. It includes an early version of a "local Manus" style agent that can automate simple web tasks, plus an AI sidebar for questions, and other productivity features (grouping tabs, saving/resuming sessions, etc.).<p>Looking forward to any and all comments!<p>You can download the browser from our github page: <a href="https://github.com/nxtscape/nxtscape">https://github.com/nxtscape/nxtscape</a>
Show HN: I made an app that lets you save audio to your Cameral Roll
...because Apple make it too hard to navigate chronologically through anything but your photos. Really they should have let you do this directly from voice memos so that you can share whenever and to wherever you want.<p>If anyone has any suggestions to make it better, let me know. Thanks.
Show HN: EnrichMCP – A Python ORM for Agents
I've been working with the Featureform team on their new open-source project, [EnrichMCP][1], a Python ORM framework that helps AI agents understand and interact with your data in a structured, semantic way.<p>EnrichMCP is built on top of [MCP][2] and acts like an ORM, but for agents instead of humans. You define your data model using SQLAlchemy, APIs, or custom logic, and EnrichMCP turns it into a type-safe, introspectable interface that agents can discover, traverse, and invoke.<p>It auto-generates tools from your models, validates all I/O with Pydantic, handles relationships, and supports schema discovery. Agents can go from user → orders → product naturally, just like a developer navigating an ORM.<p>We use this internally to let agents query production systems, call APIs, apply business logic, and even integrate ML models. It works out of the box with SQLAlchemy and is easy to extend to any data source.<p>If you're building agentic systems or anything AI-native, I'd love your feedback. Code and docs are here: <a href="https://github.com/featureform/enrichmcp">https://github.com/featureform/enrichmcp</a>. Happy to answer any questions.<p>[1]: <a href="https://github.com/featureform/enrichmcp">https://github.com/featureform/enrichmcp</a><p>[2]: <a href="https://modelcontextprotocol.io/introduction" rel="nofollow">https://modelcontextprotocol.io/introduction</a>
Show HN: EnrichMCP – A Python ORM for Agents
I've been working with the Featureform team on their new open-source project, [EnrichMCP][1], a Python ORM framework that helps AI agents understand and interact with your data in a structured, semantic way.<p>EnrichMCP is built on top of [MCP][2] and acts like an ORM, but for agents instead of humans. You define your data model using SQLAlchemy, APIs, or custom logic, and EnrichMCP turns it into a type-safe, introspectable interface that agents can discover, traverse, and invoke.<p>It auto-generates tools from your models, validates all I/O with Pydantic, handles relationships, and supports schema discovery. Agents can go from user → orders → product naturally, just like a developer navigating an ORM.<p>We use this internally to let agents query production systems, call APIs, apply business logic, and even integrate ML models. It works out of the box with SQLAlchemy and is easy to extend to any data source.<p>If you're building agentic systems or anything AI-native, I'd love your feedback. Code and docs are here: <a href="https://github.com/featureform/enrichmcp">https://github.com/featureform/enrichmcp</a>. Happy to answer any questions.<p>[1]: <a href="https://github.com/featureform/enrichmcp">https://github.com/featureform/enrichmcp</a><p>[2]: <a href="https://modelcontextprotocol.io/introduction" rel="nofollow">https://modelcontextprotocol.io/introduction</a>
Show HN: EnrichMCP – A Python ORM for Agents
I've been working with the Featureform team on their new open-source project, [EnrichMCP][1], a Python ORM framework that helps AI agents understand and interact with your data in a structured, semantic way.<p>EnrichMCP is built on top of [MCP][2] and acts like an ORM, but for agents instead of humans. You define your data model using SQLAlchemy, APIs, or custom logic, and EnrichMCP turns it into a type-safe, introspectable interface that agents can discover, traverse, and invoke.<p>It auto-generates tools from your models, validates all I/O with Pydantic, handles relationships, and supports schema discovery. Agents can go from user → orders → product naturally, just like a developer navigating an ORM.<p>We use this internally to let agents query production systems, call APIs, apply business logic, and even integrate ML models. It works out of the box with SQLAlchemy and is easy to extend to any data source.<p>If you're building agentic systems or anything AI-native, I'd love your feedback. Code and docs are here: <a href="https://github.com/featureform/enrichmcp">https://github.com/featureform/enrichmcp</a>. Happy to answer any questions.<p>[1]: <a href="https://github.com/featureform/enrichmcp">https://github.com/featureform/enrichmcp</a><p>[2]: <a href="https://modelcontextprotocol.io/introduction" rel="nofollow">https://modelcontextprotocol.io/introduction</a>
Show HN: A DOS-like hobby OS written in Rust and x86 assembly
To try it out, simply build the project yourself from source, or use attached bootable ISO image of the system (in Releases on Github) and run it in QEMU.<p><a href="https://blog.vxn.dev/rou2exos-rusted-edition" rel="nofollow">https://blog.vxn.dev/rou2exos-rusted-edition</a>
Show HN: A DOS-like hobby OS written in Rust and x86 assembly
To try it out, simply build the project yourself from source, or use attached bootable ISO image of the system (in Releases on Github) and run it in QEMU.<p><a href="https://blog.vxn.dev/rou2exos-rusted-edition" rel="nofollow">https://blog.vxn.dev/rou2exos-rusted-edition</a>
Show HN: Claude Code Usage Monitor – real-time tracker to dodge usage cut-offs
I kept slamming into Claude Code limits mid-session and couldn’t find a quick way to see how close I was getting, so I hacked together a tiny local tracker.<p>Streams your prompt + completion usage in real time<p>Predicts whether you’ll hit the cap before the session ends<p>Runs 100 % locally (no auth, no server)<p>Presets for Pro, Max × 5, Max × 20 — tweak a JSON if your plan’s different<p>GitHub: <a href="https://github.com/Maciek-roboblog/Claude-Code-Usage-Monitor">https://github.com/Maciek-roboblog/Claude-Code-Usage-Monitor</a><p>It’s already spared me a few “why did my run just stop?” moments, but it’s still rough around the edges. Feedback, bug reports, and PRs welcome!
Show HN: Claude Code Usage Monitor – real-time tracker to dodge usage cut-offs
I kept slamming into Claude Code limits mid-session and couldn’t find a quick way to see how close I was getting, so I hacked together a tiny local tracker.<p>Streams your prompt + completion usage in real time<p>Predicts whether you’ll hit the cap before the session ends<p>Runs 100 % locally (no auth, no server)<p>Presets for Pro, Max × 5, Max × 20 — tweak a JSON if your plan’s different<p>GitHub: <a href="https://github.com/Maciek-roboblog/Claude-Code-Usage-Monitor">https://github.com/Maciek-roboblog/Claude-Code-Usage-Monitor</a><p>It’s already spared me a few “why did my run just stop?” moments, but it’s still rough around the edges. Feedback, bug reports, and PRs welcome!
Show HN: I wrote a new BitTorrent tracker in Elixir
Hello everyone!<p>I'm currently in a journey to learn and improve my Elixir and Go skills (my daily job uses C++) and looking through my backlog for projects to take on I decided Elixir is the perfect language to write a highly-parallel BitTorrent tracker.
So I have spent my free time these last 3 months writing one! Now I think it has enough features to present it to the world (and a docker image to give it a quick try).<p>I know some people see trackers as relics of the past now that DHT and PEX are common but I think they still serve a purpose in today's Internet (purely talking about public trackers). That said there is not a lot going on in terms of new developments since everyone just throws opentracker in a vps a calls it a day (honorable exceptions: aquatic and torrust).<p>I plan to continue development for the foreseeable future and add some (optional) esoteric features along the way so if anyone currently operates a tracker please give a try and enjoy the lack of crashes.<p>note: only swarm_printout.ex has been vibe coded, the rest has all been written by hand.
Show HN: I wrote a new BitTorrent tracker in Elixir
Hello everyone!<p>I'm currently in a journey to learn and improve my Elixir and Go skills (my daily job uses C++) and looking through my backlog for projects to take on I decided Elixir is the perfect language to write a highly-parallel BitTorrent tracker.
So I have spent my free time these last 3 months writing one! Now I think it has enough features to present it to the world (and a docker image to give it a quick try).<p>I know some people see trackers as relics of the past now that DHT and PEX are common but I think they still serve a purpose in today's Internet (purely talking about public trackers). That said there is not a lot going on in terms of new developments since everyone just throws opentracker in a vps a calls it a day (honorable exceptions: aquatic and torrust).<p>I plan to continue development for the foreseeable future and add some (optional) esoteric features along the way so if anyone currently operates a tracker please give a try and enjoy the lack of crashes.<p>note: only swarm_printout.ex has been vibe coded, the rest has all been written by hand.