رگز
صرف حقائق۔ ان کے پیچھے کا ماڈل جاننے کے لیے رگز اور انکلوژرز پڑھیں؛ مشین کھولنے کے لیے گائیڈ پر چلیں۔
سطحیں اور بیک اینڈز
سیکشن کا عنوان “سطحیں اور بیک اینڈز”| سطح | چلاتا ہے | بیک اینڈ | قدر | محدود ایگریس |
|---|---|---|---|---|
| ٹرمنل (exec) | VM کے exec چینل پر ایک شیل | microVM | smolvm |
ہاں |
| براؤزر | ہیڈ لیس Chromium (CDP)، Firefox (WebDriver BiDi) یا WebKit (W3C WebDriver) | microVM | smolvm |
ہاں |
| کمپیوٹر | X11 ڈیسک ٹاپ: اِن پٹ ہائپر وائزر کے ذریعے، کیپچر گیسٹ ایجنٹ کے ذریعے | QEMU | qemu-hvf (macOS)، qemu-kvm (Linux)، qemu-tcg (بغیر تیز رفتاری والا فالبیک، کبھی خودکار طور پر منتخب نہیں ہوتا) |
ہاں |
| Android | ADB کے ذریعے Android | گوگل کا ایمولیٹر | android-emulator |
نہیں — ایمولیٹر اپنی نیٹ ورکنگ خود سنبھالتا ہے |
| iOS | WebDriverAgent کے ذریعے iOS سمیولیٹر | CoreSimulator | ios-simulator |
نہیں — نیٹ ورکنگ میزبان Mac کے پیچھے چلتی ہے |
ٹرمنل اور computer_use سطح ایک ہی computer سطح قدر رکھتے ہیں؛ ٹرمنل اپنے
exec امیج مارکر سے ممتاز ہوتا ہے اور اسے کبھی چلانے کے قابل ڈیسک ٹاپ کے طور پر
دوبارہ استعمال نہیں کیا جاتا (اور نہ اس کے برعکس)۔ ایک گفتگو ایک ہی ٹرمنل
مشین دوبارہ استعمال کرتی ہے۔
براؤزر انجنز
سیکشن کا عنوان “براؤزر انجنز”| انجن | قدر | پروٹوکول | لائیو ویو | اسٹل تصاویر |
|---|---|---|---|---|
| Chromium | chromium (ڈیفالٹ) |
Chrome DevTools Protocol | اسکرین کاسٹ — صفحہ دوبارہ پینٹ ہوتے ہی براؤزر فریم پش کرتا ہے | JPEG |
| Firefox | firefox |
WebDriver BiDi | پول کی گئیں اسٹل تصاویر (BiDi میں اسکرین کاسٹ نہیں)، زیادہ سے زیادہ 6 fps | JPEG |
| WebKit | webkit |
W3C WebDriver (کلاسک) | پول کی گئیں اسٹل تصاویر، میزبان کے ffmpeg سے ٹرانس کوڈ کردہ | PNG |
ایک رگ اپنی پوری عمر میں ایک ہی انجن چلاتی ہے۔ ایک گفتگو میں فی انجن ایک رگ رکھی جا سکتی ہے، اور یہی شانہ بہ شانہ موازنہ ممکن بناتا ہے: “Firefox (VM)” کے ساتھ “Chromium (VM)” کھولنا دو مشینیں ہیں، اور ایک کو بند کرنے سے دوسری چلتی رہتی ہے۔
engine کو rig.open یا browser_use ٹول کو دیں۔ نامعلوم نام ڈیفالٹ کرنے کے
بجائے مسترد کر دیا جاتا ہے — ایک براؤزر مانگنا اور خاموشی سے کوئی مختلف مل
جانا مطابقت کے سوال کا غلط جواب دینا ہے۔
انجن کے مخصوص حدود، جنہیں نظر انداز کرنے کے بجائے بیان کیا گیا ہے:
- Firefox میں کیش بائی پاس کرنے والا ری لوڈ نہیں (وہ BiDi کے
ignoreCacheکو قطعی مسترد کر دیتا ہے)، اس لیے ہارڈ ری لوڈ ایک عام ری لوڈ ہی ہے۔ - WebKit میں بھی کیش بائی پاس کرنے والا ری لوڈ نہیں، کنسول فیڈ نہیں (آؤٹ
پٹ ہر نیویگیشن کے بعد
console.*کو ہک کر کے پکڑی جاتی ہے، اس لیے لوڈ کے دوران لاگ ہونے والی ہر چیز رہ جاتی ہے — ہر کنسول ایکسٹریکٹ یہی بتاتا ہے)، اور اس کے لائیو ویو کے لیے میزبان پرffmpegدرکار ہے۔ - ان دونوں میں سے کوئی بھی اپنے پروٹوکول پر کوئی پلیٹ فارم ایکسیسبلٹی ٹری
فراہم نہیں کرتا، اس لیے
extract (a11y)ایک DOM سے ماخوذ تخمینہ واپس کرتا ہے، اور اسے تخمینہ ہی کے طور پر لیبل کیا جاتا ہے۔ - کوئی بھی حقیقی فائل ڈراپ نہیں لے سکتا؛ فائل اِن پٹ کو پھر بھی مشین کے اندر موجود پاتھ پر لگایا جا سکتا ہے۔
مشین امیجز
سیکشن کا عنوان “مشین امیجز”| سطح | امیج | حاصل کی جاتی ہے |
|---|---|---|
| ٹرمنل | ubuntu:24.04، ڈائجسٹ پن شدہ |
پہلے بوٹ پر خودکار طور پر، مشین کے اپنے گیٹ والے نیٹ ورک کے ذریعے |
| براؤزر (Chromium، Firefox، WebKit) | debian:trixie-slim، ڈائجسٹ پن شدہ، نیز انجن کے اپنے پیکجز |
پہلے بوٹ پر خودکار طور پر، پھر وارم شدہ پیک کے طور پر کیش |
| کمپیوٹر | Chromium، Firefox، WebKit اور وہی GitHub ہوسٹڈ رنر والی CLI بیس لائن رکھنے والی qcow2 ڈیسک ٹاپ امیج جو ٹرمنل وارم کرتا ہے | درآمد، ترتیبات → سرور → رگز کے تحت (جہاں شائع ہوں وہاں چیک سم پن شدہ ڈاؤن لوڈز) |
| Android | گوگل کی سسٹم امیجز | Android SDK کے ذریعے |
| iOS | ایک Xcode سمیولیٹر رن ٹائم نیز چیک سم پن شدہ WebDriverAgent | رن ٹائم Xcode کے ذریعے؛ آٹومیشن برج ترتیبات → سرور → رگز سے |
ہر microVM قسم کے پہلے بوٹ کے بعد سرور ڈیٹا ڈائریکٹری کے نیچے ایک پہلے سے
نکالی گئی کاپی کیش کر لیتا ہے اور اس کے بعد کی ہر مشین اسی سے بوٹ کرتا ہے —
بشمول ایسی پہلے سے وارم شدہ امیجز جن میں پیکجز پہلے ہی انسٹال ہوں۔ ٹرمنل
GitHub ہوسٹڈ رنر جیسی CLI ٹول سیٹ وارم کرتا ہے (git، gcc، python3،
jq، rsync، آرکائیو ٹولز، اور apt بیس لائن کا باقی سب؛ Docker یا لینگویج
ٹول کیشز نہیں)۔ Computer کا qcow2 امیج بلڈ کے وقت وہی CLI نام اندر پکا دیتا
ہے، XFCE اور تینوں براؤزرز کے ساتھ۔ ہر براؤزر اپنا انجن وارم کرتا ہے۔ تینوں
انجن ایک Debian بیس شیئر کرتے ہیں مگر کبھی ایک پیک شیئر نہیں کرتے: کیش کی
کنجی امیج، انجن اور ایک آڈیو ریویژن (audio-v1-<engine>) پر ہوتی ہے،
کیونکہ ایک انجن کے لیے — یا اُس وقت سے پہلے جب PulseAudio اور ffmpeg ورک لوڈ
کا حصہ بنے — وارم کی گئی مشین میں دوسرے کا کچھ نہیں ہوتا۔ ٹرمنل پیک کی کنجی
اسی وجہ سے ٹول سیٹ ریویژن (tools-v1) پر ہوتی ہے: ایسا پیک جو کمپائلر کے
امیج کا حصہ بننے سے پہلے وارم کیا گیا ہو، ایسی مشین کو نہیں دینا چاہیے جس
میں کمپائلر ہونا چاہیے۔
کوئی بھی پکی ہوئی آٹومیشن امیج لینے کے قابل نہیں — Chromium کا
chromedp/headless-shell ALSA اور PulseAudio دونوں کو باہر کر کے کمپائل کرتا
ہے، اس لیے وہ کبھی آواز پیدا نہیں کر سکتا؛ Firefox والی واحد برقرار رکھی گئی
امیج Debian بیس سے 33× بڑی ہے اور پھر بھی کوئی socat نہیں رکھتی؛ WebKit
والی کوئی برقرار رکھی گئی امیج بالکل ہی نہیں۔ اس لیے ہر انجن پہلے آغاز پر
انسٹال ہوتا ہے (chromium، firefox-esr، یا webkit2gtk-driver) اور یہ
کرتے ہوئے Debian آرکائیوز (deb.debian.org، security.debian.org،
cloudfront.debian.net) تک پہنچتا ہے۔ Chromium ڈسٹری بیوشن بائنری ہے جسے
chromium --headless=new کے طور پر لانچ کیا جاتا ہے۔
فی ورک اسپیس حسبِ ضرورت امیجز
سیکشن کا عنوان “فی ورک اسپیس حسبِ ضرورت امیجز”| سیٹنگ کی کنجی | اوور رائیڈ کرتی ہے |
|---|---|
rigs.smolvm.execImage |
Terminal (VM) امیج |
rigs.smolvm.browserImage |
Chromium Browser (VM) امیج |
یہ ایڈمن گیٹ والے ورک اسپیس سیٹنگز اسٹور کے ذریعے لکھی جاتی ہیں (ترتیبات → سرور → رگز → حسبِ ضرورت امیجز (یہ ورک اسپیس))۔ قدر لازماً ایک رجسٹری ریفرنس ہو — مقامی پاتھ، آرکائیوز اور فلیگ نما اسٹرنگز مسترد کر دی جاتی ہیں، دونوں فیلڈ پر اور دوبارہ بوٹ پر۔ محفوظ شدہ غلط قدر کو زوردار طریقے سے نظر انداز کیا جاتا ہے اور اس کے بجائے ڈیفالٹ بوٹ ہوتا ہے۔ امیج کی اپنی رجسٹری (نیز Docker Hub، GHCR، Quay، GitLab اور GCR کے معروف blob-CDN ساتھی) پل کے لیے ایگریس گیٹ سے داخل کی جاتی ہے۔
ٹرمنل امیج معاہدہ — bash موجود؛ git، curl، socat پہلے سے انسٹال
یا ایک Debian/Ubuntu apt بیس (انکلوژر پہلے آغاز پر وہ تینوں اور GitHub
ہوسٹڈ رنر جیسی CLI ٹول سیٹ انسٹال کرتا ہے: کمپائلرز، Python 3، jq،
آرکائیو ٹولز، rsync۔ لینگویج ٹول کیشز اور Docker انسٹال نہیں ہوتے)۔
براؤزر امیج معاہدہ — ایک Debian/Ubuntu apt بیس (یا پہلے سے انسٹال پیکجز)
جس میں bash اور socat ہوں، نیز ایک chromium بائنری جسے سرور خود
chromium --headless=new کے طور پر لانچ کرتا ہے، گیسٹ لوپ بیک 9223 پر
DevTools کے ساتھ، جو گیسٹ پورٹ 9222 پر ریلے ہوتا ہے۔ آڈیو لین کے لیے پہلے
آغاز پر PulseAudio اور ffmpeg انسٹال ہوتے ہیں۔ FROM chromedp/headless-shell
سے بلڈ نہ کریں: اپ اسٹریم headless.gn ALSA اور PulseAudio دونوں کو باہر کر
کے کمپائل کرتا ہے، اس لیے وہ بائنری آواز پیدا نہیں کر سکتی۔ اوور رائیڈ
صرف Chromium رگز پر لاگو ہوتا ہے — جس ورک لوڈ کمانڈ سے یہ بوٹ ہوتی ہے وہ
Chromium کی ہے، اور اسے Firefox یا WebKit کو دینا ایسی بائنری لانچ کرنا ہوگا
جو وہاں موجود ہی نہیں۔ Firefox یا WebKit رگ اسے زوردار طریقے سے نظر انداز
کرتی ہے اور اپنی پن شدہ امیج بوٹ کرتی ہے۔
آٹومیشن پورٹس — ہر براؤزر مشین میزبان کے بالکل ایک لوپ بیک پورٹ کو گیسٹ
9222 پر فارورڈ کرتی ہے۔ اس کے پیچھے: Chromium کے DevTools اور Firefox کا
ریموٹ ایجنٹ گیسٹ لوپ بیک 9223 پر ہوتے ہیں جن کے آگے ایک socat ریلے ہوتا
ہے (دونوں بغیر شرط لوپ بیک پر بائنڈ کرتے ہیں)؛ WebKit کا ڈرائیور ایک --host
لیتا ہے اور خود گیسٹ NIC پر بائنڈ کرتا ہے۔ Firefox مزید یہ کہ Host ہیڈر کو
اپنے ہی پورٹ کے خلاف توثیق کرتا ہے، اس لیے کلائنٹ گیسٹ والی اتھارٹی بھیجتا
ہے، نہ کہ وہ جس پر اس نے ڈائل کیا۔
ایکشن فعل
سیکشن کا عنوان “ایکشن فعل”ہر ایکشن مکمل طور پر پارس ہوتا ہے: خراب پے لوڈ فیلڈ کا نام لے کر ایک پیغام واپس کرتا ہے، کبھی استثناء نہیں۔ مشاہدے والے فعل (○ سے نشان زد) جب تک کوئی انسان کنٹرول تھامے رکھتا ہے اجازت یافتہ رہتے ہیں؛ تبدیلی کرنے والے فعل مسترد کر دیے جاتے ہیں۔
computer_use
سیکشن کا عنوان “computer_use”screenshot○، cursor_position○، mouse_move، left_click،
right_click، middle_click، double_click، triple_click،
left_mouse_down، left_mouse_up، left_click_drag، scroll، key،
hold_key (0–60 s)، type، wait○ (0–60 s)، set_display،
clipboard_read○، clipboard_write۔
کوآرڈینیٹس گیسٹ کے موجودہ موڈ میں گیسٹ پکسلز ہیں؛ ہر اسکرین شاٹ ڈسپلے کا سائز
بتاتا ہے۔ کلیدوں کے امتزاج X11 ہجے استعمال کرتے ہیں (ctrl+s، alt+Tab،
Return)۔
clipboard_read ایک selection لیتا ہے: clipboard (وہ جو ctrl+C بھرتا ہے،
ڈیفالٹ)، primary (X11 منتخب کر کے کاپی) یا xdnd (جاری ڈریگ)۔ خالی نتیجہ
تینوں کے لیے ایک معمول کا جواب ہے۔ clipboard_write صرف text لیتا ہے —
تصاویر اور فائلیں فائل لین پر سفر کرتی ہیں، کیونکہ ایک ایکشن کے آرگیومنٹس
آڈٹ لاگ میں محفوظ ہو جاتے ہیں اور امیج بائٹس کا وہاں کوئی کام نہیں۔ کلپ بورڈ
کا مواد ناقابل اعتماد ڈیٹا کے طور پر باڑ میں لگا کر واپس آتا ہے۔
browser_use
سیکشن کا عنوان “browser_use”navigate (صرف http/https)، reload (hard اختیاری)، stop_loading،
click (سلیکٹر یا کوآرڈینیٹ)، fill، type، key (DOM کلید نام)،
scroll، mouse_move، drag، left_mouse_down، left_mouse_up،
extract○ (a11y | dom | console)، screenshot○ (full_page
اختیاری)، set_viewport (کم از کم 320×240)، history، wait_for○ (سلیکٹر،
0.1–30 s)، clipboard_read○، clipboard_write۔
ایکسٹریکٹ شدہ صفحہ مواد ناقابل اعتماد ڈیٹا کے طور پر باڑ میں لگا کر واپس آتا ہے۔
براؤزر کے پاس بالکل ایک ہی کلپ بورڈ ہوتا ہے، اس لیے clipboard_read کوئی
selection نہیں لیتا۔ کلپ بورڈ کے دونوں فعل محفوظ کانٹیکسٹ مانگتے ہیں:
سادہ http:// پر پیش کیا گیا صفحہ کلپ بورڈ API بالکل نہیں رکھتا، اور فعل خالی
کلپ بورڈ بتانے کے بجائے یہی بتا دیتا ہے — وہاں type استعمال کریں، جو کلپ
بورڈ سے گزرے بغیر کیریٹ پر داخل کرتا ہے۔
mobile_use
سیکشن کا عنوان “mobile_use”tap، swipe (50–5000 ms)، type، key (عرفی نام back، home،
recents، enter، delete، backspace، tab، escape، search،
menu، volume_up، volume_down، power، یا کوئی بھی KEYCODE_*)،
screenshot○، ui_dump○، install_apk
(رگ کے worktree اور سرور ڈیٹا ڈائریکٹری تک محدود)، start_app،
stop_app، clear_app_data، uninstall_app، open_url، اور shell۔
shell ایک argv فہرست لیتا ہے اور Android کے اندر چلتا ہے، کبھی میزبان شیل
کے ذریعے نہیں؛ یہ logcat، dumpsys اور pm grant جیسی ڈیویلپر تشخیص کا
احاطہ کرتا ہے۔
mobile_use میں کلپ بورڈ کے فعل نہیں۔ Android 10 سے صرف فوکس شدہ ایپ ہی کلپ
بورڈ پڑھ سکتی ہے۔
ios_use
سیکشن کا عنوان “ios_use”tap، swipe (50–5000 ms)، type، key (enter، backspace، tab،
escape، ایرو کلیدیں یا ایک قابلِ طبع حرف؛ اختیاری command،
control، option اور shift موڈیفائرز)، home، lock، unlock،
screenshot○، ui_dump○، install_app (سمیولیٹر .app ڈائریکٹری
جو رگ worktree یا سرور ڈیٹا ڈائریکٹری تک محدود ہو)، start_app، stop_app،
uninstall_app، open_url، اور spawn۔ spawn argv لیتا ہے اور
simctl کے ذریعے سمیولیٹر کے اندر چلتا ہے؛ یہ کبھی میزبان شیل نہیں بلاتا۔
کوآرڈینیٹس iOS اسکرین کے پوائنٹس ہیں، اسکرین شاٹ پکسلز نہیں۔ لائیو اسٹریم سمیولیٹر کا مقرر سائز برقرار رکھتا ہے اور آلے کا سائز بدلنے کے بجائے اسے لیٹر باکس کر دیتا ہے۔ میزبان سے سمیولیٹر اور سمیولیٹر سے میزبان تک متنی کلپ بورڈ کی منتقلی دیگر رگز کی طرح ہی فی صارف، فی سمت اجازت پالیسی استعمال کرتی ہے؛ iOS پیسٹ بورڈ لین فائلیں اور تصاویر قبول نہیں کرتی۔
ہر رگ اپنی ملکیت والا CoreSimulator آلہ اور WebDriverAgent سیشن بناتی ہے۔ اسے بند کرنا WebDriverAgent روکتا ہے، اُس آلے کو بند اور حذف کرتا ہے، اور اس کا رجسٹری اندراج ہٹا دیتا ہے۔ iOS رگز صرف ایسے macOS سرور پر چلتی ہیں جہاں Xcode، ایک انسٹال شدہ iOS رن ٹائم اور پن شدہ آٹومیشن برج موجود ہو۔ یہ کوئی آڈیو، مائیکروفون، فائل ڈراپ، میزبان شیل یا بند نیٹ ورک کی ضمانت فراہم نہیں کرتیں۔
مینجمنٹ ٹولز
سیکشن کا عنوان “مینجمنٹ ٹولز”| ٹول | تفصیل |
|---|---|
rig_list |
کسی ورک اسپیس کی رگز، سطح، اسٹیٹس، ڈسپلے اور کنٹرولر کے ساتھ فہرست کریں |
rig_close |
ایک رگ تباہ کریں اور اس کی ڈسک ضائع کر دیں |
لائف سائیکل
سیکشن کا عنوان “لائف سائیکل”| مرحلہ | مطلب |
|---|---|
provisioning |
بوٹ ہو رہی ہے؛ اسٹیٹس تفصیل موجودہ قدم حرف بہ حرف بتاتی ہے |
ready |
قابلِ رسائی اور ایکشنز قبول کر رہی ہے |
parked |
آئیڈل پارک شدہ: vCPUs رکے ہوئے، RAM پھر بھی موجود؛ اگلا ایکشن اسے جگا دیتا ہے |
closing |
بند ہو رہی ہے |
closed |
ختم؛ قطار آڈٹ ٹریل کے لیے باقی رہتی ہے |
failed |
مر گئی یا کبھی اوپر نہ آئی؛ الگ پہچانی جا سکتی ہے تاکہ UI دوبارہ کوشش پیش کر سکے |
| بندش کی وجہ | کب عمل میں آتی ہے |
|---|---|
requested |
کسی شخص یا ایجنٹ نے مانگا |
idleTimeout |
آئیڈل ونڈو سے 2× زیادہ آئیڈل، یا میموری کی وجہ سے نکالی گئی |
ttlExpired |
سخت عمر ختم ہو گئی |
conversationEnded |
مالک گفتگو ختم ہو گئی |
workspaceGone |
ورک اسپیس حذف ہو گیا یا رکنیت ختم ہو گئی |
serverShutdown |
سرور بند ہو رہا ہے |
backendFailure |
اس کے نیچے ہائپر وائزر مر گیا |
ڈیفالٹس اور حدیں
سیکشن کا عنوان “ڈیفالٹس اور حدیں”| قدر | ٹرمنل | براؤزر | کمپیوٹر | موبائل |
|---|---|---|---|---|
| میموری | 512 MB | 2048 MB (Chromium)؛ 2560 MB (Firefox، WebKit) | 4096 MB | 4096 MB |
| vCPUs | 2 | 2 | 4 | 4 |
| سخت TTL | 8 h | 2 h | 2 h | 2 h |
| آئیڈل ونڈو | 45 min | 15 min | 15 min | 15 min |
| بوٹ ڈسپلے | — | 1280×800 | 1280×800 | 1080×1920 |
- ایجنٹ لین کی اسٹل تصاویر 1280×800 پر محدود ہیں؛ انسانی لین زیادہ سے زیادہ 2560×1600 تک طے کرتی ہے۔
- تمام رگز کے لیے میزبان کا رہائشی میموری بجٹ ڈیفالٹ کے طور پر 12 GB ہے، جو رہائشی میگا بائٹس میں گنا جاتا ہے (پارک شدہ VM پھر بھی اپنی RAM رکھتی ہے)۔ نکالنا سب سے کم حالیہ استعمال شدہ کی بنیاد پر ہوتا ہے اور کبھی ایسی مشین نہیں لے جاتا جسے کوئی چلا رہا ہو، دیکھ رہا ہو، یا جس میں کسی کا ٹرمنل کھلا ہو۔
- کھلا ٹرمنل یا دیکھنے والا ناظر رگ کو پارک ہونے اور آئیڈل ریپنگ سے روکے رکھتا ہے؛ سخت TTL پھر بھی لاگو رہتا ہے۔
پورٹس اور ڈیو ڈومینز
سیکشن کا عنوان “پورٹس اور ڈیو ڈومینز”| پورٹ | کہاں | کس کے لیے مختص |
|---|---|---|
7911 |
ٹرمنل گیسٹ | وہ پورٹ ملٹی پلیکسر جس پر ہر فارورڈ سوار ہوتا ہے |
9222، 9223 |
براؤزر گیسٹ | آٹومیشن ریلے اور اینڈ پوائنٹ (WebKit براہِ راست 9222 پر بائنڈ کرتا ہے اور کوئی ریلے استعمال نہیں کرتا) |
80، 443 |
براؤزر گیسٹ لوپ بیک | ڈیو ڈومین کی HTTP/HTTPS لینیں |
- دریافت سرور کی طرف سے ہر ~4 سیکنڈ میں ٹرمنل گیسٹ کے سننے والے TCP پورٹس پول کرتی ہے۔
- فی رگ زیادہ سے زیادہ 16 پورٹس خودکار طور پر فارورڈ ہوتے ہیں؛ اس سے زیادہ لاگ میں فہرست ہو جاتے ہیں، فارورڈ نہیں ہوتے۔
- میزبان والا فارورڈ لوپ بیک پر بائنڈ کرتا ہے، اور گیسٹ کا اپنا پورٹ نمبر ترجیح دیتا ہے؛ مقامی نیٹ ورک پر شیئر کریں OS کے تفویض کردہ ایک LAN پورٹ کا اضافہ کرتا ہے۔
- ڈیو ڈومینز کو
name.testیاname.localhostسے مطابقت رکھنی چاہیے (چھوٹے حروف، زیادہ سے زیادہ 63 حروف کا لیبل)۔ ایک ڈومین ایک پورٹ پر نقشہ بناتا ہے۔ - ڈیو ڈومین کا HTTPS سرور کی مقامی CA استعمال کرتا ہے (EC P-256،
<dataDir>/rigs/tls/کے نیچے، کلیدیں 0600 اور کبھی کسی گیسٹ میں نہیں) جس میں*.test/*.localhostکے لیے ایک وائلڈ کارڈ لیف ہوتا ہے۔ میزبان پرopensslنہ ہونے کا مطلب ہے کوئی HTTPS لین نہیں؛ سادہ HTTP پھر بھی روٹ ہوتا ہے۔
ایگریس ڈیفالٹس
سیکشن کا عنوان “ایگریس ڈیفالٹس”| سطح | ڈیفالٹ اجازت فہرست |
|---|---|
| ٹرمنل | سینڈ باکس ڈیویلپر بیس لائن (فورجیز، پیکیج رجسٹریاں، ماڈل فراہم کنندگان) + Ubuntu apt مررز + خود worktree کا فورج میزبان |
| براؤزر | usectrl.dev (پروڈکٹ سائٹ) — نیز ہر انجن کے پہلے بوٹ پر Debian آرکائیوز، جب وہ اپنے پیکجز انسٹال کرتا ہے۔ ہوم پیج ایک مقامی file:// دستاویز ہے اور اسے کسی ایگریس کی ضرورت نہیں |
| کمپیوٹر | خالی — سب کچھ مسترد — جب تک کوئی کالر میزبان نہ دے |
| موبائل | نافذ نہیں (ایمولیٹر کے زیرِ انتظام نیٹ ورکنگ) |
ہر microVM کو اضافی طور پر اپنی امیج کے رجسٹری میزبان ملتے ہیں، صرف پل کے لیے۔ کریڈینشل بروکر کے اجازت یافتہ میزبانوں کا مجموعہ اسی اجازت فہرست سے ماخوذ ہے: ایسے میزبان کے لیے کوئی ٹوکن جاری نہیں کیا جاتا جہاں گیسٹ پہنچ ہی نہ سکے۔
کلپ بورڈ اور فائل کی منتقلی
سیکشن کا عنوان “کلپ بورڈ اور فائل کی منتقلی”کاپی/پیسٹ کی دونوں سمتیں، اور فائلیں اندر باہر گھسیٹنا۔ یہ ایسے شخص کے لیے دستیاب ہے جو رگ چلا رہا ہو؛ ایجنٹ کو کلپ بورڈ اوپر والے فعلوں کے ذریعے ملتا ہے اور فائل کی منتقلی بالکل نہیں (اس کے پاس انکلوژر کے اندر پہلے ہی ایک شیل موجود ہے)۔
کلپ بورڈ کا عبور فی صارف اور فی سمت ہے۔ میزبان سے رگ میں پیسٹ ڈیفالٹ کے طور پر اجازت یافتہ ہے؛ رگ سے میزبان کو کاپی پوچھتی ہے (دس منٹ کی اجازت، یا ترتیبات → سرور → رگز → کلپ بورڈ تک رسائی کے تحت ہمیشہ اجازت دیں)۔ دونوں انتخاب آزاد ہیں اور کبھی ورک اسپیس کی ترتیب نہیں ہوتے۔
| لین | راستہ | کیا لے جاتی ہے |
|---|---|---|
| کلپ بورڈ | GET/POST /rig/clipboard/<rigId> |
متن، ایک PNG/JPEG (≤16 MB)، اور کلپ بورڈ پر موجود فائلوں کے گیسٹ پاتھ |
| فائلیں | POST /rig/files/<rigId> |
زیادہ سے زیادہ 64 فائلیں، ہر ایک ≤256 MB اور فی ڈراپ ≤512 MB، اختیاری گیسٹ پکسل ڈراپ پوائنٹ کے ساتھ |
| فائلیں | GET /rig/files/<rigId>?p=<base64url path> |
ایک فائل کے بائٹس، واپس باہر |
- HTTP، RPC نہیں۔ RPC ساکٹ 256 KB سے بڑے آنے والے فریم پر کنکشن بند کر دیتا ہے — یہ ایک DoS گارڈ ہے جو JSON کمانڈز کے لیے درست ہے اور پیسٹ شدہ اسکرین شاٹ کے لیے مہلک۔ بائٹس اُسی طرح کے راستے پر سوار ہوتے ہیں جس پر رگ فریم اور میٹنگ آڈیو پہلے ہی سوار ہوتے ہیں۔
- تصدیق دستخط شدہ ہدف
rig-files:<workspaceId>/<rigId>کے ساتھ ورک اسپیس رکنیت ہے — یہ اپنا الگ ہدف ہے، اس لیے کسی مشین کو دیکھنے کے لیے جاری کیا گیا URL اس میں فائلیں لکھ بھی نہیں سکتا۔ - ٹیک اوور لاگو ہوتا ہے۔ کلپ بورڈ لکھنا اور فائلیں گرانا تبدیلی کرنے والے عمل ہیں اور جب کوئی اور کنٹرول تھامے ہو تو مسترد کر دیے جاتے ہیں؛ کلپ بورڈ پڑھنا اور فائل باہر پڑھنا مشاہدہ ہے اور ایسا نہیں۔
- ڈراپ کہاں اترتے ہیں:
~/Drops(ڈیسک ٹاپ)،~/drops(ٹرمنل — worktree کے ساتھ ساتھ، کبھی اس کے اندر نہیں، تاکہ ڈراپ کبھی غیر ٹریک شدہ تبدیلی کے طور پر ظاہر نہ ہو)،/tmp/cc-drops(براؤزر)۔ ڈائریکٹری سرور چنتا ہے؛ کوئی کالر اس کا نام نہیں رکھ سکتا۔ موجودہ فائلیں کبھی اوور رائٹ نہیں ہوتیں — ٹکرانے والا نام2-name.extکے طور پر اترتا ہے۔ - گیسٹ کو کیا بتایا جاتا ہے: براؤزر صفحے کو مطلوبہ مقام پر ایک حقیقی ڈراپ
ایونٹ ملتا ہے (
Input.dispatchDragEvent)؛ ڈیسک ٹاپ کو فائلیں اور ان کے URIs اس کے کلپ بورڈ پر ملتے ہیں، کیونکہ کوئی میزبان گیسٹ کے اندر پرائیویلجڈ ڈیمن کے بغیر کسی من مانی ٹول کٹ میں XDND ڈریگ ترکیب نہیں کر سکتا۔ جواب بتاتا ہے کہ دونوں میں سے کیا ہوا۔ - باہر گھسیٹنا صرف ڈیسک ٹاپ پر ہے اور ڈریگ جاری ہونے کے دوران گیسٹ کی
XdndSelectionپڑھتا ہے۔ ایسا پے لوڈ جو گیسٹ کے پاس دباؤ شروع ہونے کے وقت پہلے سے موجود تھا، ختم ہو چکے ڈریگ کی پرانی سلیکشن سمجھا جاتا ہے، نئی نہیں — X میں “ڈریگ ختم ہو گیا” کا کوئی مرحلہ نہیں ہوتا۔ - امیج کی شرائط: ڈیسک ٹاپ امیج پروٹوکول 2 یا اس سے بعد کی ہونی چاہیے (کلپ بورڈ سپورٹ آنے کے بعد بنی ہوئی)۔ پرانی امیج 404 جواب دیتی ہے اور ایپ خراب مشین بتانے کے بجائے اسے دوبارہ بنانے کو کہتی ہے۔
- آڈٹ لاگ شکل درج کرتا ہے، کبھی مواد نہیں:
clipboard_read،clipboard_write،drop_filesاورread_fileقطاریں گنتی، سائز اور پاتھ رکھتی ہیں۔ کلپ بورڈ وہ جگہ ہے جہاں کریڈینشلز چند سیکنڈ کے لیے رہتے ہیں، اور اس میں سے کچھ بھی لکھا نہیں جاتا۔
گارڈریلز، ایونٹس، اسٹوریج
سیکشن کا عنوان “گارڈریلز، ایونٹس، اسٹوریج”- رگ ٹولز
enclosureControlایکشن کلاس قرار دیتے ہیں (نیز استعمال والے ٹولز پرnetworkEgressاورprocessSpawn؛mobile_useاورios_useمزیدpackageInstallبھی قرار دیتے ہیں)۔rig_close،enclosureControlقرار دیتا ہے؛rig_listکچھ قرار نہیں دیتا۔ ڈیفالٹ کے طور پر اجازت یافتہ؛ صرف پڑھنے والے موڈز اسے یکسر مسترد کرتے ہیں؛ فی اسپیس خود مختاری ڈائل اسے پہلے پوچھنے تک گھٹا سکتا ہے۔ - ڈومین ایونٹس:
RigClosedEvent(اپنی بندش کی وجہ کے ساتھ)،RigControlChanged(ٹیک اوور / کنٹرول واپسی)،RigReaped(آئیڈل، TTL یا میموری نکالنا، چلانے والے ایجنٹ کے ساتھ)۔ رگ کھولنا کوئی ایونٹ نہیں۔ دیکھیں ڈومین ایونٹس۔ - اسٹوریج: ہر ورک اسپیس ڈیٹا بیس میں
rig_sessionsاورrig_action_log۔ ایکشن لاگ ہر اِن پٹ ایونٹ کو اس کے پرنسپل اور فی رگ ایک مونوٹونک ترتیب کے ساتھ درج کرتا ہے؛ ٹائپ کیا گیا متن لکھے جانے سے پہلے ایک طوالت اور ہیش تک محدود کر دیا جاتا ہے۔ - ڈیٹا ڈائریکٹری:
rigs/images/(درآمد شدہ qcow2 امیجز)،rigs/smolvm/(فی رگ رن ٹائم حالت)،rigs/smolvm-packs/(پہلے سے نکالے گئے مشین پیک)،rigs/tls/(ڈیو ڈومین CA)،rigs/run/(QEMU اوورلے اور سیڈز)۔ - راستے: لائیو ویو کسی اسپیس یا PR صفحے کا ایک ٹیب ہے؛
/settings/server/rigsرگز کی سیٹنگز اسکرین ہے۔