Pairing your own box
Redeem a join code from a self-hosted daemon and the app opens that tenant directly, while pingtower.com relays the pages.
Pairing joins two things: an account on pingtower.com, which is what the app signs in with, and a tenant on a box you run, which is where the data lives. Once paired, the app talks to the box for everything and to pingtower.com only for the account and for push.
On the box, mint a join code
pingtower pair --email [email protected]It prints one code starting with
ptj_. The code bundles the box’s URL, the tenant, and a one-shot pairing secret. It is valid for one hour and can be redeemed once. Owners and admins can also mint codes from the API withPOST /v1/pair/codes, withttl_secondsup to seven days, to seat teammates without a shell.In the app, redeem it
Tenant picker → Join a box, paste the code. The app redeems it against your box, receives a box-minted API key, and hands pingtower.com a receipt that the box confirms once. From here the tenant appears in your list like any other.
Turn on the relay
The app then records the relay credential on the box. This wires every project, present and future, to a webhook integration named “pingtower.com relay”. Pages now reach your phone; log lines never leave the box.
What is different about a paired tenant
- Members and invites are managed on the box, not on pingtower.com; the account screen says so.
- Plan and usage show nothing, because the box enforces its own limits.
- Removing someone from the box stops their access to the data. Revoking their pairing stops their pages. Neither implies the other.
What pingtower.com sees
The pairing itself: which account is pageable for which tenant on which box. For each relayed page, the alert event including the triggering line, which is forwarded to Apple and kept only as a short-lived deduplication row. If you never pair, nothing is sent.