العودة إلى التحديثات
New releaseOct 24, 2026

smolvm v1.32.1

آلة افتراضية قابلة للتضمين، ومحمولة، وقابلة للتفرع لتشغيل الوكلاء محليًا بأمان.

مشاركة

smol machines

Discord Release License npm PyPI crates.io

English · 中文 · 日本語 · 한국어

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

ركّب دلو S3 أو R2 أو MinIO باستخدام -v s3://bucket/prefix:/data، انظر volumes.

عرّف جهازًا في Smolfile: الصورة والموارد والمنافذ ونقاط التركيب وسياسة الشبكة في ملف واحد مُدار ضمن المستودع.

قابل للتضمين

شغّل الأجهزة من شفرتك الخاصة عبر واجهة Machine واحدة. تعمل حزم SDK داخل عمليتك دون أي daemon، محليًا أو على smol cloud.

npm install smolmachines     # Node / TypeScript
pip install smolmachines     # Python
cargo add smolmachines       # Rust
go get github.com/smol-machines/smol/sdk/go   # Go
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) إدخالات، وذلك أيضًا على آلة قيد التشغيل بدأت بقائمة سماح: يُطبَّق التصريح على الاتصال أو البحث التالي، وتزول العناوين المكتسبة للمضيف المحذوف معه.

كيف يعمل

الفئات