Privacy Policy
Effective 15 October 2026. Applies to the Shedbell apps for macOS and iOS, the push relay at push.shedbell.com, and this website.
The short version
- Shedbell has no user accounts and no analytics. We don't know who uses it.
- Everything about a help request, including the screen stream, your input, and the agent's reason, travels only inside your own Tailscale network, directly between your Mac and your iPhone.
- The one thing that crosses the public internet is a push notification that says “An agent needs you”. The relay that sends it sees an encrypted token, a short request id, and your Mac's IP address, and stores nothing but short-lived rate-limit counters.
- The iPhone app stores only your Mac's tailnet address and your settings, on the phone.
1. Controller
The controller for the processing described here is:
Josua Sievers
Richard-Wagner-Straße 40
91413 Neustadt a. d. Aisch
hello@shedbell.com
No data protection officer is required for this activity.
2. What Shedbell is
Shedbell connects a Mac that runs coding agents (the “shed”) with your iPhone. When an agent needs a human, the Mac pushes a notification to the phone; you open a live view of the blocked window, fix the problem, and return a short answer. The Mac and the phone communicate only over your own Tailscale network (“tailnet”). Shedbell runs no server that holds your data.
3. Data that stays on your devices and in your tailnet
The following data is processed entirely on your own devices or between them over your tailnet. It never reaches us or the relay.
- Help requests: the agent's reason, the target application and window title, the agent's label, an optional question, your answer or note, timestamps, and status. Stored on the Mac in
~/.shedbell/(pending requests and a history file). You can delete these files at any time. - The screen stream: video of the one window the request refers to, encoded on the Mac and decoded on the phone. Sent peer to peer over WebRTC within your tailnet, encrypted by Tailscale (WireGuard) and additionally by WebRTC (DTLS-SRTP). Nothing is recorded.
- Your input: taps, scrolls, keystrokes, and pasted text, sent from the phone to the Mac over the same encrypted connection. The Mac's logs never contain typed text.
- Clipboard text: only when you tap “Use copied text” on the phone, the Mac sends its current clipboard text (up to 4 KB). Entries that password managers mark as private are never sent. Before you tap, the phone is told only the length of the text.
- Device registration: the phone gives the Mac an encrypted push handle (see section 4) and a display name, so the Mac can ring it. Stored on the Mac.
- Identity check: for every connection the Mac asks the local Tailscale client who the caller is and accepts only its own owner. Shedbell does not store this.
4. The push relay (push.shedbell.com)
Apple delivers push notifications only to servers holding the app's APNs key, which cannot be shipped inside the Mac app. Shedbell therefore sends pushes through a small relay we operate, implemented as a Cloudflare Worker. Its source code is public.
What the relay processes
- Push handle: when the iPhone app registers for notifications, it sends its Apple device token to the relay once and receives an encrypted handle (AES-256-GCM with a key only the relay holds). The phone passes this handle to your Mac. The Mac never sees the raw device token; the handle can only be used to send Shedbell's fixed notification to that one phone.
- Push requests: to ring your phone, the Mac sends the handle and a request id (a short random string like
r_8f3k2m) to the relay. The relay decrypts the handle and forwards a fixed notification to Apple. The relay never receives the reason, the window, the screen, or your answer, and the request id carries no meaning outside your tailnet. - Client IP address: the relay uses the IP address of the calling device (your Mac, or the phone when it fetches a handle) for rate limiting. IPv6 addresses are reduced to their /64 prefix.
Storage and retention
The relay stores no request content and no record of who pushed what. For rate limiting it keeps a small counter per hashed device token and per client IP (at most 20 push timestamps per phone and 120 per IP). Each counter deletes itself 10 minutes after its last use; nothing else is retained. Operational logs show at most the last six characters of a handle or token and are retained by Cloudflare for a short period for debugging; they do not contain request content.
Legal basis and processor
Legal basis is Art. 6(1)(b) GDPR (delivering the notification you asked for by pairing your phone) and, for rate limiting and abuse prevention, Art. 6(1)(f) GDPR (our legitimate interest in keeping the relay available). The relay runs on Cloudflare, Inc. (San Francisco, USA) and its EU entity under a data processing agreement; Cloudflare may process the data in its global network, with transfers covered by the EU–US Data Privacy Framework and standard contractual clauses. See Cloudflare's privacy policy.
Self-hosting
If you build the apps yourself, you can run your own relay or push directly from the Mac with your own Apple key, and this section does not apply.
5. Apple Push Notification service
Notifications are delivered by Apple's Push Notification service (APNs). Apple receives the device token, the notification payload (“Shedbell — An agent needs you” and the request id), and the usual connection metadata. Apple processes this as described in Apple's privacy policy. Shedbell does not use notification content to track you.
6. The iPhone app
- Local storage: the app stores your Mac's tailnet address and name, your settings, and the push handle on the phone. Nothing is synced to us.
- Camera: used only while you scan the pairing QR code shown by the Mac app. No images are stored or sent anywhere. You can pair without the camera by typing the address.
- Notifications: optional, but without them the phone can't ring. You can revoke the permission in iOS Settings at any time.
- Network: the app talks to your Mac over your tailnet and to the relay once per registration. It contacts no other server.
- No tracking: the app contains no analytics, advertising, or crash-reporting SDKs. Apple's optional crash reports are governed by your iOS settings.
7. The Mac app
The Mac app stores requests, history, device registrations, and a log file in ~/.shedbell/. It uses macOS Screen Recording to capture the one window a request refers to, and Accessibility to bring it to the front and deliver your input. It contacts the relay to send pushes and checks nothing else online. The app contains no analytics.
8. This website
shedbell.com is static and served by Cloudflare. We use no analytics, no cookies, and no third-party scripts or fonts. Cloudflare processes connection data (IP address, user agent, requested URL) to serve the site and defend against abuse, and keeps aggregate traffic statistics; see Cloudflare's privacy policy linked above. Legal basis: Art. 6(1)(f) GDPR, our interest in operating a secure website.
9. Third parties you bring
Shedbell relies on Tailscale for networking and identity. Tailscale's coordination server sees your devices' public keys and Tailscale account identity but not your traffic; see Tailscale's privacy policy. The agents you connect (Claude Code, Codex, and others) process their own data under their own terms; Shedbell only receives the short request text they send it.
10. Your rights
Under the GDPR you have the right to access, rectify, and erase personal data, to restrict or object to processing, to data portability, and to lodge a complaint with a supervisory authority. Because Shedbell keeps no account and the relay keeps no persistent record, there is usually nothing we could look up; in practice, deleting the apps and the ~/.shedbell folder removes everything. For any request, write to hello@shedbell.com.
11. Children
Shedbell is not directed at children under 16 and does not knowingly process their data.
12. Changes
We will post changes to this policy on this page with a new effective date. Substantive changes to what the relay processes will also be noted in the app's release notes.