Stay on top of development.

Canopy brings real‐time notifications to GitHub. Respond to people promptly; have real‐time conversations on pull‐requests and issues; get the job done faster and more efficiently; and—most importantly—stay on top of development.

Tapping Canopy’s notifications opens the relevant GitHub page in your web-browser; no more hunting through emails for the link.

Canopy for Mac is free for open source (public repos) with a subscription for private repos. Canopy for iOS is $5 for life-time notifications on public repos; private repos require a subscription. A subscription in either app works in the other.

Canopy operates using webhooks, you need to be admin on the repositories for which you want notifications, or you need to ask an admin to install the hook via the Canopy app or manually.

Tuned For Your Workflow

Canopy detects when you push new branches and immediately prompts you to create a pull-request, streamlining your workflow so you can get on with the work that matters.

Configure precisely which notifications you want to receive on a per-repository basis.


How does Canopy work? Max Howell writes about Canopy’s technology stack as part of a six part series.


Why does Canopy ask for full access to my repositories?

GitHub does not provide sufficient granularity in its permissions system, thus in order to receive events for your private repositories we have to ask for full-access permissions.

Needless to say Canopy does not write to your repos.

New repositories on my username are not automatically enrolled

There is no webhook for new repositories on usernames (unlike organizations) so we cannot know when you create new repositories. In future we can run a lookup server-side at regular intervals but this even this method will introduce some lag time. Hopefully github will add username-hooks.

I don’t get notifications when my Mac is off

Apple buffer an undefined number of notifications while devices are off, so some notifications will be lost while your device is unpowered. Note this condition also applies to iOS, it’s just that your iOS device is almost never off; instead it is usually in stand-by.

I don’t get any notifications

Ensure you have enabled some, in the app select repositories for which you want to receive notifications and tap the checkbox.

If you still don’t receive notifications visit that repository on GitHub and ensure the Canopy webhook is enabled, Canopy does this for you, but it may have been disabled by another user or tool. Alternatively turning notifications off and on again for that repository will reinstall the hook.

If you still don’t get notifications, rebooting your Mac will restart the APNs service, which may help.

I can’t enable notifications

Ensure you have selected the repository you want notifications for and tap the “Receive push notifications” checkbox.

Canopy will not be able to install webhooks unless you are admin for that repository, contact the admin and ask them to install the webhook. They do not need to use Canopy to install the hook, there are instructions for doing it manually below, but the most simple way is for them to install Canopy and then tap “Receive push notifications”.

You can still enroll for notifications in advance, when the admin creates the hook you will receive a notification about it.

You cannot get notifications for private repositories unless you create a Canopy subscription.

Do I need to leave the app open?

No, your push notifications will arrive even if the app has been quit.

I cannot see a particular private repo.

The GitHub API does not return results for private repositories that are forked from private repositories (for OAuth apps like Canopy).

We plan to fix this by updating our backend to be a proper GitHub app.

In the meantime you can add repositories that are not visible in the Canopy app manually via the “File” menu.

I do not get certain notifications I was expecting

Canopy can only report activity that is supported by GitHub’s webhook system, notably this does not include:

  • Activity on other people’s repositories that you are watching†
  • Activity on tickets (at other people’s repositories) where you participated†
  • Activity on your gists
  • Repository rename events

Notably, we also don’t send notifications for your own activity.

† Unless the repository owner installs the Canopy webhook and you manually add that repository to Canopy (though in the future we will add the option to automatically send these notifications, provided the webhook is installed still).

Can I get notifications for repositories unrelated to my account?

Yes, if they are open source and if they have the Canopy webhook installed, if they don’t have the hook installed you can ask them to install it (see the above FAQ), really, there’s no reason they shouldn’t.

If the above conditions are met you can enroll in notifications manually using the ”Add Repository” entry in the “File” menu.

Can I install the Canopy webhook without the app?

If someone has asked you to install the Canopy webhook so they can receive notifications, you don’t need to install Canopy to do this.

