I think the best local caching for repos is going to be local clones as in stroyboard, which will make all these more efficient.

Give this a read and see possible solutions, I am thinking deploy keys but there are other options: https://help.github.com/articles/managing-deploy-keys

One can create deploy keys via the API: http://developer.github.com/v3/repos/keys/