Find it on GitHub.

Spyder simplifies the push notification testing & debugging process for Apple’s new APNs Provider API based on the HTTP/2 protocol so you can focus on building amazing software instead of wasting time on boiler-plate setup code. It doesn’t require any certificate conversions, remote servers or complex procedures. Using the certificates in your keychain, it lets you send a push notification with a single command:

another equivalent:


Clone / download the repo. Build the Xcode project. Doing so will automatically install the spyder binary to /usr/local/bin.


Spyder features a comprehensive summary of available options and their usage. Just type:


One of the pains with push notifications is converting the necessary certificates to specific formats like .pem. Spyder lets you skip these steps entirely by using certificates in your keychain instead. First, list all available certificates:

Note the index number used for the certificate and use it as the value to the --cert parameter. Alternatively, you could also provide a path to the .p12 file. The two methods are practically identical:



This is the most important part of a push notification. Spyder features two alternatives for creating the payload:


You can simply use the --message option and provide just the body of the payload. The following default payload will be created:


You can provide your own, completely custom payload using the --payload option. This can be inline JSON or a path to a JSON file:


Sandbox, or no sandbox…

Spyder defaults to using the Apple’s sandbox endpoint for sending push notifications. You can either explicitly set this option using --env dev flag, or switch to an endpoint for production applications with --env prod.


By default, Spyder uses the standard SSL port to connect the APNs servers – 443. You can provide an alternate port using the --port 2197 flag.