הפקודה ploa היא הדרך האחרת ל-Ploa: מהטרמינל, ב-CI, או בלי סוכן בכלל. היא בונה על המחשב שלך, בודקת את הפרויקט, שולחת את מה שבנית, מעלה גרסת אתר, ומריצה את שרת ה-MCP שהסוכן שלך משתמש בו. מה שצריך את האישור שלך מחכה לו גם כשמבקשים מכאן. ploa --help מציגה את הרשימה הזו בטרמינל.
התקנה ועדכון
curl -fsSL https://ploa.dev/install.sh | sh # macOS and Linux; or: npm install -g @ploa/cli
irm https://ploa.dev/install.ps1 | iex # Windows, in PowerShell
ploa update # the newest version (--check only says whether there is one)
ploa --version # or: ploa version, ploa -v
צריך Node 24 ומעלה. כשהותקנה מ-npm, ploa update אומרת להשתמש במקום זה ב-npm install -g @ploa/cli@latest; npx -y @ploa/cli <command> מריצה כל פקודה בלי להתקין. עוד בהתקנת ה-CLI.
אפשרויות לכל פקודות הפרויקט
אפשרות
מה היא עושה
--dir <path>
התיקייה של האפליקציה. בלעדיה, התיקייה שבה אתה נמצא; פקודות הפרויקט עובדות גם מהתיקייה שמעל האפליקציה (למשל ריפו שבו האפליקציה ב-mobile/).
בבניות ובבקשות: מתחילה וחוזרת, ועוקבים בלוח הבקרה.
-h, help
רשימת הפקודות.
חשבון
פקודה
מה היא עושה
ploa login [--no-browser] [--server <url>]
מתחברת עם קוד שמאשרים בדפדפן, ושם בוחרים את הרמה (הרשאות ואישורים). --no-browser מדפיסה את הקישור במקום לפתוח אותו; --server לשרת Ploa אחר במקום ploa.dev.
ploa logout
מתנתקת ומבטלת בשרת את הטוקן של המחשב הזה.
ploa whoami
מי מחובר: מייל, תפקיד, סביבת עבודה, רמה ושרת.
ploa update [--check]
מתקינה את ה-ploa החדשה ביותר. --check רק אומרת אם יש כזו.
ploa doctor
האם המחשב הזה מוכן לבנות ולשלוח: Node, ploa, git, Xcode, CocoaPods, Java, ה-Android SDK, Flutter, מקום בדיסק, ההתחברות והאם התיקייה מקושרת, כל אחד עם התיקון שלו.
פרויקט
פקודה
מה היא עושה
ploa init [--apple <name>] [--google <name>]
מקשרת את האפליקציה הזו ל-Ploa וכותבת ploa.json: מוצאת את האפליקציה ב-Ploa לפי ה-bundle ID או שם החבילה, או מוסיפה אותה. --apple / --google בוחרות את חיבור החנות כשיש בסביבת העבודה כמה. סוכן עושה את אותו הדבר עם ploa_link, ולכן כשעובדים עם סוכן אין בה צורך.
ploa init --aab <file> --ipa <file>
מקשרת אפליקציה שנבנתה בדרך אחרת (Unity, .NET MAUI…), עם המזהים מתוך מה שנבנה. מספיק אחד מהשניים.
ploa status
מה יש בחנויות על האפליקציה הזו עכשיו.
ploa icon
שולחת עכשיו את האייקון של האפליקציה ל-Ploa (status, preflight והשחרורים עושים את זה לבד כשהוא השתנה).
ploa preflight [--github] [--changed]
מה החנויות היו דוחות, לפני שבונים. --github: ב-GitHub Actions, נכנסת בשם ההרצה ומסמנת את השורות ב-pull request. --changed: בודקת כל אפליקציה שמקושרת לריפו שה-pull request משנה.
ploa privacy
מה הקוד מגלה על המידע שהוא אוסף, בשביל App Privacy ו-Data safety.
ploa files
הקבצים שבנייה ב-GitHub קוראת ואין אותם ב-git, ואיפה כל אחד נמצא.
ploa files push [<path>…]
שולחת אותם מכאן (google-services.json, .env…) לאישור שלך ב-ploa.dev; קבצים שלא אושרו נמחקים אחרי 24 שעות.
שחרור: אנדרואיד
# Build here, sign with the upload key Ploa keeps, straight to internal testing
ploa release android [--version-code <n|auto>]
# Ship a bundle built any way, with the version it says
ploa release android --aab app.aab
# Build and check here, keep the bundle, send nothing (before Google Play has the app, too)
ploa release android --no-upload
# Also ask a person to approve a rollout, and wait for the answer
ploa release android --promote production --rollout 10
# Promote something already uploaded
ploa release android --release <id> --promote production --rollout 10
# Build in your own Google Cloud, from what's pushed
ploa release android --gcp [--sha <commit>]
אפשרות
מה היא עושה
--version-code <n|auto>
קוד הגרסה: מספר, או auto לפנוי הבא. בלעדיה, זה שבפרויקט.
--aab <file>
שולחת bundle שנבנה בכל דרך (Unity, .NET MAUI, הגדרת Gradle משלך), עם הגרסה שכתובה בו.
--promote production|beta|alpha
מבקשת את האישור שלך להעביר למסלול הזה, ומחכה לתשובה (--no-wait חוזרת מיד).
--rollout <percent>
אחוז המשתמשים בהפצה הדרגתית, 1 עד 100. כברירת מחדל, כולם.
--release <id>
עובדת על גרסה שכבר הועלתה במקום לבנות (עם --promote).
--gcp [--sha <commit>]
בונה בפרויקט Google Cloud שלך עם Cloud Build, ממה שנדחף; Google מחייבת את הדקות על הפרויקט הזה (מגדירים בהגדרות › בניות). Ploa חותמת על ה-bundle כמו תמיד: שום מפתח לא עובר ל-Google.
--force
בונה גם כשהבדיקה המקדימה מוצאת בעיות.
הבנייה עוברת מהמחשב הזה ישר ל-Google Play: Ploa חותמת רק על קובץ החתימה שלה ופותחת את ההעלאה מול Google, כך שלא מפתח ההעלאה ולא הגישה של Ploa ל-Google Play מגיעים למחשב הזה. אם ההעלאה הישירה לא עוברת, הבנייה עוברת במקום זה דרך Ploa. עוד בבניות וחתימה.
שחרור: iOS
# Build on this Mac, signed with Ploa's key, then TestFlight
ploa release ios [--build-number <n|auto>]
# Ship an .ipa, .app or .xcarchive built any way
ploa release ios --ipa App.ipa
# Build and sign here without sending: a check of the build
ploa release ios --no-upload
# Apple builds and signs it in Xcode Cloud
ploa release ios --xcode-cloud [--workflow "Release"] [--branch main]
# Ask a person to approve each next step
ploa release ios --release <id> --submit [--replace]
ploa release ios --release <id> --withdraw
ploa release ios --release <id> --app-store
ploa release ios --release <id> --phased pause|resume|complete
אפשרות
מה היא עושה
--build-number <n|auto>
מספר הבנייה; עם auto, הפנוי הבא.
--ipa <file>
שולחת אפליקציה שנבנתה בכל דרך, עם הגרסה שכתובה בה. אפליקציה שלא חתומה ל-App Store (development, ad hoc, לא חתומה) נחתמת כאן, בכל מחשב, באותה דרך.
--resign
חותמת מחדש --ipa גם כשהוא כבר חתום ל-App Store.
--submit
מבקשת גם את האישור שלך להגיש ל-App Review ברגע שהבנייה מגיעה ל-TestFlight.
--no-upload
בונה וחותמת בלי לשלוח ל-Apple.
--sign keychain
הדרך הישנה: המפתח ב-keychain זמני על ה-Mac הזה בזמן ש-Xcode חותם. כברירת מחדל המפתח נשאר ב-Ploa, וה-Mac הזה שולח ל-Ploa רק את מה שהוא חותם עליו.
Apple בונה וחותמת ב-Xcode Cloud ממה שנדחף (main אלא אם --branch), ו-Ploa עוקבת אחריה עד TestFlight; המפתח נשאר אצל Apple.
--release <id> --submit [--replace]
מבקשת את האישור שלך להגיש בנייה מ-TestFlight ל-App Review. --replace מוציאה את הבנייה של הגרסה שנמצאת עכשיו ב-App Review ומגישה את זו במקומה.
--release <id> --withdraw
מבקשת את האישור שלך למשוך את הגרסה מ-App Review.
--release <id> --app-store
מבקשת את האישור שלך לשחרר ב-App Store את הגרסה ש-App Review אישר.
--release <id> --phased pause|resume|complete
מבקשת את האישור שלך להשהות, להמשיך או לסיים את השחרור ההדרגתי של הגרסה.
--force
בונה גם כשהבדיקה המקדימה מוצאת בעיות.
בניות iOS רצות על ה-Mac שלך, ב-GitHub או ב-Xcode Cloud. ploa xcode-cloud מכינה את הריפו ל-Xcode Cloud (ה-ios/ של אפליקציית Expo נוצר אחרי ש-Xcode Cloud משכפל אותה) ואומרת מה נשאר להגדיר ב-Xcode. עוד בהגדרת Xcode Cloud.
אתרים ואפליקציות ווב
האתר של האפליקציה, באחסון של Ploa בכתובת חינמית <name>.ploa.app או בדומיין שלך. עוד בווב: אתר ואפליקציית ווב.
בונה את האתר עם הפריימוורק שלו (Expo, Vite, Next static export, Astro, SvelteKit, Nuxt, Angular, Gatsby, Hugo, Flutter ועוד) ושולחת את התיקייה הבנויה כגרסה חדשה. Ploa ממספרת אותה (מ-app.json או מ-package.json, אלא אם --version), בודקת אותה ומעלה אותה לכתובת בדיקה משלה. --no-build שולחת את מה שכבר בנוי; --create <address> יוצרת קודם את האתר כשאין בסביבת העבודה אף אחד. ploa web deploy זהה.
ploa web release [<build>] [--site <address>] [--at <date and time>]
מעלה לאוויר גרסה שנבדקה, החדשה ביותר שמחכה או הבנייה שצוינה, עכשיו או בזמן מסוים (כמו 2026-11-06T09:00). את זה מאשרים בעצמך ב-ploa.dev, אלא אם הטוקן אוטונומי.
ploa web status [--site <address>]
האתרים, הכתובות והגרסאות שלהם.
ploa web rollback [--site <address>] [--version <build>]
חוזרת מיד לגרסה שהייתה באוויר לפני כן, או לזו שצוינה.
ploa web domain [<domain>] [--site <address>]
מחברת דומיין שלך ומדפיסה את רשומות ה-DNS שצריך להוסיף (Ploa לא מוכרת דומיינים). בלי דומיין, בודקת את הדומיינים של האתר.
השרת של האפליקציה
צד השרת של אפליקציית הווב: API משלה, משימות מתוזמנות ו-Postgres, בענן של Ploa או ב-Google Cloud שלך.
פקודה
מה היא עושה
ploa server
איפה השרת של האפליקציה עומד: הכתובת, הגרסה ומסד הנתונים שלו.
ploa server create --ploa | --own <project> [--region <region>]
יוצרת אותו בענן של Ploa (ב-Pro וב-Team, עם המקום שהתוכנית נותנת לכל אפליקציה) או בפרויקט Google Cloud שלך, ש-Google מחייבת אותך עליו (בכל תוכנית).
ploa server retry
מנסה שוב: ליצור אותו אחרי כישלון, או למחוק אותו.
ploa server deploy [--folder <dir>] [--github [--sha <commit>]] [--no-wait]
שולחת את תיקיית השרת (עם ה-Dockerfile שלה, או Node, Python, Go, Java, Ruby, PHP או .NET כמו שהם) כגרסה חדשה, או ש-Ploa לוקחת אותו מהריפו של האפליקציה ב-GitHub.
ploa server env [NAME=value…] [--secret] [--remove <NAME>]
משתני הסביבה של השרת; הגדרה שלהם מפעילה מחדש את הגרסה שבאוויר איתם. --secret שומרת את הערכים מוסתרים.
ploa server logs [--text <words>] [--since <time>] [--job <name>]
הלוגים של השרת, מסוננים לפי מילים, זמן או משימה.
ploa server run "<command>"
מריצה פקודה פעם אחת עם הגרסה שבאוויר (בלי SSH: הפלט בלוגים).
ploa server jobs [--name <n> --schedule "<cron>" --command "<cmd>"] [--remove <n>]
מציגה את המשימות המתוזמנות, מוסיפה או משנה אחת, או מסירה אחת.
ploa server sql "<query>" [--write]
שאילתה על מסד הנתונים בתפקיד של השרת עצמו; לקריאה בלבד אלא אם --write, שצריכה רמת פרודקשן.
ה-Mac הזה כ-runner של GitHub
לבניות iOS ב-GitHub, מה-workflow של הריפו עצמו, על ה-Mac שלך.
פקודה
מה היא עושה
ploa runner add [--repo <owner/name>]
מורידה את ה-runner של GitHub, רושמת אותו לריפו ומריצה אותו כשירות. כשהיא מבקשת, מדביקים את הטוקן מהדף "New self-hosted runner" של GitHub, או מעבירים אותו בצינור (pbpaste | ploa runner add), אף פעם לא בשורת הפקודה.
ploa runner status
ה-runners על ה-Mac הזה, והאם כל אחד רץ.
ploa runner remove [--repo <owner/name>]
עוצרת אחד, מסירה אותו מ-GitHub ומוחקת אותו.
סוכנים
פקודה
מה היא עושה
ploa mcp
שרת ה-MCP של Ploa על stdio. הסוכנים מפעילים אותו בעצמם, בתיקייה של האפליקציה או עם --dir.
מוסיפה את Ploa להגדרות ה-MCP של הסוכנים (כברירת מחדל, אלה שנמצאו על המחשב הזה). הפרטים בחיבור הסוכן.
ב-GitHub Actions ובשרתים של Ploa
אלה רצות בתוך בניות; לא מקלידים אותן בעצמך.
ploa release android|ios --github --app=<id> --queued=<id> --nonce=<n>: הבנייה ש-Ploa התחילה ב-GitHub. ה-workflow ש-Ploa כותבת מריץ אותה, במכונות של GitHub, או ל-iOS על ה-Mac שלך כ-runner או על ה-Mac של GitHub כשבעלים התירו. ראה בניות ב-GitHub Actions.
ploa preflight --github: הבדיקה בכל pull request.
ploa web-host רצה במכונות האחסון של Ploa עצמה.
משתני סביבה
משתנה
מה הוא עושה
PLOA_TOKEN
טוקן מהגדרות › טוקנים, במקום ההתחברות השמורה (ל-CI ולשרתים).
PLOA_SERVER
שרת Ploa אחר במקום השמור.
PLOA_APP
המזהה של האפליקציה, ל-ploa preflight ולבניות ב-GitHub Actions כשאין ploa.json. שאר הפקודות, ושרת ה-MCP, צריכים תיקייה מקושרת.
PLOA_CONFIG
איפה ההתחברות נשמרת, במקום ~/.config/ploa/config.json.
ploa.json
ploa init כותבת אותו בתיקייה של האפליקציה, או הסוכן שלך עם ploa_link: המזהה של האפליקציה ב-Ploa והשרת. אין בו סודות; עושים לו commit כדי שהצוות, הסוכנים וה-CI יעבדו על אותה אפליקציה. אותו קובץ יכול להחזיק גם את הכללים של האתר (הכללים של האתר), והם נשמרים כשהוא נכתב מחדש.