
smolvm v1.15.0
एक एम्बेड करने योग्य, पोर्टेबल, ब्रांच करने योग्य वर्चुअल मशीन जो Agents को स्थानीय रूप से सुरक्षित रूप से चलाने के लिए है।
smolvm
AI एजेंट्स के लिए ब्रांच करने योग्य microVM। अपने सॉफ़्टवेयर में हल्के वर्चुअल मशीनें एम्बेड करें, पोर्टेबल डेव एनवायरनमेंट, और लोकल सैंडबॉक्सिंग।
Install
curl -sSL https://smolmachines.com/install.sh | bash # macOS + Linux
Windows: windows-x86_64 release को unzip करें और smolvm.exe चलाएँ (Windows Hypervisor Platform की आवश्यकता है)। कोडिंग एजेंट्स: इंस्टॉल करने के बाद हर कमांड जानने के लिए smolvm --help चलाएँ।
Quick Start
smolvm machine run --net --image alpine -- uname -a # one-off VM, removed on exit
smolvm machine run --net -it --image alpine -- /bin/sh # interactive shell
Local
अपने ही kernel वाली असली VM, आपके लैपटॉप या आपके सर्वर पर मुफ़्त। ये एक सेकंड से कम में बूट होती हैं, और मेमोरी इलास्टिक होती है, इसलिए होस्ट केवल उतना ही कमिट करता है जितना गेस्ट उपयोग करता है। मशीनें रीस्टार्ट के बाद भी बनी रहती हैं, और कोई भी OCI इमेज काम करती है, जिनमें आपके लोकल बनाई गई इमेज भी शामिल हैं।
smolvm machine create --net --name dev && smolvm machine start --name dev
smolvm machine exec --name dev -- apk add git
docker save myapp | smolvm machine run --image - -- ./app # local image, no registry
एक Smolfile में मशीन घोषित करें: इमेज, रिसोर्स, पोर्ट, माउंट और नेटवर्क पॉलिसी एक ही चेक-इन फ़ाइल में।
Embeddable
एक Machine API के साथ अपने ही कोड से मशीनें चलाएँ। SDKs आपकी प्रोसेस में बिना किसी daemon के चलते हैं, लोकल या smol cloud पर।
npm install smolmachines # Node / TypeScript
pip install smolmachines # Python
cargo add smolmachines # Rust
import { Machine } from 'smolmachines';
const m = await Machine.create({ image: 'python:3.12-alpine', network: true });
const r = await m.exec(['python3', '-c', 'print(2 ** 10)']);
console.log(r.stdout); // 1024
await m.delete();
सोर्स और डॉक्स: smol-machines/smol · smolmachines.com/docs/sdk
Branchable
चल रही मशीन को निष्पादन के बीच में सेव करें, उसे रिवाइंड करें, या उसकी कॉपीज़ में ब्रांच करें जो उसी बिंदु से चलती रहें। चेकपॉइंट RAM, CPU स्टेट और डिस्क कैप्चर करते हैं; ब्रांच एक लाइव मशीन के copy-on-write चाइल्ड होते हैं।
smolvm machine create --net --name agent --image alpine
smolvm machine start --name agent --branchable
smolvm machine branch --from agent --name try-1 # live copy-on-write child
smolvm machine checkpoint --name agent -o agent.checkpoint # save it, processes and all
smolvm machine create --name agent2 --from agent.checkpoint # resume later or elsewhere
--from <checkpoint> --at '~N' के साथ पिछली जनरेशन पर रिवाइंड करें (machine checkpoint-log देखें), और निष्पादन खोए बिना pause और resume के साथ रोकें। अधिक जानकारी Branching और incremental checkpoints में।
Portable
एक मशीन को, चाहे आपने इसे कैसे भी सेट किया हो, एक ही .smolmachine फ़ाइल में पैक करें। इसे किसी भी OCI रजिस्ट्री पर पुश करें, या इसे एक स्व-निहित executable के रूप में चलाएँ जो बिना कुछ इंस्टॉल किए 200 ms से कम में बूट होता है।
smolvm machine stop --name dev && smolvm pack create --from-vm dev -o dev
smolvm pack push --file dev.smolmachine ghcr.io/you/dev:v1
smolvm pack create --image python:3.12-alpine -o ./python312
./python312 run -- python3 --version
चेकपॉइंट भी पोर्टेबल हैं: किसी दूसरे होस्ट या smol cloud पर एक को रीस्टोर करें।
Safe
प्रत्येक वर्कलोड को अपने ही kernel के साथ हार्डवेयर-आइसोलेटेड VM मिलती है। नेटवर्किंग डिफ़ॉल्ट रूप से बंद रहती है, egress को नामित होस्ट्स तक सीमित किया जा सकता है, और कोड किसी क्रेडेंशियल का उपयोग बिना उसे कभी पढ़े कर सकता है।
सुरक्षा एक साझा ज़िम्मेदारी है। smolvm सीमा प्रदान करता है: प्रत्येक वर्कलोड के लिए एक अलग VM और kernel, जिसमें कुछ भी होस्ट तक नहीं पहुँचता जब तक आप अनुमति न दें। उस सीमा को क्या पार करेगा यह आप तय करते हैं। आपके द्वारा माउंट किया गया प्रत्येक फ़ोल्डर, खोला गया पोर्ट, अनुमति दिया गया होस्ट, और फ़ॉरवर्ड किया गया सीक्रेट या SSH agent वह चीज़ बन जाती है जिसका उपयोग वर्कलोड कर सकता है, इसलिए किसी अविश्वसनीय वर्कलोड को केवल वही दें जिसकी उसे आवश्यकता हो।
smolvm machine run --net --image alpine --allow-host registry.npmjs.org -- wget -qO- https://google.com # blocked
smolvm machine run --net --image alpine --allow-host-pattern registry.npmjs.org -- wget -qO- https://registry.npmjs.org # exact host only
NOTION_API_KEY=secret_… smolvm machine run --net --image alpine \
--credential [email protected] -- sh -c 'echo $NOTION_API_KEY' # a placeholder
credential substitution और security model देखें।
केवल सबडोमेन की अनुमति देने के लिए --allow-host-pattern '*.example.com' का उपयोग करें। पुराना
--allow-host example.com अभी भी apex और सबडोमेन दोनों की अनुमति देता है।
रुकी हुई मशीन की allow list को smolvm machine update से बदला जा सकता है
(--allow-host, --allow-host-pattern, --allow-cidr और उनके --remove- रूप)।
How It Works
प्रत्येक वर्कलोड Hypervisor.framework (macOS), KVM (Linux), या Windows Hypervisor Platform (Windows) पर अपने ही गेस्ट kernel के साथ हार्डवेयर-वर्चुअलाइज़्ड VM में चलता है। libkrun VMM है और libkrunfw गेस्ट kernel प्रदान करता है। इमेज OCI फ़ॉर्मेट का उपयोग करती हैं, इसलिए Docker Hub, ghcr.io या किसी अन्य रजिस्ट्री पर मौजूद कोई भी चीज़ बिना किसी Docker daemon के microVM के रूप में बूट होती है।
डिफ़ॉल्ट: 4 vCPUs, 8 GiB RAM। virtio balloon के माध्यम से मेमोरी इलास्टिक होती है और idle vCPUs हाइपरवाइज़र में सोते हैं, इसलिए ओवर-प्रोविज़निंग पर लगभग कुछ भी खर्च नहीं होता। --cpus और --mem से ओवरराइड करें।