Quick Start

Get up and running with Mushu in 5 minutes. Choose your path based on what you're building.

What do you need?


Common Setup (All Services)

Every path starts with these steps:

1. Install the CLI

pip install mushu-cli

2. Sign In

mushu auth login

This opens your browser for Apple Sign In.

3. Create an Organization

mushu org create "My App Team"
# Output: ✓ Organization created
#         ID: org_abc123  ← Save this!
#         Name: My App Team

Save the org_id from the output - you'll need it for all API calls.

You can find it later with:

mushu org list

4. Create an App

mushu app create "My App" --bundle-id com.example.app --org ORG_ID
# Output: ✓ App created
#         ID: app_xyz789  ← Save this!

5. Create an API Key (for server-to-server)

mushu api-key create "backend" --app APP_ID
# Output: ✓ API key created
#         Key: msk_live_xxx...  ← Save immediately, only shown once!

CLI vs API: CLI commands use your login session. For server-to-server API calls, use the API key above.

Done! You can now use Media or Pay immediately. Push notifications require additional APNs setup below.


Push Notifications Setup

Push requires APNs credentials from your Apple Developer account.

Prerequisites

  • An Apple Developer account
  • An APNs key (.p8 file) from Apple Developer portal

4. Create a Notify Tenant

A tenant represents your iOS app and holds your APNs credentials. You'll need your APNs key from the Apple Developer portal.

mushu tenant create \
  --org YOUR_ORG_ID \
  --bundle-id com.yourcompany.yourapp \
  --team-id YOUR_TEAM_ID \
  --key-id YOUR_KEY_ID \
  --key-file ~/path/to/AuthKey_XXXXX.p8

Replace the placeholders with your actual values:

  • YOUR_ORG_ID - The org_id from step 3
  • com.yourcompany.yourapp - Your iOS app's bundle identifier
  • YOUR_TEAM_ID - Your 10-character Apple Developer Team ID
  • YOUR_KEY_ID - The 10-character key ID for your APNs key

Tip: By default, tenants use the APNs sandbox environment. Add --production when you're ready for production.

5. Register a Device

In your iOS app, get the device token from APNs and register it with Mushu. For testing, you can register a token manually:

mushu device register \
  --user test-user-123 \
  --token YOUR_DEVICE_TOKEN \
  --platform ios

In production, call the registration API from your app after receiving the device token from didRegisterForRemoteNotificationsWithDeviceToken.

6. Send a Push

Now send a push notification:

mushu push send \
  --user test-user-123 \
  --title "Hello" \
  --body "Your first Mushu push!"

If everything is set up correctly, you'll see the notification on your device.

Next Steps

Troubleshooting

Push not arriving?

  • Verify your APNs key is valid and matches the bundle ID
  • Make sure you're using sandbox mode with development builds
  • Check that the device token is correctly registered

Authentication errors?

  • Run mushu auth refresh to refresh expired tokens
  • Run mushu auth login again if refresh fails

Permission denied?

  • Verify you're a member of the organization
  • Check your role has the required permissions