# Застосунок для Mac

> Запускайте Skynet на своєму Mac із власним агентом для програмування та Docker.

Застосунок Skynet для 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 підпис і не проходять нотаризацію. macOS блокує їх, доки ви не знімете прапорець карантину.

1. Відкрийте файл `.dmg`.
2. Перетягніть **Skynet** до **Applications**.
3. Виконайте цю команду в Terminal:

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

4. Відкрийте Skynet з **Applications**.

> [!NOTE]
> Перший запуск триває кілька хвилин. Застосунок створює локальний образ пісочниці й готує свою базу даних.

## Що відбувається під час запуску

Застосунок виконує такі кроки по черзі:

1. Читає `PATH` з вашої оболонки входу, щоб знайти Docker і ваш CLI.
2. Перевіряє Docker і ваш CLI для програмування.
3. Запускає локальну базу даних Postgres у Docker.
4. Збирає образ пісочниці `skynet-local-sandbox` для `linux/amd64`. Docker запускає його через Rosetta.
5. Оновлює схему бази даних.
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**                   | Увійдіть у CLI в Terminal.                                                         |
| **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 має доступ:

- **Лише робоча область** — значення за замовчуванням. Воно покладається на власну пісочницю кожного CLI.
- **Повний доступ** запускає CLI з вашими правами користувача.

> [!WARNING]
> З **Повний доступ** CLI може читати, змінювати й видаляти будь-який файл, до якого маєте доступ ви, а також звертатися до мережі. Режим acceptEdits у Claude не ізолює мережу, навіть з **Лише робоча область**.

### Тегування в застосунку

Тегування за допомогою ШІ в застосунку для Mac потребує вашого власного ключа провайдера. Виберіть модель у розділі **Власний ключ**. Див. [Розмітка даних у розмітнику](/docs/uk/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/uk/guides/submit).
- Прочитайте про [оплату](/docs/uk/concepts/billing) розміщених моделей.
- Прочитайте [Безпека](/docs/uk/security).

---

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