תחנות
עובדות בלבד. למודל שמאחוריהן, קראו תחנות ומתחמים מבודדים; כדי לפתוח מכונה, עקבו אחרי המדריך.
משטחים ומנועים
קטע בשם “משטחים ומנועים”| משטח | מפעיל | מנוע | ערך | תעבורה יוצאת מבודדת |
|---|---|---|---|---|
| מסוף (exec) | מעטפת מעל ערוץ ה-exec של המכונה הווירטואלית | microVM | smolvm |
כן |
| דפדפן | Chromium ללא ממשק גרפי (CDP), Firefox (WebDriver BiDi) או WebKit (W3C WebDriver) | microVM | smolvm |
כן |
| מחשב | שולחן עבודה X11: קלט דרך ההיפרוויזר, לכידה דרך סוכן האורח | QEMU | qemu-hvf (macOS), qemu-kvm (Linux), qemu-tcg (נפילה ללא האצה, לעולם לא נבחר אוטומטית) |
כן |
| Android | Android דרך ADB | האמולטור של Google | android-emulator |
לא — האמולטור מנהל את הרשת שלו בעצמו |
| iOS | סימולטור iOS דרך WebDriverAgent | CoreSimulator | ios-simulator |
לא — הרשת הולכת אחרי מארח ה-Mac |
המסוף ומשטח ה-computer_use חולקים את ערך המשטח computer; המסוף נבדל לפי סימן תמונת ה-exec שלו ולעולם אינו מנוצל מחדש כשולחן עבודה שניתן להפעיל (או להפך). שיחה אחת עושה שימוש חוזר במכונת מסוף אחת.
מנועי דפדפן
קטע בשם “מנועי דפדפן”| מנוע | ערך | פרוטוקול | תצוגה חיה | תמונות |
|---|---|---|---|---|
| Chromium | chromium (ברירת מחדל) |
Chrome DevTools Protocol | שידור מסך — הדפדפן דוחף פריימים כשהדף מצטייר מחדש | JPEG |
| Firefox | firefox |
WebDriver BiDi | תמונות בדגימה (ל-BiDi אין שידור מסך), מוגבלות ל-6 פריימים בשנייה | JPEG |
| WebKit | webkit |
W3C WebDriver (קלאסי) | תמונות בדגימה, מתומללות על ידי ffmpeg של המארח | PNG |
תחנה מריצה מנוע אחד לכל חייה. שיחה אחת יכולה להחזיק תחנה אחת לכל מנוע, וזה מה שמאפשר השוואה זה לצד זה: פתיחת “Firefox (VM)” לצד “Chromium (VM)” היא שתי מכונות, וסגירת אחת משאירה את האחרת פועלת.
העבירו engine אל rig.open או אל הכלי browser_use. שם לא מוכר נדחה במקום ליפול לברירת מחדל — בקשה לדפדפן שמקבלת בשקט דפדפן אחר עונה על שאלת תאימות בתשובה שגויה.
מגבלות ספציפיות לכל מנוע, נאמרות כפי שהן ולא עוקפות אותן:
- ל-Firefox אין רענון שעוקף את המטמון (הוא דוחה את
ignoreCacheשל BiDi באופן מוחלט), ולכן רענון מאולץ הוא רענון רגיל. - גם ל-WebKit אין רענון שעוקף את המטמון, אין הזרמת קונסול (הפלט נלכד על ידי חיבור ל-
console.*אחרי כל ניווט, ולכן כל מה שנרשם בזמן הטעינה מוחמץ — כל חילוץ קונסול אומר זאת), והוא זקוק ל-ffmpegבמארח עבור התצוגה החיה שלו. - אף אחד מהשניים אינו חושף עץ נגישות פלטפורמי מעל הפרוטוקול שלו, ולכן
extract (a11y)מחזיר קירוב שנגזר מה-DOM, ומסומן ככזה. - אף אחד מהשניים לא יכול לקלוט השלכת קובץ אמיתית; עדיין אפשר להצביע על שדה קלט של קובץ אל נתיבים בתוך המכונה.
תמונות מכונה
קטע בשם “תמונות מכונה”| משטח | תמונה | נמשכת |
|---|---|---|
| מסוף | ubuntu:24.04, מוצמדת לפי digest |
אוטומטית באתחול הראשון, דרך הרשת המבוקרת של המכונה עצמה |
| דפדפן (Chromium, Firefox, WebKit) | debian:trixie-slim, מוצמדת לפי digest, בתוספת החבילות של המנוע עצמו |
אוטומטית באתחול הראשון, ואז נשמרת במטמון כחבילה מחוממת מראש |
| מחשב | תמונת שולחן עבודה qcow2 עם Chromium, Firefox, WebKit ואותו קו בסיס של CLI בסגנון ראנר מתארח ב-GitHub שהמסוף מחמם | ייבא תחת הגדרות → שרת → תחנות (הורדות מוצמדות לפי checksum היכן שפורסמו) |
| Android | תמונות המערכת של Google | דרך ה-Android SDK |
| iOS | סביבת הרצה של סימולטור Xcode בתוספת WebDriverAgent מוצמד לפי checksum | סביבת ההרצה דרך Xcode; גשר האוטומציה מתוך הגדרות → שרת → תחנות |
אחרי האתחול הראשון של כל סוג microVM השרת שומר במטמון עותק שחולץ מראש תחת תיקיית הנתונים ומאתחל ממנו כל מכונה מאוחרת יותר — כולל תמונות מחוממות מראש עם החבילות שכבר מותקנות. המסוף מחמם ערכת כלי CLI בסגנון ראנר מתארח ב-GitHub (git, gcc, python3, jq, rsync, כלי ארכיון ושאר קו הבסיס של apt; לא Docker ולא מטמוני כלים של שפות). ה-qcow2 של המחשב אופה את אותם שמות CLI בזמן בניית התמונה, לצד XFCE ושלושת הדפדפנים. כל דפדפן מחמם את המנוע שלו. שלושת המנועים חולקים בסיס Debian אבל לעולם לא חולקים חבילה: המטמון נקבע לפי התמונה, המנוע ומהדורת אודיו (audio-v1-<engine>), מפני שמכונה שחוממה עבור מנוע אחד — או לפני ש-PulseAudio ו-ffmpeg היו חלק מעומס העבודה — אין בה דבר מהאחר. חבילת המסוף נקבעת לפי מהדורת ערכת כלים (tools-v1) מאותה סיבה: חבילה שחוממה לפני שהמהדר היה חלק מהתמונה לא צריכה לשרת מכונה שאמורה לכלול אחד.
אין תמונת אוטומציה אפויה ששווה לקחת — ה-chromedp/headless-shell של Chromium מקמפל החוצה גם את ALSA וגם את PulseAudio, ולכן הוא לעולם לא יפיק קול; היחידה המתוחזקת של Firefox גדולה פי 33 מבסיס Debian ובכל זאת אינה כוללת socat; ואין בכלל תמונה מתוחזקת של WebKit. לכן כל מנוע מותקן בהתנעה הראשונה (chromium, firefox-esr או webkit2gtk-driver) ומגיע תוך כדי כך לארכיוני Debian (deb.debian.org, security.debian.org, cloudfront.debian.net). Chromium הוא הבינארי של ההפצה שמופעל בתור chromium --headless=new.
תמונות מותאמות אישית לפי סביבת עבודה
קטע בשם “תמונות מותאמות אישית לפי סביבת עבודה”| מפתח הגדרה | דורס |
|---|---|
rigs.smolvm.execImage |
תמונת המסוף (VM) |
rigs.smolvm.browserImage |
תמונת הדפדפן (VM) של Chromium |
נכתב דרך מאגר ההגדרות של סביבת העבודה, החסום למנהלים (הגדרות → שרת → תחנות → תמונות מותאמות אישית (סביבת עבודה זו)). הערך חייב להיות הפניית registry — נתיבים מקומיים, ארכיונים ומחרוזות דמויות דגל נדחים, גם בשדה וגם שוב בזמן האתחול. ערך מאוחסן שאינו חוקי מתעלמים ממנו בקול רם ובמקומו מאותחלת ברירת המחדל. ה-registry של התמונה עצמה (בתוספת מארחי blob-CDN ידועים של Docker Hub, GHCR, Quay, GitLab ו-GCR) מתקבל דרך שער התעבורה היוצאת לצורך המשיכה.
חוזה תמונת המסוף — bash קיים; git, curl ו-socat מותקנים מראש או בסיס apt של Debian/Ubuntu (המתחם המבודד מתקין את שלושתם בתוספת ערכת כלי CLI בסגנון ראנר מתארח ב-GitHub בהתנעה הראשונה: מהדרים, Python 3, jq, כלי ארכיון, rsync. מטמוני כלים של שפות ו-Docker אינם מותקנים).
חוזה תמונת הדפדפן — בסיס apt של Debian/Ubuntu (או החבילות שכבר מותקנות) עם bash ו-socat, בתוספת בינארי chromium שהשרת מפעיל בעצמו בתור chromium --headless=new עם DevTools על loopback של האורח 9223, וממוסר אל פורט האורח 9222. PulseAudio ו-ffmpeg מותקנים בהתנעה הראשונה עבור נתיב האודיו. אל תבנו FROM chromedp/headless-shell: ה-headless.gn במעלה הזרם מקמפל החוצה גם את ALSA וגם את PulseAudio, ולכן הבינארי הזה לא יכול להפיק קול. העקיפה חלה על תחנות Chromium בלבד — פקודת עומס העבודה שהוא מאתחל היא של Chromium, והעברתה ל-Firefox או ל-WebKit תפעיל בינארי שאינו שם. תחנת Firefox או WebKit מתעלמת ממנה בקול רם ומאתחלת את התמונה המוצמדת שלה.
פורטי אוטומציה — כל מכונת דפדפן מעבירה בדיוק פורט loopback אחד של המארח אל האורח 9222. מאחוריו: ה-DevTools של Chromium והסוכן המרוחק של Firefox יושבים על loopback של האורח 9223 עם ממסר socat לפניהם (שניהם נקשרים ל-loopback ללא תנאי); הדרייבר של 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 שניות), type, wait○ (0–60 שניות), 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 שניות), clipboard_read○, clipboard_write.
תוכן דף שחולץ חוזר עטוף כנתון לא מהימן.
לכל דפדפן יש בדיוק לוח גזירים אחד, ולכן clipboard_read אינו מקבל selection. שני פעלי לוח הגזירים זקוקים להקשר מאובטח: לדף שמוגש מעל http:// פשוט אין בכלל API של לוח גזירים, והפעל אומר זאת במקום לדווח על לוח ריק — השתמשו שם ב-type, שמכניס בסמן בלי לעבור דרך לוח גזירים.
mobile_use
קטע בשם “mobile_use”tap, swipe (50–5000 מילישניות), type, key (כינויים back, home, recents, enter, delete, backspace, tab, escape, search, menu, volume_up, volume_down, power, או כל KEYCODE_*), screenshot○, ui_dump○, install_apk (מוגבל לעץ העבודה של התחנה ולתיקיית הנתונים של השרת), 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 מילישניות), type, key (enter, backspace, tab, escape, מקשי חצים או תו הדפסה אחד; ערכי שינוי אופציונליים command, control, option ו-shift), home, lock, unlock, screenshot○, ui_dump○, install_app (תיקיית .app של סימולטור, מוגבלת לעץ העבודה של התחנה או לתיקיית הנתונים של השרת), 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 |
בחניה מחוסר פעילות: מעבדים וירטואליים מופסקים, ה-RAM נשאר תופס; הפעולה הבאה מעירה אותה |
closing |
נסגרת |
closed |
נעלמה; השורה נשארת לצורך שביל הביקורת |
failed |
מתה או לא עלתה כלל; ניתנת להבחנה כך שהממשק יכול להציע ניסיון חוזר |
| סיבת סגירה | מופעלת כאשר |
|---|---|
requested |
אדם או סוכן ביקשו |
idleTimeout |
חוסר פעילות מעבר לפי 2 מחלון חוסר הפעילות, או פינוי בגלל זיכרון |
ttlExpired |
תוחלת החיים הקשיחה נגמרה |
conversationEnded |
השיחה הבעלים הסתיימה |
workspaceGone |
סביבת העבודה נמחקה או שהחברות אבדה |
serverShutdown |
השרת נעצר |
backendFailure |
ההיפרוויזר מת מתחתיה |
ברירות מחדל ותקרות
קטע בשם “ברירות מחדל ותקרות”| ערך | מסוף | דפדפן | מחשב | נייד |
|---|---|---|---|---|
| זיכרון | 512 MB | 2048 MB (Chromium); 2560 MB (Firefox, WebKit) | 4096 MB | 4096 MB |
| מעבדים וירטואליים | 2 | 2 | 4 | 4 |
| TTL קשיח | 8 שעות | 2 שעות | 2 שעות | 2 שעות |
| חלון חוסר פעילות | 45 דקות | 15 דקות | 15 דקות | 15 דקות |
| תצוגת אתחול | — | 1280×800 | 1280×800 | 1080×1920 |
- תמונות בערוץ הסוכן מוגבלות ל-1280×800; הערוץ האנושי מנהל משא ומתן עד 2560×1600.
- תקציב הזיכרון התופס של המארח עבור כל התחנות עומד כברירת מחדל על 12 GB, ונמדד במגה-בייט תופסים (מכונה וירטואלית בחניה עדיין מחזיקה את ה-RAM שלה). הפינוי הוא לפי השימוש הישן ביותר, ולעולם לא לוקח מכונה שמישהו מפעיל, צופה בה, או שיש בה מסוף פתוח.
- מסוף פתוח או ערוץ צפייה מצמידים את התחנה ומונעים ממנה לחניה ולהיקטף מחוסר פעילות; ה-TTL הקשיח עדיין חל.
פורטים ודומייני פיתוח
קטע בשם “פורטים ודומייני פיתוח”| פורט | היכן | שמור ל- |
|---|---|---|
7911 |
אורח המסוף | מרבב הפורטים שכל העברה רוכבת עליו |
9222, 9223 |
אורח הדפדפן | הממסר ונקודת הקצה של האוטומציה (WebKit נקשר ל-9222 ישירות ואינו משתמש בממסר) |
80, 443 |
loopback של אורח הדפדפן | נתיבי ה-HTTP/HTTPS של דומיין הפיתוח |
- הגילוי סוקר בצד השרת את פורטי ה-TCP המאזינים של אורח המסוף כל ~4 שניות.
- לכל היותר 16 פורטים מועברים אוטומטית לכל תחנה; נוספים נרשמים ביומן ולא מועברים.
- ההעברה בצד המארח נקשרת ל-loopback, ומעדיפה את מספר הפורט של האורח עצמו; שתף ברשת המקומית מוסיף פורט LAN שהוקצה על ידי מערכת ההפעלה.
- דומייני פיתוח חייבים להתאים ל-
name.testאו ל-name.localhost(אותיות קטנות, תווית של 63 תווים לכל היותר). דומיין אחד ממופה לפורט אחד. - HTTPS של דומיין פיתוח משתמש ברשות אישורים מקומית לשרת (EC P-256, תחת
<dataDir>/rigs/tls/, מפתחות 0600 ולעולם לא בתוך אורח) עם עלה wildcard אחד עבור*.test/*.localhost. איןopensslבמארח פירושו שאין נתיב HTTPS; HTTP פשוט עדיין מנותב.
ברירות מחדל של תעבורה יוצאת
קטע בשם “ברירות מחדל של תעבורה יוצאת”| משטח | רשימת היתרים כברירת מחדל |
|---|---|
| מסוף | קו הבסיס של מפתחים בארגז החול (מארחי קוד, מרשמי חבילות, ספקי מודלים) + מראות ה-apt של Ubuntu + מארח הקוד של עץ העבודה עצמו |
| דפדפן | usectrl.dev (אתר המוצר) — בתוספת ארכיוני Debian באתחול הראשון של כל מנוע, בזמן שהוא מתקין את החבילות שלו. דף הבית הוא מסמך file:// מקומי ואינו זקוק לתעבורה יוצאת |
| מחשב | ריקה — לחסום הכול — עד שקורא כלשהו מעניק מארחים |
| נייד | לא נאכפת (רשת מנוהלת על ידי האמולטור) |
כל microVM מקבל בנוסף את מארחי ה-registry של התמונה שלו, לצורך המשיכה בלבד. קבוצת המארחים המותרים של מתווך אישורי הגישה נגזרת מאותה רשימת היתרים: לא מונפק אסימון עבור מארח שהאורח לא יכול להגיע אליו.
לוח גזירים והעברת קבצים
קטע בשם “לוח גזירים והעברת קבצים”שני הכיוונים של העתקה והדבקה, וגרירת קבצים פנימה והחוצה. זמינים לאדם שמפעיל תחנה; סוכן מקבל את לוח הגזירים דרך הפעלים שלמעלה, ובכלל לא העברת קבצים (ממילא יש לו מעטפת בתוך המתחם המבודד).
החציה של לוח הגזירים היא לפי משתמש ולפי כיוון. הדבקה מהמארח לתחנה מותרת כברירת מחדל; העתקה מהתחנה למארח מבקשת אישור (אישור לעשר דקות, או לאפשר תמיד תחת הגדרות → שרת → תחנות → גישה ללוח). שתי הבחירות בלתי תלויות ולעולם אינן הגדרה של סביבת עבודה.
| נתיב | מסלול | נושא |
|---|---|---|
| לוח גזירים | 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>בתוספת חברות בסביבת העבודה — יעד משל עצמו, כך שכתובת שהונפקה כדי לצפות במכונה לא יכולה גם לכתוב לתוכה קבצים. - ההשתלטות חלה. כתיבה ללוח הגזירים והשלכת קבצים הן פעולות משנות ונדחות כשמישהו אחר מחזיק בשליטה; קריאה מלוח הגזירים והוצאה של קובץ החוצה הן תצפית ולכן אינן נדחות.
- היכן ההשלכות נוחתות:
~/Drops(שולחן עבודה),~/drops(מסוף — לצד עץ העבודה, לעולם לא בתוכו, כך שהשלכה לעולם לא מופיעה כשינוי שאינו במעקב),/tmp/cc-drops(דפדפן). השרת בוחר את התיקייה; קורא לא יכול לתת לה שם. קבצים קיימים לעולם אינם נדרסים — שם מתנגש נוחת בתור2-name.ext. - מה נאמר לאורח: דף בדפדפן מקבל אירוע השלכה אמיתי בנקודה המבוקשת (
Input.dispatchDragEvent); שולחן עבודה מקבל את הקבצים בתוספת ה-URI שלהם בלוח הגזירים שלו, מפני שאף מארח לא יכול לסנתז גרירת XDND אל ערכת כלים כלשהי בלי דמון בעל הרשאות בתוך האורח. התשובה מציינת מה משני אלה קרה. - גרירה החוצה היא לשולחן עבודה בלבד וקוראת את ה-
XdndSelectionשל האורח בזמן שגרירה באוויר. מטען זהה למה שהאורח כבר החזיק כשהלחיצה החלה נחשב לבחירה מיושנת מגרירה שהסתיימה, ולא לחדשה — ל-X אין שלב של “הגרירה נגמרה”. - דרישות התמונה: תמונת שולחן העבודה חייבת להיות פרוטוקול 2 ואילך (נבנתה אחרי שנכנסה תמיכת לוח הגזירים). תמונה ישנה יותר מחזירה 404, והיישום אומר לבנות אותה מחדש במקום לדווח על מכונה מקולקלת.
- יומן הביקורת רושם את הצורה, ולעולם לא את התוכן: שורות
clipboard_read,clipboard_write,drop_filesו-read_fileנושאות ספירות, גדלים ונתיבים. לוח גזירים הוא מקום שבו אישורים חיים לכמה שניות בכל פעם, ושום דבר מהם אינו נרשם.
מעקות בטיחות, אירועים ואחסון
קטע בשם “מעקות בטיחות, אירועים ואחסון”- כלי תחנה מצהירים על מחלקת הפעולות
enclosureControl(בתוספתnetworkEgressו-processSpawnבכלי ה-use;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/(רשות האישורים של דומיין הפיתוח),rigs/run/(שכבות-על וזרעים של QEMU). - נתיבים: התצוגה החיה היא לשונית במרחב או בדף בקשת משיכה;
/settings/server/rigsהוא מסך ההגדרות של תחנות.