Mach Push sends directly through APNs and FCM. The mobile SDK stores only the Mach project ID in the app, while APNs keys and Firebase service-account JSON files stay encrypted in Mach credentials.
Mobile setup
mach push setup
mach credentials
Use `mach push setup` once to install and wire the SDK. Then use `mach credentials` and choose **Push Notifications** to generate or upload APNs credentials, or upload an FCM provider credential. APNs credentials can be saved to all environments or only development, preview, or production. FCM uses one app-scoped credential for the selected Android package across every environment.
Flutter setup installs mach_push_flutter, creates generated public configuration plus an application-owned callback file, injects one non-blocking startup call into main(), and re-registers rotated push tokens. Re-running setup refreshes generated config without replacing the application callbacks.
iOS
Credentials → iOS → bundle identifier → Service credentials → Apple Push Notifications.
Android
Credentials → Android → package name → Service credentials → Firebase Cloud Messaging.
CLI
Run mach credentials, choose the platform, then choose Push Notifications.
After credentials are uploaded, create one new native build and open it on a device. Expo Go cannot load the Mach native push module.
Send a test
mach push send --user user_123 --title "Hello" --body "Mach Push is ready"
mach push status --days 30
`Provider accepted` means APNs or FCM accepted the notification; it is not an open/read receipt. Mach does not store notification title, message body, or per-message history.