All posts
Design5 min read

Designing an offline-tolerant activation flow

Studios record in rooms with no network on purpose. A licence check that fails closed in an airplane-mode session is a bug, not a security feature.

The first version of our activation flow failed closed. If validation could not reach us, the plugin refused to load. It was defensible on a whiteboard and indefensible in a live room.

Leases, not checks

We replaced the online check with a signed lease. Activation grants an entitlement valid for a window, stored locally and verified offline against a public key. The network is only needed to renew, never to run.

  • Activation issues a signed, time-boxed entitlement
  • Verification is local and works with no network
  • Renewal happens quietly in the background before expiry
  • Revocation propagates on next renewal, not mid-session

Accepting the gap

This means a revoked licence keeps working until its lease lapses. We think that is the right call. The alternative is interrupting a paying customer's session to punish a hypothetical one.