It's a sandbox that you can embed ala the sqlite of VM's.
1,109 karma · joined October 1, 2019
It's a sandbox that you can embed ala the sqlite of VM's.
I found `This is measured agreement, not a promise of universal bitwise equivalence` which seems to me a bit wishy washy
We should have enough distaste for them all
So there's the usual structure of "it's not x it's actually y" signs.
Docker shares the host kernel + networking stack, so container traffic goes through the host's iptables. So if you're running into some weirdness because of that, happy to help if you can share your setup details.
disclosure: dealt with container weirdness for last 5 years, nothing to sell.
slim, fast, microvm that runs on every platform.
disclaimer: am author
As for the rug pull concern, I'm committed to open source with 2 pieces of evidence.
1. oss license 2. Business model is accruing revenue from offering hosted service + inbound due to the open source project. The business model + open source is aligned.
disclaimer: maintainer of smol machines
Size is not a good indicator for content quality
I found that seems like anything under /mnt/c goes through 9P
Memorized IP: doesn't work, the vm can only connect to an IP if it came from a DNS lookup of an allowed name. Any other IP is blocked.
A bit of "shared responsibility" philosophy kicking through but I try to have good defaults
I'd also add that MXC is still sharing the host kernel.
i.e. on mac MXC uses seatbelt, so the agent shares your kernel.
but smolvm gives each task its own VM with its own kernel, same on mac, linux and windows. + additional layers like preconfigured seccomp, landlock, wherever it makes sense
smol machines actually support exactly those things across macs,linux, windows btw: https://github.com/smol-machines/smolvm/blob/main/AGENTS.md#...
here's a snippet of how it looks like to configure that:
[network]
allow_hosts = ["api.github.com"] # hostname, also allows its subdomains
allow_host_patterns = ["example.com", "*.npmjs.org"] # exact names, or *. for subdomains only
allow_cidrs = ["10.0.0.0/8", "1.1.1.1"] # IP ranges or single IPs
[[network.credentials]]
name = "github"
environment_variable = "GITHUB_TOKEN"I focus on being the batteries-included approach for microVMs. So network is off by default, and you can allow specific hosts (DNS is filtered too), so an agent can reach its model API and nothing else.
And then I also put a lot of work in the jailer-style hardening around the VMM process itself: seccomp allowlist, Landlock, separate unprivileged uid per VM, and cgroup limits.
So that users have security & knobs right out of the box.
fwiw i used to operate an AWS service using firecracker.
Because the current needs are extremely lightweight and isolated environments i.e. vm per workload rather than shared.
And there's been a lot of wonderful innovations happen there
Even the same old games are still there
Firecracker has a long track record but has a lot of knobs and tunings to get the security right.
smolvm's serve mode confines each VMM by default with a seccomp allowlist, Landlock, a per-VM uid and no_new_privs, much like Firecracker's jailer.
For dangerous workloads, people can do the same things such as skip host mounts and use virtio-net.
It's not a different security class just because it's libkrun vs firecracker
containers are built on linux primitives & so shares the kernel.