# برنامهٔ Mac

> Skynet را روی Mac خود با عامل کدنویسی خودتان و Docker اجرا کنید.

برنامهٔ Mac اسکای‌نت، یعنی 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 امضا شده‌اند و notarize نشده‌اند. macOS آن‌ها را مسدود می‌کند تا وقتی پرچم قرنطینه را حذف کنید.

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. طرح‌وارهٔ (schema) پایگاه‌داده را به‌روزرسانی می‌کند.
6. API محلی و برنامهٔ وب را راه‌اندازی می‌کند و برنامهٔ وب را در پنجره نشان می‌دهد.

### بررسی‌های راه‌اندازی اولیه

برنامه فهرستی از بررسی‌ها را نشان می‌دهد: **Docker**، **Coding CLI**، **Signed in**، **Usage limit**، **Local services** و **Account**. اگر یک بررسی ناموفق باشد، برنامه صفحه‌ای نشان می‌دهد که می‌گوید چه کاری باید انجام دهید:

| صفحه                              | چه کاری انجام دهید                                                     |
| --------------------------------- | ---------------------------------------------------------------------- |
| **Install Docker Desktop**            | Docker Desktop را نصب کنید.                                            |
| **Start Docker**             | Docker Desktop را راه‌اندازی کنید.                                     |
| **Install a coding CLI**            | Claude Code یا Codex را نصب کنید.                                      |
| **Update your coding CLI**       | CLI را به حداقل نسخهٔ ذکرشده در بالا به‌روزرسانی کنید.                   |
| **Sign in to your CLI**                   | در Terminal وارد CLI شوید.                                             |
| **Usage limit reached**                | تا زمان بازنشانی صبر کنید. پس از بازنشانی، کارهای جدید دوباره شروع می‌شوند. |

پس از رفع مشکل، روی **Check again** کلیک کنید. برای دیدن فایل‌های لاگ، روی **Open logs** کلیک کنید. در صفحهٔ **Usage limit reached**، می‌توانید روی **Open Skynet anyway** کلیک کنید.

## اجراهای محلی

در این برنامه، فراخوانی‌های مدل از طریق CLI روی Mac شما انجام می‌شوند. منوی مدل این حالت را با نام **محلی** نشان می‌دهد. راهنمای آن می‌گوید: «هزینهٔ فراخوانی‌ها را اشتراک شما می‌پردازد، پس این مدل $0 به اجرا اضافه می‌کند.»

نام CLIها در برنامه **Claude Code** و **Codex** است.

> [!NOTE]
> برنامه کلیدهای API را از محیط فرایندهایی که شروع می‌کند حذف می‌کند. بنابراین CLI از اشتراک شما استفاده می‌کند، نه از یک کلید API.

### اجرای پیشنهاددهنده روی CLI شما

تنظیم **اجرای پیشنهاددهنده روی CLI من** تعیین می‌کند عامل پیشنهاددهنده کجا اجرا شود. گزینه‌ها **موتور عامل (پیش‌فرض)** و **خاموش (پیشنهاددهندهٔ ایزوله)** هستند.

**دسترسی پیشنهاددهنده** تعیین می‌کند CLI به چه چیزهایی دسترسی داشته باشد:

- **فقط فضای کار** پیش‌فرض است. این گزینه به sandbox خود هر CLI متکی است.
- **دسترسی کامل** CLI را با دسترسی‌های کاربری شما اجرا می‌کند.

> [!WARNING]
> با **دسترسی کامل**، CLI می‌تواند هر فایلی را که شما می‌توانید بخواند، تغییر دهد و حذف کند، و به شبکه دسترسی داشته باشد. حالت acceptEdits در Claude، حتی با **فقط فضای کار**، شبکه را ایزوله نمی‌کند.

### برچسب‌گذاری در برنامه

برچسب‌گذاری با هوش مصنوعی در برنامهٔ Mac به کلید ارائه‌دهندهٔ خودتان نیاز دارد. یک مدل را زیر **کلید شخصی شما** انتخاب کنید. صفحهٔ [برچسب‌گذاری داده با برچسب‌گذار](/docs/fa/guides/tagger) را ببینید.

## پیوند به حساب Skynet

می‌توانید بدون حساب از برنامه استفاده کنید. برای این کار روی **Use without signing in** کلیک کنید. برای همگام‌سازی با حساب میزبانی‌شدهٔ خود، برنامه را پیوند دهید.

### پیوند این Mac

1. در مرحلهٔ **Sign in to Skynet**، برنامه صفحهٔ **Link a Mac** را در مرورگر پیش‌فرض شما باز می‌کند.
2. اگر مرورگر خواست، وارد Skynet شوید.
3. فهرست زیر **پس از پیوند، این Mac می‌تواند:** را بررسی کنید.
4. روی **پیوند این Mac** کلیک کنید. صفحه «در حال بازگشت به برنامه Mac…» را نشان می‌دهد.

اگر ورود ناموفق شود یا آن را لغو کنید، برنامه **Try again** و **Use without signing in** را نشان می‌دهد.

پس از پیوند، این Mac می‌تواند:

- نام و ایمیل شما را ببیند.
- موجودی شما را ببیند.
- اجراهای شما را با حسابتان همگام کند.
- از مدل‌های میزبانی‌شده استفاده کند، با پرداخت از موجودی شما.
- از منابع داده متصل شما استفاده کند.
- از طریق Skynet در وب جستجو و مرور کند.

این پیوند از یک روند ورود امن (OAuth با PKCE) استفاده می‌کند. برنامه توکن‌هایش را به‌صورت رمزنگاری‌شده روی Mac شما ذخیره می‌کند. وقتی پیوند را قطع می‌کنید، Skynet توکن‌ها را باطل می‌کند.

### محدودیت‌های پیوند

| محدودیت                          | مقدار                                      |
| -------------------------------- | ------------------------------------------ |
| تعداد Macهای پیوندشده برای هر حساب | 10                                         |
| طول عمر توکن دسترسی              | 1 ساعت، سپس برنامه آن را تازه‌سازی می‌کند   |
| مهلت بیکاری پیوند                | 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/fa/guides/submit).
- دربارهٔ [صورت‌حساب](/docs/fa/concepts/billing) برای مدل‌های میزبانی‌شده بخوانید.
- صفحهٔ [امنیت](/docs/fa/security) را بخوانید.

---

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