- smolvm은 macOS와 Linux에서 동작하는 CLI 기반 가상머신 관리 도구로, 격리된 환경에서 소프트웨어를 실행함
- 서브초(1초 미만) 콜드스타트, 탄력적 메모리 관리, 단일 파일 이식성을 지원해 빠르고 가벼운 VM 실행 가능
- VM은 리눅스 커널 기반 마이크로VM 형태로 구동되며, .smolmachine 파일로 패키징해 의존성 없이 재실행 가능
- 하이퍼바이저 경계 격리, SSH 에이전트 포워딩, Smolfile 기반 환경 선언 등으로 개발·보안 환경을 통합 지원
- Docker 데몬 없이 OCI 이미지 부팅을 지원하며, 200ms 미만 부팅 시간과 하드웨어 수준 격리로 경량 가상화 대안 제시
개요
- smolvm은 격리된 환경에서 소프트웨어를 실행하기 위한 CLI 기반 가상머신 관리 도구
- macOS와 Linux에서 동작하며, 서브초 콜드스타트, 탄력적 메모리 사용, 이식 가능한 단일 파일 패키징을 지원
- 각 워크로드는 리눅스 커널 기반 마이크로VM으로 실행되며, 하드웨어 수준의 격리를 제공
- .smolmachine 파일로 패키징된 VM은 동일 아키텍처의 플랫폼에서 의존성 없이 재실행 가능
주요 기능
-
로컬 가상머신 관리 및 실행
- smolvm machine run 명령으로 커스텀 리눅스 VM 실행
- 콜드스타트는 1초 미만이며, macOS와 Linux 모두 지원
- 메모리는 virtio balloon으로 탄력 관리되어 실제 사용량만 호스트에 할당됨
-
이식 가능한 단일 파일 패키징
- VM 상태를 포함한 .smolmachine 파일로 묶어 다른 플랫폼에서 재생성 가능
- 모든 의존성이 내장되어 설치 없이 즉시 실행 가능, 부팅 시간은 200ms 미만
-
불신 코드 샌드박싱
- 하이퍼바이저 경계를 통해 호스트 파일시스템, 네트워크, 자격증명을 완전히 분리
- 기본 네트워크는 비활성화 상태이며, --allow-host 옵션으로 특정 호스트만 허용 가능
-
지속형 개발용 VM
- machine create, start, stop 명령으로 VM 생성 및 관리
- 설치된 패키지가 재시작 후에도 유지되어 개발 환경으로 활용 가능
-
SSH 에이전트 포워딩
- 호스트의 SSH 에이전트를 VM 내부로 전달하되, 개인키는 게스트로 복사되지 않음
- --ssh-agent 옵션으로 호스트의 SSH 인증을 안전하게 활용 가능
-
Smolfile 기반 환경 선언
- TOML 형식의 Smolfile로 VM 설정을 선언
- 이미지, 네트워크, 초기화 명령, 볼륨, 인증 옵션 등을 지정해 재현 가능한 환경 구성 가능
사용 예시
-
임시 VM 실행
- smolvm machine run --net --image alpine -- sh -c "echo 'Hello world'"
- 종료 시 VM이 자동 정리되는 일회성 실행 방식
-
패키징된 실행 파일 생성
- smolvm pack create --image python:3.12-alpine -o ./python312
- 생성된 실행 파일로 독립적인 Python 환경 실행 가능
-
네트워크 제어
- 기본 네트워크는 비활성화
- --allow-host 옵션으로 특정 도메인만 접근 허용
-
SSH 및 Git 사용
- smolvm machine run --ssh-agent --net --image alpine
- 호스트의 SSH 키를 안전하게 사용해 Git 리포지토리 접근 가능
내부 구조 및 동작 방식
- 각 워크로드는 Hypervisor.framework(macOS) 또는 KVM(Linux) 위에서 독립 커널을 실행
- libkrun 기반 VMM과 커스텀 커널(libkrunfw) 을 사용
- OCI 이미지 포맷을 지원해 Docker Hub, ghcr.io 등에서 이미지를 직접 가져와 실행 가능
- Docker 데몬 불필요, 표준 OCI 이미지를 그대로 부팅 가능
- 기본 설정은 4 vCPU, 8GiB RAM, --cpus, --mem 옵션으로 조정 가능
- vCPU 스레드는 유휴 시 하이퍼바이저에서 자동 절전되어 과할당 비용이 거의 없음
비교
| 격리 수준 | 워크로드별 VM | 네임스페이스(공유 커널) | 네임스페이스(단일 VM) | 개별 VM | 개별 VM | 컨테이너별 VM |
| 부팅 시간 | <200ms | 약 100ms | 수 초 | 15~30초 | <125ms | 약 500ms |
| 아키텍처 | 라이브러리(libkrun) | 데몬 | VM 내 데몬 | 프로세스 | 프로세스 | 런타임 스택 |
| 워크로드별 VM | 지원 | 미지원 | 공유 | 지원 | 지원 | 지원 |
| macOS 네이티브 | 지원 | Docker VM 경유 | krunkit 기반 | 지원 | 미지원 | 미지원 |
| SDK 내장 | 지원 | 미지원 | 미지원 | 미지원 | 미지원 | 미지원 |
| 이식 가능한 아티팩트 | .smolmachine | 데몬 필요 이미지 | 미지원 | 미지원 | 미지원 | 미지원 |
플랫폼 지원
| macOS Apple Silicon | arm64 Linux | macOS 11 이상 |
| macOS Intel | x86_64 Linux | macOS 11 이상 (테스트 미완료) |
| Linux x86_64 | x86_64 Linux | KVM(/dev/kvm) 필요 |
| Linux aarch64 | aarch64 Linux | KVM(/dev/kvm) 필요 |
알려진 제한 사항
- 네트워크는 기본 비활성화, --net 옵션으로만 활성화 가능
- TCP/UDP만 지원, ICMP 미지원
- 볼륨 마운트는 디렉터리 단위만 가능, 단일 파일은 불가
- macOS에서는 Hypervisor.framework 권한으로 서명된 바이너리만 실행 가능
- --ssh-agent 사용 시 호스트에 SSH 에이전트가 실행 중이어야 함 (SSH_AUTH_SOCK 설정 필요)
개발 관련
- 개발 지침은 docs/DEVELOPMENT.md에서 확인 가능
- Apache-2.0 라이선스로 공개되어 있으며, @binsquare가 제작

4 hours ago
2
![[MK시그널] 로보티즈, 美 빅테크에 로봇 손 부품 공급 및 피지컬AI 수혜주 등에 주가 상승세, MK시그널 추천 후 상승률 12.83% 기록](https://pimg.mk.co.kr/news/cms/202603/20/news-p.v1.20260320.5ea8839301ed4284a9cb365ffae9579b_R.png)








English (US) ·