The interesting constraint: all API calls happen from the user's machine directly, never proxied through my servers. This was harder than it sounds, it required careful entitlement management and a specific sandboxing approach.
[link to full post on saneapps.com/guides]