Simply add to any repository’s webhooks, ensure its content‐type is application/json) and tick “Send me everything”. See the screenshot below.

The URL for a repository’s webhooks is of this form:

Note, if you do it this way we cannot install a “secret” which means we cannot be fully sure that the payloads we receive are from GitHub and not someone pretending to be GitHub. If this worries you, install the hook using the app.

Important, for organizations install the organization webhook. Webhooks on repos for organizations have issues with with our apps.

How does Canopy ensure that only people with access get notifications about my private repositories?

When users enroll in notifications for a private repository our backend sends a HEAD request for that user to check they actually have access.

We do an additional HEAD request for all enrolled users before sending push notifications in response to webhook events.

This means we will stop sending notifications for team members you remove from a repository the moment you do so.

If the HEAD request fails we delete that user’s enrollment. If in the future you give them access back, they will have to re-enroll using the Canopy app.

Will my subscription in the macOS app work with the iOS app?

Yes, your subscription in either app will apply the same benefits to the other.

How about GitHub Enterprise?

Feature coming soon!

Our company requires that we run the server‐side component

We are happy to provide the server-side binary, compiled for your platform, so that your data never leaves your control if you are serious in your needs contact us for terms.

How about Android, Linux and Windows?

If Canopy is successful (and not Sherlocked) we will make apps for the other platforms

How can I stay updated?

The App Store updates your apps automatically, but if you want informational updates: follow @mxcl on Twitter.

I have a suggestion

Ask @mxcl about it.

Privacy Policy

Canopy listens to GitHub events and passes a small subset of this data through to Apple’s APNs service.

Canopy does not read your code, nor does it persist any data about your notifications, your activity or your code. Canopy does not submit any of your data that it persists to third parties.

What “cloud” data does Canopy keep?
  • The identifiers of the repositories for which you receive notifications
  • Your GitHub OAuth token, AES encrypted with unique initialization vectors†
  • Your device tokens for Apple’s APNs service

Your data is held securely and cannot be accessed by third‐parties.

† we are encrypting your token, not your password, we never have access to your password.

Why does Canopy collect this data?

GitHub sends Canopy webhooks for repository events, Canopy must know for which repositories you wish to receive notifications and which devices you wish these notifications sent. Your GitHub OAuth token is required so Canopy can check you still have access to private repositories, and so Canopy’s backend can install webhooks at GitHub.

How can I be forgotten?

Signing out of the Canopy app deletes all your tokens from our database, but we persist your enrollment choices in case you later sign back in.

If you also want this data deleted, Email us and we can completely delete your account.


Email us and we’ll get right back to you.

Terms of Use

Your access to and use of Canopy is conditioned on your acceptance of and compliance with the following terms. By using Canopy you agree to be bound by these terms. If you disagree with any part of the terms then you may not use Canopy.

Use of Canopy requires signing‐in with a valid GitHub account. Use of GitHub is bound by the GitHub terms of service.

You agree to not attempt access via Canopy to content to which you knowingly have no right.

Codebase, LLC. reserves the right, at its sole discretion to change, limit, or discontinue any aspect, content, or feature of Canopy, as well as any aspect pertainning to the use of Canopy.

You retain all rights to your content and we retain all rights to ours (for example the Canopy icon, website, design language, source code, trademarks, copyrights, patents and other intellectual property).

We reserve the right to end your access to Canopy at any time and for any reason. If your use is ended, any pending subscription periods will be refunded.

Canopy may contain links to third‐party services that are not owned or controlled by us. We​ has no control over, and assumes no responsibility for, the content, privacy policies, or practices of any third‐party service. You further acknowledge and agree that ​we​ shall not be responsible or liable, directly or indirectly, for any damage or loss caused or alleged to be caused by or in connection with use of or reliance on any such content, goods or services available on or through any such web sites or services.

We reserve the right, at our sole discretion, to modify or replace these terms at any time.