logoalt Hacker News

Show HN: Smol machines – subsecond coldstart, portable virtual machines

285 pointsby binsquareyesterday at 5:18 PM91 commentsview on HN

Comments

binsquareyesterday at 5:22 PM

Hello, I'm building a replacement for docker containers with a virtual machine with the ergonomics of containers + subsecond start times.

I worked in AWS previously in the container space + with firecracker. I realized the container is an unnecessary layer that slowed things down + firecracker was a technology designed for AWS org structure + usecase.

So I ended up building a hybrid taking the best of containers with the best of firecracker.

Let me know your thoughts, thanks!

show 8 replies
gavinrayyesterday at 7:13 PM

The feature that lets you create self-contained binaries seems like a potentially simpler way to package JVM apps than GraalVM Native.

Probably a lot of other neat usecases for this, too

  smolvm pack create --image python:3.12-alpine -o ./python312
  ./python312 run -- python3 --version
  # Python 3.12.x — isolated, no pyenv/venv/conda needed
show 2 replies
mrbluecoatyesterday at 8:24 PM

Can .smolmachine be digitally signed and self authenticate when run? Similar to https://docs.sylabs.io/guides/main/user-guide/signNverify.ht...

cr125rideryesterday at 6:00 PM

Great job with the comparison table. Immediately I was like “neat sounds like firecracker” then saw your table to see where it was similar and different. Easy!

Nice job! This looks really cool

show 1 reply
lambdanodecoreyesterday at 7:20 PM

Basically any open source project nowadays run their software stack in containers often requiring docker compose. Unfortunatley Smol machines do not support Docker inside the microvms and they also do not support nested VMs for things that use Vagrant. I think this is a big drawback.

show 2 replies
chwzryesterday at 10:25 PM

I see the alpine and python:3.12-alpine images in your cli docs. Where does these come from?is it from a docker like registry or are these built in? Can I create my own images? Or this this purely done with the smolfile? Is there a Ubuntu image available?

Looks really nice btw. Hot resize mem/cpu would be nice. This could become a nice tech for a one-backend-per-customer infra orchestrator then.

simonreiffyesterday at 9:33 PM

Hey this is pretty neat! I definitely would try using this for benchmarks and other places where I need strong isolation as Docker is just too bloated and slow, but sadly I don't think I can run this natively on my Windows laptop. I hope you extend to WSL! Good luck and congrats on launch.

show 1 reply
sureglymopyesterday at 10:24 PM

What I really like about containers is quickly being able to spin one up without having to specify resources (e.g. RAM limit). I hope this would let me do that also.

show 1 reply
isterinyesterday at 7:43 PM

We’re using smolmachines to create environments for our agents to execute code. It’s been great so far and the team is super responsive. The dev ergonomics are also great.

show 1 reply
akoenigyesterday at 8:15 PM

smolvm is awesome. The team is highly responsive and very experienced. They clearly know what they’re doing.

I’m currently evaluating smolvm for my project, https://withcave.ai, where I’m using Incus for isolation. The initial integration results look very promising!

show 2 replies
iricktyesterday at 8:44 PM

Is there a relation to the similarly-purposed and similarly-named https://github.com/CelestoAI/SmolVM

show 1 reply
rkagereryesterday at 9:08 PM

I see you support Linux and MacOS hosts. Any Windows support planned?

show 1 reply
brianjlogantoday at 12:37 AM

Any integration with existing orchestrators? Plans to support any or building your own?

show 1 reply
ukuinayesterday at 7:29 PM

Doesn't Docker's sbx do this?

https://docs.docker.com/reference/cli/sbx/

show 1 reply
0cf8612b2e1eyesterday at 6:40 PM

This looks very cool. Does the VM machinery still work if I run it in a bubblewrap? Can it talk to a GPU?

Can you pipe into one? It would be cute if I could wget in machine 1 and send that result to offline machine 2 for processing.

show 1 reply
timsuchanekyesterday at 9:20 PM

This is very exciting. It enables a cross platform, language agnostic plugin system, especially for agents, while being safe in a VM.

bchyesterday at 6:45 PM

see too[0][1] for projects of a similar* vein, incl historical account.

*yes, FreeBSD is specifically developed against Firecracker which is specifically avoided w "Smol machines", but interesting nonetheless

[0] https://github.com/NetBSDfr/smolBSD

[1] https://www.usenix.org/publications/loginonline/freebsd-fire...

show 1 reply
akdev1ltoday at 12:59 AM

How does it compare to podman with crun-vm ?

fqiaoyesterday at 5:42 PM

Give it a try folks. Would really love to hear all the feedbacks!

Cheers!

show 1 reply
parasitidyesterday at 8:05 PM

hi! congrats for your work that's really nice.

question: why do you report that qemu is 15s<x<30s? for instance with katacontainers, you can run fast microvms, and even faster with unikernels. what was your setup?

thanks a lot

nonameiguessyesterday at 8:01 PM

What are you actually doing on top of libkrun? Providing really small machine images that boot quickly? If I run the smolvm run --image alpine example, what is "alpine?" Where is that image coming from? Does this have some built-in default registry of machine images it pulls from? Does it need an Internet connection that allows outbound access to wherever this registry runs? Is it one of a default set of pre-built images that comes with the software itself and is stored on my own filesystem? Where are the builds for these images? Where do these machine images end up? ~/.local/share/smolvm/?

show 2 replies
chrisweeklyyesterday at 8:31 PM

This looks awesome. Thanks for sharing!

show 1 reply
messhyesterday at 7:35 PM

https://shellbox.dev is a hosted version of something very similar

show 1 reply
harshdoesdevyesterday at 5:55 PM

its a really innovative idea! very interested in the subsecond coldstart claim, how does it achieve that?

show 1 reply
dimitry12yesterday at 11:21 PM

https://github.com/earendil-works/gondolin is another project addressing a similar use-case.

cpercivayesterday at 8:00 PM

See also SmolBSD -- similar idea, similar name, using NetBSD.

show 1 reply
danelliotyesterday at 10:00 PM

[dead]

kevinten10today at 2:17 AM

[dead]

volume_techtoday at 12:09 AM

[dead]

volume_techyesterday at 6:09 PM

[dead]