It's trivial to build a wrapper script to emulate `claude -p` with full PTY without Claude knowing. Good old screen scraping to the rescue.
This new cat and mouse game is perhaps a sign of the times...
HN user
business problem solver, product engineer, systems architect.
available for hire.
email: amir@amirmalik.net
web: https://amirmalik.net / https://www.pilvy.com
It's trivial to build a wrapper script to emulate `claude -p` with full PTY without Claude knowing. Good old screen scraping to the rescue.
This new cat and mouse game is perhaps a sign of the times...
staring at a wall is basically the zen practice of shikantaza [1], except you’re not staring, it’s more of an eyes half closed yet alert gaze. you don’t do anything, not even counting the breath. you just sit, that’s the entire practice. in my experience, the more you intellectualize it, the more difficult it becomes!
Securely runs root-level commands via a dedicated macOS Launch Daemon
lovely.
you know how we have the showdead? how about adding a couple of new ones:
hidekarma: hide accounts below certain karma threshold
hideage: hide accounts newer than 1 week/1 month/6 months
these should be opt-in. people that care can turn them on.
honest question: what use case requires cold starts below 100ms, considering TTFT of major LLMs are in the 300+ms range? presumably sandbox will be driven by an agentic loop, so.. you’re still bottlenecked by what essentially amounts to network I/O.
I don't get it. You mention being able to choose your own JS engine, so it's not using Wasmer's WebAssembly implementation but that of the chosen JS engine's? In other words, can Edge.js use Wasmer? Or have you managed to compile V8/JSC into WebAssembly and are executing it with Wasmer? If so, amazing!
I'm also finding it difficult to think of things to do
Why do you need things to do?
Meditate on this. Everything else is noise.
# WRONG: Elixir has no elsif
How much context is eaten up by skills that rehash what a SOTA model should already know?
Maybe token-wise, it's a wash: Elixir/OTP does a lot without third-party libs, which would require massive npm dependencies to achieve the same thing.
When you have a hammer, everything looks like a nail. Ad nauseam.
AI has made it possible for me to build several one-off personal tools in the matter of a couple of hours and has improved my non-tech life as a result. Before, I wouldn't even have considered such small projects because of the effort needed. It's been relieving not to have to even look at code, assuming you can describe your needs in a good prompt. On the other hand, I've seen vibe coded codebases with excessive layers of abstraction and performance issues that came from a possibly lax engineering culture of not doing enough design work upfront before jumping into implementation. It's a classic mistake, that is amplified by AI.
Yes, average code itself has become cheap, but good code still costs, and amazing code, well, you might still have an edge there for now, but eventually, accept that you will have to move up the abstraction stack to remain valuable when pitted against an AI.
What does this mean? Focus on core software engineering principles, design patterns, and understanding what computer is doing at a low level. Just because you're writing TypeScript doesn't mean you shouldn't know what's happening at the CPU level.
I predict the rise in AI slop cleanup consultancies, but they'll be competing with smarter AIs who will clean up after themselves.
https://amirmalik.net - I haven't blogged in a while, but have been experimenting with single-file build-step-free HTML tools (inspired by simonw's tool catalog) at https://amirmalik.net/tools -- I'm hoping to add more "bring your own API key" local-first mini tools that store their data in IndexedDB or OPFS and sync. I should probably write a post about it :)
I've built the same thing twice, first with Firecracker microVM, and second time using containers (gVisor).
While the microVM route is more secure, it's more complicated and ops are tricky, but you can do some cool things to optimize startup time like when I was working on a function as a service platform, and to reduce TTFB, I trapped the `listen()` call, sent a VSOCK message to the VMM to trigger a freeze, snapshot the VM and save it as a "template". Then for every request, the snapshot was cloned (with some file system tricks like CoW) and resumed to handle the request. It "just" worked, but the orchestration was kludgy.
In the second incarnation of this, I decided to use Linux containers with the gVisor sandbox. You can take a look at my project https://github.com/ammmir/sandboxer which uses Podman and gVisor underneath; it's good enough for a prototype. Later on, you can swap it out with Firecracker microVM, if necessary. In fact, I'm thinking of adding microVM support to sandboxer itself. If you wanted to do it yourself, swap out ContainerEngine() with a new implementation based on calling out to Firecracker. You'll need some way to do disk volume management (grow, clone, shared, cross-machine? good luck!), snapshots, etc.
what is the connection with SCSI?
SEEKING WORK | Bangkok, Thailand | REMOTE (APAC timezone)
Hi, I'm a seasoned software professional with 15+ years of experience across the stack, from low-level systems and protocols to web and mobile apps to DevOps CI/CD pipeline engineering to modern AI/LLM/agentic workflows. I like solving real business problems using stable and proven tools, as well as prototyping ideas, so whether you're looking to build a v1 of your product, a DevOps engineer, or looking for a CTO for a more established org, please reach out!
Technologies: TypeScript, Python, Go, JavaScript, Rust, Lua, Next.js, OpenResty, Nginx, PHP, Docker, Podman, CRIU, Linux namespaces, Firecracker, Express, Deno, Bun, Node.js, HTTP, X.509, TLS/SSL, SMTP, OAuth, OIDC, JWT, PostgreSQL, SQLite, Redis, MySQL, AI agents, LLM, RAG, vector databases, FastAPI, MCP, Streamlit, ELK, Terraform, OpenTelemetry
Résumé/CV: https://amirmalik.net/resume
Email: amir@amirmalik.net
Location: Bangkok, Thailand
Remote: Yes
Willing to relocate: No
Technologies: TypeScript, Python, Go, Rust, Lua, JavaScript, Next.js, OpenResty, Nginx, PHP, Docker, Podman, CRIU, Linux namespaces, Firecracker, Express, Deno, Bun, Node.js, HTTP, X.509, TLS/SSL, SMTP, OAuth, OIDC, JWT, PostgreSQL, SQLite, Redis, MySQL, AI agents, LLM, RAG, vector databases, FastAPI, MCP, Streamlit, ELK, Terraform, OpenTelemetry, DevOps
Résumé/CV: https://amirmalik.net/resume
Email: amir@amirmalik.net
Hey HN! I'm a seasoned software professional with 15+ years of experience across the stack, from low- level systems and protocols to web and mobile apps to modern AI/LLM/agentic workflows. I like solving real business problems using stable and proven tools, as well as prototyping ideas, so whether you're looking to build a v1 of your product or looking for a CTO for a more established org, please reach out!
P.S. If you want a taste of how I think/work, check out this blog post I wrote on building secure code sandboxes for LLM agents: https://amirmalik.net/2025/03/07/code-sandboxes-for-llm-ai-a... -- also, a I open-sourced a more advanced sandbox server: https://github.com/ammmir/sandboxer
I was using Zed up until a few months ago. I got fed up with the entire AI panel being an editable area, so sometimes I ended up clobbering it. I switched to Cursor, but now I don't "trust" the the editor and its undo stack, I've lost code as a result of it, particularly when you're in mid-review of an agentic edit, but decide to edit the edit. The undo/redo gets difficult to track, I wish there was some heirarchical tree view of history.
The restore checkpoint/redo is too linear for my lizard brain. Am I wrong to want a tree-based agentic IDE? Why has nobody built it?
Two months ago, I started exploring how LLMs can securely run arbitrary code. Since then, we've seen Manus and others build code inside sandboxes and I believe there are some YC startups in this space, too! I wrote a blog post [1] about building a simplistic version of this using Jupyter Notebook, but since then I've built a fully open source sandboxing server with more ergonomic HTTP endpoints (MCP should be next I guess?) and a half-decent UI for humans (see the demo video in the README).
A novel concept that I haven't seen implemented properly yet, perhaps useful for AI coding agents, is that a sandbox can be forked at any point. Similar to how you can fork a PostgreSQL database, you can fork a sandbox, which creates an independent sandbox with all of the changes in it. Technically, I tried to implement this with checkpoint/restore using CRIU, but ran into some issues with nesting beyond 2 levels deep and custom user namespaces for security. And it was difficult to use get CRIU to work with Linux programs that use shared memory segments, and other Unixy things. I ended up switching to file system diffs and using reflinks on XFS to get some Copy-on-Write semantics.
Features:
* Automatic HTTPS with unique URL per sandbox (no need to deal with ingresses or exposing ports)
* Static token auth or GitHub app auth
* Built-in UI
* Multi-tenant ready: each user gets their own network
* List, download, and upload files into sandboxes
* Fork sandboxes to create arbitrary depths of clones
It's still in early stages, but it should be usable. I'd love your feedback and ideas on where to take this :) Personally, I want to use this as a code execution backend for local AI agents.
[1] https://amirmalik.net/2025/03/07/code-sandboxes-for-llm-ai-a...
Location: Bangkok, Thailand
Remote: Yes (unless local to BKK, or somewhere nearby like Singapore)
Willing to relocate: No
Technologies: TypeScript, Python, Go, Rust, Lua, JavaScript, Next.js, OpenResty, Nginx, PHP, Docker, Podman, CRIU, Linux namespaces, Firecracker, Express, Deno, Bun, Node.js, HTTP, X.509, TLS/SSL, SMTP, OAuth, OIDC, JWT, PostgreSQL, SQLite, Redis, MySQL, AI agents, LLM, RAG, vector databases, FastAPI, MCP, Streamlit, ELK, Terraform, OpenTelemetry, DevOps
Résumé/CV: https://amirmalik.net/resume
Email: amir@amirmalik.net
Hey HN! I'm a seasoned software professional with 15+ years of experience across the stack, from low-level systems and protocols to web and mobile apps to modern AI/LLM/agentic workflows. I like solving real business problems using the latest tools, without introducing too many shiny new toys.
If you want a taste of how I think and work, check out this blog post I wrote on building secure code sandboxes for LLM agents: https://amirmalik.net/2025/03/07/code-sandboxes-for-llm-ai-a... -- also, I'm building a self-hostable, open-source sandboxing server based: https://github.com/ammmir/sandboxer -- Show HN coming soon!
I'm looking for short-term consulting gigs (open to long-term), so whether you're looking to prototype something new in order to catch the AI hype train, or something more traditional, please reach out ASAP!
Last month, I started playing around with code sandboxes and how LLMs might interface with them and wrote a little blog post about it [1]. I then took the code and vibe coded my way to a multi-tenant (untested!) sandboxing server that lets you run arbitrary Docker containers and provides a simple HTTP interface and UI. A cute, novel idea is that you can fork containers easily, as seen in the video in my repo:
https://github.com/ammmir/sandboxer
It may not be useful, but it's been fun, and I've honed my gut-level experience in Docker, Podman, Linux namespaces, Checkpoint/Restore, CRIU, and more. The ultimate goal is to hand each AI agent iteration a sandbox of its own (forked from the previous iteration), and have it build apps in private sandboxes. You'll be able to view intermediate progress as the app is being built (or failed rabbit holes), since each sandbox gets a unique URL automatically. Like, imagine if each commit of your git repo had its own URL to preview the app!
[1] https://amirmalik.net/2025/03/07/code-sandboxes-for-llm-ai-a...
Yeah, I always thought MCP was a bit verbose. It reminds me of the WSDL and SOAP mess of the 2000s. Model tool calls are just RPCs into some other service, so JSON-RPC makes sense. Is there anything else has wide adoption and good client support? XML-RPC? gRPC? Protobufs? I mean, it shouldn't need extra libraries to use. You can handroll a JSON-RPC request/response pretty easily from any programming language.
Regarding the verbosity, yeah, it's interesting how model providers make more money from more tokens used, and you/we end up paying for it somehow. When you're doing lots of tool calls, it adds up!
thanks for the link, Sydbox seems like a super cool project, but there's something weird about it: too many links in the README. not on GitHub, and the project that's on GitHub with a similar name hasn't had a commit in 16 years, is it by the same person?
if they can polish up the public facing side of the project, it would instill more confidence.
congrats on the open sourcing and launching! beyond the desire to run VMs in "1 command", i don't quite get the reasoning behind this project. could you elucidate? like, besides running macOS VMs, how is it different from lima, colima, and friends? the name lume is quite unfortunate.
the hard part about running VMs isn't really how to launch them (well, ahem, i'm looking at you, qemu), but getting data in and out, and controlling them. some feature requests, if i may ;)
# take screenshot
# this should do the right thing(TM) and take a screenshot of the logged-in user session, which may not necessarily be the console
lume screenshot <vm name> [-o <file.png> | -]
# execute command
lume exec <vm name> [--as-user <user>] <command> [args]
# copy files in and out
lume cp <vm name>:<vm path> <local path>
lume cp <local path> <vm name>:<vm path>
# run clone as new VM
# this should appropriately roll the MAC address, IPs, and reseed any RNGs, of course
lume run --clone <clone name> <vm name>
Can you clone a VM while it's running?The ability to resume a VM within < 1 second would be useful for on-demand workflows without waiting for a full VM bootup sequence, similar to how you can get a firecracker microVM into the state you want, snapshot it.. then clone as you wish, and resume back into the guest.
You may need to preinstall an agent (a la Parallel/VMware Tools) to make sure this is seamless and fast.
amazing! it seems like much of the innovation on the flight deck is happening in iPad apps.
i'm curious, in the beginning, before you had so many users of the app, how did you convince pilots/airlines to install SkyPath before it had enough user-generated turbulence data for its ML model? it almost feels like a chicken-and-the-egg problem: you need enough reports before it's useful around the world at all imaginable air routes, or maybe there's enough air/wind data. interesting stuff!
thanks for making this. i've spent 5 minutes on this, but haven't been able to get it to work yet, the extension popup's Parse and Extract buttons are grayed out. do i need a sub to try it out?
a few general remarks:
the landing page above-the-fold is just ugly, the color gradient is horrendous, and the top screenshot of a video is... blank. at first i tried to click the play button, but nothing happened. then i realized it's more of an abstract illustration of what you app does. makes sense, but a real video or animation would be even straight to the point. please, wow me!
what is mining? at first, i thought you've created a cryptocurrency. i see it's explained later down the page.
after login, the grammar page doesn't respect the light mode theme. more examples for grammar would be helpful. in fact, what i want is, extract relevant grammar from the CC of YouTube videos in Korean, and then link me to the EXACT TIMESTAMP, so i can hear it in actual use. i would pay for this.
Thanks for the feedback! You're right, there are many assumptions in my head about what the product is intending to be, and looks like I need to be more explicit in the marketing materials :)
Right, it'll be tricky to compete with other SaaS that offer code execution, since they have free tiers and a lot of mindshare already. Other feedback is also hinting that I should focus more on workflows/process automation for non-developer users, rather than code actions. This is the direction I want to go anyway, but I decided to launch with what I have already.
The project term is a bit premature, since I haven't fully finished. Essentially, a separate collection of workflows/jobs, meant for team accounts that can have multiple users.
There's no free tier, but there's free credit on signup so you can try it out without any payment or credit card. Maybe I should have a free tier? My overthinking brain is worried about abuse, but maybe I shouldn't care at this point if nobody is using it yet... :)
The main difference is that ExecAPI is intended for running periodic or triggered background tasks, and you're not limited to JavaScript or Wasm code running on just V8. You can run any Docker container as a background job; mix and match Bash, Python, and Node.js if you like. I would say ExecAPI is closer to a combo of Cloudflare Workers Durable Objects and Queues products, than meant to handle/filter HTTP requests traveling to your origin server.
Code ("actions") run in a Docker container using the gVisor runtime. I'm also toying with using firecracker-containerd, which uses Firecracker microVMs underneath.
It's funny you mention that. A previous "iteration" of this project was an edge function runtime, which would take Docker images and convert them to Firecracker VMs, prebooting them, and taking a snapshot at the right moment using some VSOCK magic. It was similar to Fly.io, Lambda@Edge, etc. and ultimately I decided to go another direction because most people don't care about low-latency compute on the edge.
I never enable push notifications for any websites I visit, but I think, as a developer, it would be interesting to easily add push notifications for internal apps. i.e., stuff that one would use a Slack hook for, I'd rather have a homescreen web "app" that can send pushes natively (albeit via a third-party push broker) rather than having to either build your own native app or use a messaging platform.
Separating out the LSP process from the editor is a good idea. One sure hopes the blast radius is small enough if there’s a vulnerability. My beef is really with the auto-update culture. If I can specify lock files for plugins, it helps, but no way most people are going to have the time or expertise to audit editor plugins.
I guess it’s the classic security vs. UX compromise!
Many of these vim distros (haven’t used AstroNvim specifically) with plug-in managers automatically download and execute random code on your system anytime you start the editor or open a new file type. I just want my own secure config that doesn’t do random network calls when I’m trying to open local files.
Piping shit to bash and running npx whatever has really normalized this and it sucks. Your editor should be a safe haven.
I'm working on ExecAPI - https://execapi.com - a code execution as a service platform, starting with WebAssembly nanoservices, deployed a bit like CGI scripts, but running on the edge, so comparable latency to Cloudflare Workers and Lambda@Edge. Currently thinking about ideas around HTTP-triggered workers, long-running services, web hook handlers, etc. and how we can bring cloud costs down to the bare minimum.
It's more of a fun project right now, but hoping to unearth some marketable use cases and ideas as I go along. I'll do a proper launch in a month or two.
Manually replicating writes to all nodes seems pretty fragile. At some point you're going to run into classic distributed systems issues, like netsplits, and reconciling the latest count. Maybe a CRDT implementation would avoid these issues alltogether?
But it sounds like LiteFS (with a single writer?) might be a pretty nice setup if it handles replication for you, as you probably don't want to build a Raft or Paxos system yourself.