
smolvm v1.30.1
آلة افتراضية قابلة للتضمين، ومحمولة، وقابلة للتفرع لتشغيل الوكلاء محليًا بأمان.
smolvm
أجهزة افتراضية صغيرة قابلة للتفرّع لوكلاء الذكاء الاصطناعي. ضمّن أجهزة افتراضية خفيفة الوزن داخل برمجياتك، وبيئات تطوير محمولة، وعزل محلي.
التثبيت
brew install smol-machines/tap/smolvm # macOS (Homebrew)
curl -sSL https://smolmachines.com/install.sh | bash # macOS + Linux
Windows: فك ضغط إصدار windows-x86_64 release وشغّل smolvm.exe (يحتاج إلى Windows Hypervisor Platform). وكلاء البرمجة: شغّل smolvm --help بعد التثبيت لاكتشاف كل أمر.
التوثيق للبشر والوكلاء موجود في docs/، مجلد واحد لكل مهمة: ملف README.md يحتوي على الحقائق وملف SKILL.md يمكن للوكيل اتباعه، مع سكريبتاته، بجانب الصفحة المرجعية لكل ميزة.
البدء السريع
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
محلي
أجهزة افتراضية حقيقية بنواة خاصة بها، مجانية على حاسوبك المحمول أو خوادمك الخاصة. تُقلع في أقل من ثانية، والذاكرة مرنة، لذا لا يخصص المضيف إلا ما يستخدمه الضيف. تبقى الأجهزة محفوظة عبر عمليات إعادة التشغيل، وأي صورة 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: الصورة والموارد والمنافذ ونقاط التحميل وسياسة الشبكة في ملف واحد مُسجَّل في المستودع.
قابل للتضمين
قُد الآلات من شفرتك الخاصة عبر واجهة Machine واحدة. تعمل حزم SDK داخل عمليتك دون أي خادم خفي (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
قابل للتفرّع
احفظ آلة قيد التشغيل في منتصف التنفيذ، أو أعدها إلى نقطة سابقة، أو فرّعها إلى نسخ تواصل العمل من النقطة نفسها. تلتقط نقاط التحقق الذاكرة العشوائية وحالة المعالج والأقراص؛ والفروع هي أبناء نسخ عند الكتابة لآلة حيّة.
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)، وتوقّف دون فقدان التنفيذ باستخدام الإيقاف المؤقت والاستئناف. تُستأنف نقطة تحقق مأخوذة على جهاز Mac بمعمارية arm64 على Linux بمعمارية arm64، انظر نقل جهاز قيد التشغيل من Mac إلى Linux. المزيد في التفريع ونقاط التحقق التزايدية.
قابل للنقل
احزم جهازًا، كيفما أعددته، في ملف .smolmachine واحد. ادفعه إلى أي سجل OCI، أو شغّله كملف تنفيذي مكتفٍ ذاتيًا يُقلع في أقل من 200 مللي ثانية دون الحاجة إلى تثبيت أي شيء.
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.
آمن
تحصل كل حِمل عمل على جهاز ظاهري معزول عتاديًا بنواة خاصة به. الشبكة معطّلة افتراضيًا، ويمكن تقييد حركة الخروج إلى مضيفات محددة بالاسم، ويمكن للشيفرة استخدام بيانات اعتماد دون قراءتها مطلقًا.
السلامة مسؤولية مشتركة. يوفّر smolvm الحدود: جهاز ظاهري ونواة منفصلان لكل حِمل عمل، ولا شيء يصل إلى المضيف ما لم تسمح بذلك. أنت تقرر ما يعبر تلك الحدود. كل مجلد تُركّبه، ومنفذ تفتحه، ومضيف تسمح به، وسر أو وكيل SSH تمرّره، يصبح شيئًا يمكن لحِمل العمل استخدامه، لذا امنح حِمل عمل غير موثوق فقط ما يحتاجه.
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
راجع استبدال بيانات الاعتماد ونموذج الأمان.
استخدم --allow-host-pattern '*.example.com' للسماح بالنطاقات الفرعية فقط؛ بينما يسمح --allow-host example.com بالنطاق الجذر
ونطاقاته الفرعية. يضيف smolvm machine update مدخلات (--allow-host، --allow-host-pattern، --allow-cidr) ويزيل
(--remove-allow-host، مضيف أو نمط كما أُضيف؛ --remove-allow-cidr) مدخلات، وذلك أيضًا على آلة قيد التشغيل
بدأت بقائمة سماح: يُطبَّق التصريح على الاتصال أو الاستعلام التالي، وتزول العناوين المكتسبة للمضيف المُزال معه.
كيف يعمل
تعمل كل حِمل عمل في آلة افتراضية معزولة عتاديًا بنواة ضيف خاصة بها على Hypervisor.framework (macOS)، أو KVM (Linux)، أو Windows Hypervisor Platform (Windows). يُعدّ libkrun هو VMM ويوفّر libkrunfw نواة الضيف. تستخدم الصور صيغة OCI، لذا فإن أي شيء على Docker Hub أو ghcr.io أو أي سجل آخر يُقلع كـ microVM، دون الحاجة إلى خادم Docker daemon.
الإعدادات الافتراضية: 4 vCPUs، و8 GiB من الذاكرة العشوائية. الذاكرة مرنة عبر virtio balloon، وتنام وحدات vCPU الخاملة في الهايبرفايزر، لذا فإن التخصيص الزائد لا يكلّف شيئًا تقريبًا. تجاوز ذلك باستخدام --cpus و--mem.