# אפליקציית Mac

> הרץ/י את Skynet על ה-Mac שלך עם סוכן הקוד שלך ו-Docker.

אפליקציית ה-Mac של Skynet מריצה את Skynet על המחשב שלך. היא שולחת קריאות למודל דרך CLI לקוד שמחובר ב-Mac שלך, כך שהמנוי שלך ל-CLI משלם על הקריאות האלה. אפשר גם לקשר את האפליקציה לחשבון Skynet המתארח שלך.

## דרישות

- Mac עם Apple silicon. יש גרסאות ל-Intel, אבל אף אחד לא בדק אותן על חומרת Intel.
- Docker Desktop פועל, עם ההגדרה **Use Rosetta for x86_64/amd64 emulation** מופעלת.
- CLI לקוד אחד, מחובר:
  - Claude Code (`claude`) בגרסה 2.1.226 ומעלה, או
  - Codex (`codex`) בגרסה 0.160.0 ומעלה.

> [!WARNING]
> Codex חייב להשתמש בהתחברות עם ChatGPT. התחברות עם מפתח API לא נחשבת. גם התחברות שנשמרה ב-Keychain של macOS לא נחשבת.

### הגדרת Codex

Codex חייב לשמור את פרטי ההתחברות שלו בקובץ. בצע/י את השלבים האלה לפני ההפעלה הראשונה:

1. פתח/י את `~/.codex/config.toml` והוסף/הוסיפי את השורה הזו:

```toml
cli_auth_credentials_store = "file"
```

2. התחבר/י עם חשבון ה-ChatGPT שלך:

```bash
codex login
```

## התקנת האפליקציה

הגרסאות חתומות בחתימת ad hoc ולא עברו notarization. macOS חוסם אותן עד שמסירים את דגל ההסגר (quarantine).

1. פתח/י את קובץ ה-`.dmg`.
2. גרור/גררי את **Skynet** אל **Applications**.
3. הרץ/הריצי את הפקודה הזו ב-Terminal:

```bash
xattr -dr com.apple.quarantine /Applications/Skynet.app
```

4. פתח/י את Skynet מתוך **Applications**.

> [!NOTE]
> ההפעלה הראשונה לוקחת כמה דקות. האפליקציה בונה image מקומי של sandbox ומכינה את מסד הנתונים שלה.

## מה קורה בהפעלה

האפליקציה מבצעת את השלבים האלה לפי הסדר:

1. היא קוראת את ה-`PATH` מ-login shell שלך, כדי למצוא את Docker ואת ה-CLI.
2. היא בודקת את Docker ואת ה-CLI לקוד.
3. היא מפעילה מסד נתונים Postgres מקומי ב-Docker.
4. היא בונה את ה-image של ה-sandbox‏ `skynet-local-sandbox` עבור `linux/amd64`. Docker מריץ אותו תחת Rosetta.
5. היא מעדכנת את הסכמה של מסד הנתונים.
6. היא מפעילה את ה-API המקומי ואת אפליקציית הווב, ומציגה את אפליקציית הווב בחלון.

### בדיקות ההתחלה

האפליקציה מציגה רשימה של בדיקות: **Docker**, **CLI לקוד**, **מחובר**, **מגבלת שימוש**, **שירותים מקומיים** ו-**חשבון**. אם בדיקה נכשלת, האפליקציה מציגה מסך שמסביר מה לעשות:

| מסך                               | מה לעשות                                                             |
| --------------------------------- | -------------------------------------------------------------------- |
| **צריך להתקין את Docker Desktop** | התקן/י את Docker Desktop.                                            |
| **צריך להפעיל את Docker**         | הפעל/י את Docker Desktop.                                            |
| **צריך להתקין CLI לקוד**          | התקן/י את Claude Code או את Codex.                                   |
| **צריך לעדכן את ה-CLI**           | עדכן/י את ה-CLI לגרסה המינימלית שלמעלה.                              |
| **צריך להתחבר ל-CLI**             | התחבר/י ל-CLI ב-Terminal.                                            |
| **הגעת למגבלת השימוש**            | חכה/חכי לזמן האיפוס. אפשר להתחיל אופטימיזציות חדשות שוב אחרי האיפוס. |

לחץ/י על **לבדוק שוב** אחרי תיקון הבעיה. לחץ/י על **לפתיחת היומנים** כדי לראות את קובצי הלוג. במסך **הגעת למגבלת השימוש**, אפשר ללחוץ על **לפתוח את Skynet בכל זאת**.

## ריצות מקומיות

באפליקציה, קריאות למודל עוברות דרך ה-CLI ב-Mac שלך. תפריט המודלים מציג את המצב הזה כ-**מקומי**. הרמז אומר: "המנוי שלכם משלם על הקריאות, כך שהמודל הזה מוסיף $0 לריצה."

שמות ה-CLI באפליקציה הם **Claude Code** ו-**Codex**.

> [!NOTE]
> האפליקציה מסירה מפתחות API מהסביבה של התהליכים שהיא מפעילה. כך ה-CLI משתמש במנוי שלך, ולא במפתח API.

