The experiment examined smolmachines/smolvm as a lightweight sandbox for running untrusted Python and JavaScript code. Requirements included strict limits on RAM and CPU time (to guard against runaway loops like "while true"), no network access, and filesystem access restricted to designated files — use cases included data transformations and similar user-provided tasks.
Environment and the encountered limitation
Claude Fable 5 was assigned the task, running inside the Claude Code for web environment. The container's environment details reported during the test were:
- Linux 6.18.5-fc-v20 (the container itself ran on a Firecracker guest)
- 4 virtual vCPU
- 15 GB RAM
The environment lacked /dev/kvm and the CPU did not advertise vmx/svm flags, so nested virtualization was not available. As a result, smolvm commands such as smolvm machine run failed with the expected error: "kvm not available."
Workaround: move testing to GitHub Actions runners
Because Claude Code did not provide nested-virt capabilities, the tester switched to plan B: using GitHub Actions ubuntu runners, which do expose /dev/kvm. The practical steps taken were:
- create a temporary GitHub Actions workflow on the branch under test,
- install smolvm on the runner,
- run the test battery against that branch and collect logs,
- remove the temporary workflow in the final commit.
This approach allowed running smolvm on a host with KVM available and retrieving concrete test results despite the limits of the original environment.
Why this matters
smolvm aims to provide fast, lightweight virtual machines suitable for sandboxing untrusted code. The lack of nested virtualization in many cloud or containerized developer environments can block local testing of such solutions. Using GitHub Actions runners that expose /dev/kvm is a practical way to validate and debug smolvm-based workflows during development and research.
Conclusion
The experiment demonstrated both the potential of smolmachines/smolvm for sandboxing untrusted Python and JavaScript and the practical challenge posed by environments without nested virtualization. Moving the test suite to GitHub Actions enabled installation and execution of smolvm on a KVM-capable runner, with logs collected and the temporary workflow cleaned up afterward.



