# Ship to the App Store

Your agent signs the app, sends it to TestFlight and submits it for review from the Mac it built on. You approve only the steps a person must take.

These are NoMac App Store's tools, on the same account and the same running Mac. Over MCP, add `https://mcp.nomac.app/appstore` next to NoMac. In a terminal they are `nomac sign`, `nomac testflight`, `nomac publish` and `nomac notarize`.

## Connect Apple once

Add an App Store Connect team key (Admin or App Manager) at [nomac.app/dash/apple](/content/dash/apple/index.html). It stays on NoMac's server and never reaches a Mac or the chat. `nomac apple` shows the connection, the certificates every Mac receives and the profiles that exist.

## Signing

`set_up_signing` (`nomac sign`) reads the project on the Mac, with every extension and entitlement. It registers missing bundle IDs, turns on capabilities and makes the App Store profiles, then returns a build settings file, export options, the next build number and the exact build commands. Your project is not changed.

A step only a person can take, such as an App Group, an iCloud container, a new agreement or Apple's certificate limit, comes back as `needs_human` with a link.

## TestFlight

Terminal

```
nomac testflight build/export/App.ipa
```

`send_to_testflight` uploads the signed .ipa. Apple processes it, usually in 5 to 15 minutes, and NoMac gives it to your internal testers with your notes. The app must already exist in App Store Connect.

Apple asks once per app whether it uses encryption beyond HTTPS: your agent relays your answer, never a guess. Testers' crashes and comments come back with `get_testflight`.

## App Review

`review_lint` checks the project for what App Review rejects, with fixes for many findings.

`set_metadata` writes the listing your agent drafts.

`upload_screenshots` replaces the screenshots, at Apple's exact sizes.

`publish` stages the version and returns Apple's blockers, without submitting.

`publish confirm: true` submits for review, after you approve.

Answers that are legal statements, such as the age rating and the privacy label, are yours. Your agent asks you and relays them.

## Notarize a Mac app

Terminal

```
codesign --force --options runtime --timestamp 
  --sign "Developer ID Application: …" App.app
nomac notarize App.app
```

Sign every binary with your Developer ID certificate (upload it as a .p12 at [nomac.app/dash/apple](/content/dash/apple/index.html)). `nomac notarize` then sends the .app, .dmg, .pkg or .zip to Apple and staples the ticket. Keep the Mac running until it is stapled.
