dbmikus
Joined 11 years ago
Joined 11 years ago
I don't know too much about hardware simulation. How much of the simulation is deterministic, versus probabilistic or ML based?
Funny story: I worked at a company where someone had the Chrome extension that replaced "cloud" with "butt". They were editing one of the company's docs pages, and when they hit "save" it swapped "cloud" to "butt" everywhere in the page.
They didn't notice right away, because the "butt" translation didn't run on WYSIWYG preview, so everything looked fine.
I have a media server I run on a spare desktop, and at one point was messing around with https://syncthing.net/ for a self-hosted form of Dropbox. More recently, I'm using a VPS to run some internet scraping jobs for things I want to monitor, like apartment listings in NYC (where I live).
Of course, I also use this to run long-running cloud coding agents! Basically exactly what DHH's AI shed is. You need something stronger than $5-$10 / month VPS. I connect with https://herdr.dev/ for persistence
Because of how relevant the "AI shed" concept is, I would be remiss to mention my startup: https://www.amika.dev/
Amika lets you turn any computer into an always-on, network-connectable, AI shed. It's not ready for primetime quite yet (beta launching soon), but I use it for all my dev work
It's partially open source, which is here: https://github.com/gofixpoint/amika
However, for ease of use, it is nice for harnesses to by default run with sane and safe sandboxing setup. Then give the option to disable them.
Cursory research with AI says
> ~3 clearly documented, publicly demonstrated full escapes directly through KVM kernel code over roughly 15+ years of widespread KVM deployment
Surely, there are more, but we could formally verify the correctness of the entire codebase, with the help of AI.
Then we'd have "jails" that work, as long as you don't connect them to the internet.
If you had a super smart AI, you could then totally airgap it if you wanted to.
Networking opens up a can of worms and there won't be zero vulnerabilities, but we can design safer software.
These cloud agents work as cloud infra, but we're kind of in the mainframe era, before personal computing. Personal OS for agents is somewhere in the future!
And an interesting extension of that idea: if an agent runs inside a microVM, can you have that VM transparently run on another host? Maybe we'll get for-real distributed and networked operating systems
Ultimately, we need better "jails" for agent processes, but the system primitives should be flexible in what can be exposed across jails. Or you could run multiple agents in the same jail if you want them to have unrestricted interaction with each other.
1. a VMM hypervisor
2. a network proxy / gateway
Use your favorite VMM / hypervisor (likbrun, smolvm, microsandbox, etc). They give you control over the network interface or let you inject your own network layer.The network proxy can handle all the ingress/egress rules, credential injection, etc.
It's still not user friendly to do all this. I think the next version of operating systems will have each "agentic process" be a bundle of VM, files in the VM, and network rules.
Been brainstorming[1] a lot of this because I've been building some open core tools[2] for spinning up sandboxed agents on arbitrary computers. There's a lot of glue and parts to stitch together to work smoothly. Don't think we've had the "Docker moment" for this, let alone the "Dropbox moment" that makes this stuff work for non-devs.
[1]: https://github.com/gofixpoint/amika/blob/main/ROADMAP.md
That said, most of the time, I only want an agent to work in one repo. I could give it multiple repos at once and instruct it to work in just one, but that risks it forgetting my instructions and it can load more context into the agent's window.
I think my main point was to have flexibility about the topology of VMs, repos, and agents.
But for most things, I find resuming with memory is more trouble than it's worth. If you always resume from memory, you lose the ability to control the state of a VM. It's much easier to define which services should run than to define which active RAM state should be purged
Similar to why "did you try turning it on and off again?" is good for system reliability.
A standalone machine is nice if you need more compute resources or if you want an always-on machine you can connect to from your laptop, phone, etc.
It doesn't look like Google's AX is quite the plug-and-play fit for running agents on a computer you own, since it requires setting up a K8S cluster, etc.
I think what's needed is something like a zero-setup combo of Tailscale and Firecracker
I'm trying to work towards that with my startup (https://github.com/gofixpoint/amika) but the bring-your-own-computer part doesn't work quite yet.
IMO, you want the flexibility to create either: (a) permanent devbox VMs, and (b) per-task VMs
Agent sandbox platforms tend to be tuned for the latter, which sometimes involves VMM hackery for fast boot, snapshotting VM filesystem and RAM, etc.
Some workflows are a lot simpler if the multiple agents share a VM. These are workflows where agents must share state. A simple one we have: making related changes in our public OSS repo and our private repo, and then testing the change.
And other times you want to split up the tasks onto isolated VMs so they don't interfere with each other (ie run two dev servers without database or port collisions).
I tweeted a bit about this (https://x.com/dbmikus/status/2099264325231771878) and had a little debate with folks about ephemeral vs persistent VMs for agents
YC S22 + F25 alum
email me: dylan+hn [at] amika.dev
[ my public key: https://keybase.io/dbmikus; my proof: https://keybase.io/dbmikus/sigs/hKAT57HrL4WNrtLuYDHaD10eRu99ZJiCylweoAKoGx4 ]
YC Badge: 0x00c0b5e3efeab93cdadd4b5136d53985e6dd303f