### הרצת המציע ב-CLI שלך

ההגדרה **הרצת המציע ב-CLI שלי** קובעת איפה סוכן המציע (proposer) רץ. האפשרויות הן **מנוע הסוכן (ברירת מחדל)** ו-**כבוי (מציע בסביבה מבודדת)**.

**הרשאות המציע** קובעת למה ה-CLI יכול לגשת:

- **סביבת העבודה בלבד** היא ברירת המחדל. היא מסתמכת על ה-sandbox של כל CLI.
- **גישה מלאה** מריצה את ה-CLI עם הרשאות המשתמש שלך.

> [!WARNING]
> עם **גישה מלאה**, ה-CLI יכול לקרוא, לשנות ולמחוק כל קובץ שאת/ה יכול/ה, ולגשת לרשת. מצב acceptEdits של Claude לא מבודד את הרשת, גם עם **סביבת העבודה בלבד**.

### תיוג באפליקציה

תיוג עם AI באפליקציית ה-Mac צריך מפתח ספק משלך. בחר/י מודל תחת **המפתח שלך**. ראה/ראי [תיוג נתונים עם כלי התיוג](/docs/he/guides/tagger).

## קישור לחשבון Skynet שלך

אפשר להשתמש באפליקציה בלי חשבון. לשם כך, לחץ/י על **להמשיך בלי להתחבר**. כדי לסנכרן עם החשבון המתארח שלך, קשר/י את האפליקציה.

### קישור ה-Mac הזה

1. בשלב **התחברות ל-Skynet**, האפליקציה פותחת את העמוד **קישור ה-Mac הזה לחשבון Skynet שלכם** בדפדפן ברירת המחדל.
2. התחבר/י ל-Skynet בדפדפן אם הוא מבקש.
3. בדוק/בדקי את הרשימה תחת **אחרי הקישור, ה-Mac הזה יוכל:**.
4. לחץ/י על **קישור ה-Mac הזה**. העמוד מציג "חוזרים לאפליקציית ה-Mac…".

אם ההתחברות נכשלת או שאת/ה מבטל/ת, האפליקציה מציגה **לנסות שוב** ו-**להמשיך בלי להתחבר**.

אחרי הקישור, ה-Mac יכול:

- לראות את השם והאימייל שלך.
- לראות את היתרה שלך.
- לסנכרן את הריצות שלך עם החשבון.
- להשתמש במודלים המתארחים, בתשלום מהיתרה שלך.
- להשתמש במקורות הנתונים המחוברים שלך.
- לחפש ולגלוש באינטרנט דרך Skynet.

הקישור משתמש בתהליך התחברות מאובטח (OAuth עם PKCE). האפליקציה שומרת את הטוקנים שלה מוצפנים ב-Mac שלך. כשמבטלים את הקישור, Skynet מבטל את הטוקנים.

### מגבלות קישור

| מגבלה                          | ערך                                |
| ------------------------------ | ---------------------------------- |
| מחשבי Mac מקושרים לכל חשבון    | 10                                 |
| משך החיים של access token      | שעה אחת, ואז האפליקציה מרעננת אותו |
| זמן קצוב לחוסר פעילות של קישור | 30 ימים בלי שימוש                  |
| גיל מרבי של קישור              | 365 ימים                           |

אחרי הזמן הקצוב לחוסר פעילות או אחרי הגיל המרבי, קשר/י את ה-Mac שוב.

### סטטוס הקישור

האפליקציה מציגה אחד מהמצבים האלה: **מצב מקומי**, **מקושר ל-Mac הזה**, **התחברות לסנכרון** או **מקושר (לא מקוון)**.

## שירותים מקומיים ונתונים

כל השירותים המקומיים מאזינים רק ב-`127.0.0.1`:

| שירות          | טווח פורטים    |
| -------------- | -------------- |
| API            | 48100 עד 48119 |
| אפליקציית הווב | 48120 עד 48139 |
| Postgres       | 48140 עד 48159 |

האפליקציה שומרת את הנתונים שלה ב-`~/Library/Application Support/Skynet`. התיקייה `logs/` מכילה את `desktop.log`, `api.log`, `frontend.log`, `migrate.log` ו-`sandbox-build.log`.

כשסוגרים את האפליקציה, היא עוצרת את אפליקציית הווב, את ה-API, את Postgres ואת כל הקונטיינרים של האופטימיזציות.

### איפוס האפליקציה

> [!WARNING]
> הפקודות האלה מוחקות את כל הנתונים המקומיים, כולל הריצות והדאטאסטים המקומיים שלך.

קודם סגור/סגרי את האפליקציה. אחר כך הרץ/הריצי:

```bash
docker volume rm skynet-local-pgdata
rm -rf ~/Library/Application\ Support/Skynet
```

## השלבים הבאים

- [הגש/י ריצה](/docs/he/guides/submit).
- קרא/י על [חיוב](/docs/he/concepts/billing) עבור מודלים מתארחים.
- קרא/י את [אבטחה](/docs/he/security).

---

Source: https://staging.skynetml.com/docs/he/guides/mac-app
