
Firecracker को सरल बनाया गया। मिलीसेकंड में सुरक्षित microVMs स्पिन अप करें, इंस्टॉल से इंटरैक्टिव शेल तक एक कमांड में।
🔥 Firecracker microVM सैंडबॉक्स टूलकिट
कमांड लाइन से अलग-थलग Firecracker microVMs बनाएँ, प्रबंधित करें और कनेक्ट करें। मिलीसेकंड में एक सैंडबॉक्स किया गया VM बूट करें, कमांड चलाएँ, फ़ाइलें स्थानांतरित करें — SSH की आवश्यकता नहीं।
--from-image के साथ किसी भी OCI इमेज से rootfs बनाएँbase, node22, node24, python3.13--json फ़्लैग--from-image के लिए)curl -fsSL https://vmsan.dev/install | bash
यह सब कुछ डाउनलोड करके ~/.vmsan/ में इंस्टॉल करता है:
node22, node24, python3.13) पूर्व-निर्मित आर्टिफैक्ट के रूप में डाउनलोड की गईमानक रिलीज़ इंस्टॉल https://artifacts.vmsan.dev/ से बिल्ट-इन रनटाइम डाउनलोड करते हैं और Docker की आवश्यकता नहीं होती। स्रोत इंस्टॉल अभी भी रनटाइम को स्थानीय रूप से बनाते हैं।
curl -fsSL https://vmsan.dev/install | bash -s -- --uninstall
यदि आप स्रोत से बनाना चाहते हैं:
# डिपेंडेंसीज़ इंस्टॉल करें
bun install
# in-VM एजेंट बनाएँ
cd agent && make install && cd ..
# CLI बनाएँ
bun run build
# स्थानीय बिल्ड लिंक करें
mkdir -p ~/.vmsan/bin
ln -sf "$(pwd)/dist/bin/cli.mjs" ~/.vmsan/bin/vmsan
# VM बनाएँ और शुरू करें
vmsan create --runtime node22 --memory 512 --cpus 2
# Docker इमेज से VM बनाएँ
vmsan create --from-image node:22-alpine
# सभी VMs सूचीबद्ध करें
vmsan list
# VM के अंदर कमांड निष्पादित करें
vmsan exec <vm-id> ls -la
# PTY के साथ इंटरैक्टिव निष्पादन
vmsan exec -i <vm-id> bash
# चल रहे VM शेल से कनेक्ट करें
vmsan connect <vm-id>
# VM पर फ़ाइल अपलोड करें
vmsan upload <vm-id> ./local-file.txt /remote/path/file.txt
# VM से फ़ाइल डाउनलोड करें
vmsan download <vm-id> /remote/path/file.txt ./local-file.txt
# चल रहे VM का स्नैपशॉट लें
vmsan snapshot create <vm-id>
# स्नैपशॉट सूचीबद्ध करें
vmsan snapshot list
# स्नैपशॉट से VM पुनर्स्थापित करें
vmsan create --snapshot <snapshot-id>
# VM रोकें
vmsan stop <vm-id>
# VM हटाएँ
vmsan remove <vm-id>
| फ़्लैग | विवरण |
|---|---|
--json | संरचित JSON आउटपुट |
--verbose | विस्तृत डीबग आउटपुट दिखाएँ |
vmsan.toml नहीं (0.5.0 के लिए योजना)nftables का उपयोग करता है (0.2.0 के बाद से)# बिल्ड
bun run build
# स्थानीय बिल्ड लिंक करें
ln -sf "$(pwd)/dist/bin/cli.mjs" ~/.vmsan/bin/vmsan
# डेव मोड (वॉच)
bun run dev
# परीक्षण चलाएँ
bun run test
# टाइप जाँच
bun run typecheck
# लिंट और फ़ॉर्मेट
bun run lint
bun run fmt
bin/ CLI प्रवेश बिंदु
src/
commands/ CLI उपकमांड
services/ Firecracker क्लाइंट, एजेंट क्लाइंट, VM सेवा
lib/ उपयोगिताएँ (jailer, नेटवर्किंग, शेल, लॉगिंग)
errors/ टाइप की गई त्रुटि प्रणाली
generated/ Firecracker API प्रकार परिभाषाएँ
agent/ Go एजेंट जो VM के अंदर चलता है
docs/ दस्तावेज़ीकरण साइट (vmsan.dev)
/30 सबनेट (198.19.{slot}.0/30) के साथ एक TAP नेटवर्क डिवाइस मिलता हैअवस्था ~/.vmsan/ में संग्रहीत होती है:
~/.vmsan/
vms/ VM अवस्था फ़ाइलें (JSON)
jailer/ Chroot निर्देशिकाएँ
bin/ एजेंट बाइनरी
kernels/ VM कर्नेल इमेज
rootfs/ बेस रूट फ़ाइलसिस्टम
registry/ Docker इमेज rootfs कैश
snapshots/ VM स्नैपशॉट
vmsan क्यों? Docker होस्ट कर्नेल साझा करता है — एक कंटेनर एस्केप का मतलब खत्म। gVisor उपयोगकर्ता-स्थान में syscalls को इंटरसेप्ट करता है, हमले की सतह को कम करता है लेकिन समाप्त नहीं करता। Kata Containers वास्तविक VM अलगाव प्रदान करता है लेकिन जटिल ऑर्केस्ट्रेशन (containerd, shimv2, K8s) की आवश्यकता होती है। Vagrant पूर्ण VMs बूट करता है जो 30+ सेकंड और सैकड़ों MB लेते हैं।
vmsan आपको Firecracker के न्यूनतम हमले की सतह (< 50k लाइन्स कोड) के साथ हार्डवेयर-स्तरीय अलगाव देता है, मिलीसेकंड में बूट होता है, और शून्य कॉन्फ़िगरेशन की आवश्यकता होती है — इंस्टॉल करें और जाएँ।
APACHE-2.0 लाइसेंस के तहत प्रकाशित।
@angelorc और समुदाय 💛 द्वारा बनाया गया
🤖 automd के साथ स्वतः अपडेट
| कमांड | उपनाम | विवरण |
|---|
create | नया microVM बनाएँ और शुरू करें | |
list | ls | सभी VMs सूचीबद्ध करें |
start | रुके हुए VM को शुरू करें | |
stop | चल रहे VM को रोकें | |
remove | rm | VM हटाएँ |
exec | चल रहे VM के अंदर कमांड निष्पादित करें | |
connect | VM में इंटरैक्टिव शेल खोलें | |
upload | VM पर फ़ाइलें अपलोड करें | |
download | VM से फ़ाइलें डाउनलोड करें | |
network | चल रहे VM पर नेटवर्क नीति अपडेट करें | |
snapshot | VM स्नैपशॉट प्रबंधित करें (बनाएँ, सूचीबद्ध करें, हटाएँ) | |
doctor | सिस्टम पूर्वापेक्षाएँ और इंस्टॉलेशन स्वास्थ्य जाँचें |
| vmsan | Docker | gVisor | Kata Containers | Vagrant |
|---|
| अलगाव स्तर | ✅ हार्डवेयर (KVM) | ❌ साझा कर्नेल | ⚠️ उपयोगकर्ता-स्थान कर्नेल | ✅ हार्डवेयर (QEMU/CH) | ✅ हार्डवेयर (VBox/VMware) |
| बूट समय | ✅ ~125ms | ✅ ~50ms | ✅ ~5ms | ⚠️ ~200ms+ | ❌ 30-60s |
| सेटअप जटिलता | ✅ एक कमांड | ✅ कम | ⚠️ मध्यम | ❌ उच्च | ⚠️ मध्यम |
| सुरक्षा मॉडल | ✅ जेलर + seccomp + cgroups + समर्पित कर्नेल | ⚠️ नेमस्पेस + cgroups | ⚠️ सिस्कॉल फ़िल्टरिंग | ✅ पूर्ण VM + नेस्टेड कंटेनर | ✅ पूर्ण VM |
| नेटवर्क अलगाव | ✅ अंतर्निहित नीतियाँ (अनुमति/अस्वीकार/कस्टम) | ❌ मैन्युअल (iptables) | ⚠️ Docker से विरासत | ❌ मैन्युअल | ⚠️ NAT/ब्रिज्ड |
| Docker इमेज समर्थन | ✅ --from-image | ✅ मूल | ✅ runsc के माध्यम से | ✅ containerd के माध्यम से | ❌ |
| इंटरैक्टिव शेल | ✅ WebSocket PTY | ✅ exec | ✅ exec | ✅ exec | ✅ SSH |
| फ़ाइल स्थानांतरण | ✅ अंतर्निहित अपलोड/डाउनलोड | ✅ cp | ✅ cp | ✅ cp | ⚠️ साझा फ़ोल्डर / SCP |
| JSON आउटपुट | ✅ सभी कमांड | ⚠️ आंशिक | ❌ | ⚠️ आंशिक | ❌ |
| मेमोरी ओवरहेड | ✅ ~5 MiB प्रति VM | ✅ ~1 MiB | ⚠️ ~15 MiB | ❌ ~30 MiB+ | ❌ 512 MiB+ |
| सबसे उपयुक्त | 🏆 AI सैंडबॉक्सिंग, अविश्वसनीय कोड, मल्टी-टेनेंट | सामान्य वर्कलोड | K8s सख्तीकरण | K8s अनुपालन | डेव पर्यावरण |