I don't know too much about hardware simulation. How much of the simulation is deterministic, versus probabilistic or ML based?
732 karma · joined July 30, 2015
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
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
We're working on a "bring your own computer" feature which lets you take a spare Mac and slice it up into devbox VMs you can access from the cloud.
We could also integrate https://limrun.com/ as a simulator for xcode, etc on top of Amika VMs
(A) it furthers human knowledge
(B) it gets used in applied sciences, engineering, etc.
If you merge and deploy code, you have released a tool that can be used. If you ship a gibberish math proof, it's not useful unless someone else can understand and deploy it to some other means. Now, it's possible AI could understand and make use of the math proofs, even if we can't, which refutes some of my hair splitting :) 1. proof that there is a solution
2. a solution that you can work backwards from to build understanding
Maybe the solution is pretty inscrutable, but it's almost always better than nothing.So, both of these pieces of info would be at least marginally useful for advancing human knowledge.
I'm working on exactly this bit (with some more tuning for messaging AI agents)
https://github.com/gofixpoint/amika
Doesn't run on your Mac Mini yet, but should get that enabled either this week or next
If you sign up (free) I'll send you an email when the "Mac Mini mode + full OSS self-hosting" is live
1. auto-refresh base VM snapshots with latest delta of git commit changes
2. extend the VM lifetime when it receives an interaction (chat, HTTP request, etc.) and sleep it when inactive
3. oauth refresh of MCP servers, coding agent subscriptions, etc.
4. support inter-VM and communication for agents and exec commands
5. keeping track of agent work across VMs
That said, I think it's important to not hide the VM and computer from the agents. The user should have total control to put 1 or more agents on a VM, to make VMs ephemeral or permanent, to manage the network access of VMs, etc. It's basically a networking + VM scheduling problem, for which there's a ton of prior art since the 90s (or earlier).A few examples:
Many remote agents products have a "one agent per VM" restriction, but it's better to have N agents across M VMs. For example, I have agents work on a singular VM in parallel worktrees and then stack the worktrees at the end on that VM for the final change.
Just give me OpenSSH with normal SSH key management. Lets you manage VM access the same way we've done it since the 90s.
Connect VMs in a network topology: we build our VM/agent scheduling + remote control product inside itself, so we often test interactions between user, control plane, and sandbox(es). If you can directly control VM creation and lifecycle, it's easy to spin this structure up and let agents work across it.
I should be able to use whichever coding agents I want, connected to the VM. Whether that's OpenCode or Pi Web in the browser, or loading the VM into Cursor or Codex app, or using the TUI or sending messages to agent(s) via API.
1. You can run sandboxes locally
2. You can control them securely over the internet, for when you're on the go
3. You can migrate them to cloud VMs if you want
If I can toot my own horn, I'm trying to build that :)Still early and the local sandboxes are experimental right now
My startup (https://github.com/gofixpoint/amika) copies agent configs into local or cloud sandboxes
We run OpenCode currently, but need to improve the setup for users, so would like understand more of the issues you have sandboxing it, if you can share
The definition for your cloud sandboxes is just a TOML config in your repo
We also have an API and CLI to let users message the agent from outside or across sandboxes
We're still building a lot, so if you have any time to try it out (amika.dev) and give feedback, that is worth gold to us!
We run cloud sandboxes, and have some experimental local sandbox support that is fully OSS.
Main thing for amika.dev is you can control the sandboxes and agents interchangeabley by SSH, web, or API, and can expose the services the agent is working on over signed URLs
Entire sandbox config is a TOML file
We're going to improve the local OSS sandbox mode and add better network controls over the next couple weeks.
Ultimately, what we're building kind of like if Tailscale and Firecracker had a baby, with a messaging protocol for remote controlling any sandboxed agent
It's free to try out. Still a lot to build, so we really appreciate any and all feedback about what we should focus on