Privacy Policy
Last updated: October 19, 2026
Overview
OpenWrt Manager ("the App") is a tool for managing your own OpenWrt router, on your local network or remotely. We are committed to protecting your privacy. This policy explains what data the App handles and how it is stored.
This Privacy Policy should be read together with our Terms of Use (EULA). For the iOS version, Apple's Standard End User License Agreement also applies.
Data Collection
The App's router-management features talk directly to your router — on your local network, or remotely through an address or remote-access method you set up yourself (see Remote Access). Your router traffic never passes through servers we operate. Beyond your router, the App only contacts the optional cloud push service, Apple's purchase services, and downloads.openwrt.org when you check for firmware updates, as described below.
- No analytics or tracking SDKs are included (no Firebase, no Google Analytics, no Crashlytics).
- No user accounts or registration are required.
- Personal data is not sold. Limited data is shared with service providers only where needed to deliver features you use.
- No advertising identifiers are read.
Two optional features — cloud push notifications and the OpenWrt-side notification agent — upload a minimal, scoped data set to a backend we operate. Those flows are described in the Cloud Push (Optional) section below. Purchase and subscription validation is described separately under Purchases and Subscriptions.
Data Stored on Your Device
The following data is stored locally on your device only:
- Router address and connection settings — stored in SharedPreferences to allow quick reconnection.
- Router password — if you choose to save it, the password is stored in the platform's secure storage (iOS Keychain / Android Keystore). It is never transmitted anywhere other than directly to your router.
- Cloudflare Access service tokens — if you save any, the name and Client ID are stored in SharedPreferences and the Client Secret in secure storage (iOS Keychain / Android Keystore). They are sent only as request headers to the router address you use them with.
- Traffic history — hourly and daily bandwidth statistics are stored locally in SharedPreferences for display purposes.
- App preferences — theme mode, language, device nicknames, groups, and notification preferences.
- Notified MAC list — when "New device alerts" is enabled, a list of MAC addresses already alerted on is kept locally to avoid duplicate notifications.
Notifications (Local)
- The App can send you a local notification when a previously-unseen device joins your network. This feature is opt-in and can be toggled in Settings → Notifications.
- The first time you enable it, the system prompts you for notification permission. You may revoke this permission at any time from your device's system Settings.
- Notifications are generated entirely on your device by comparing the current device list with locally stored MAC addresses. No notification content or device information is sent to our servers or any third party in this mode.
Cloud Push (Optional)
If you want push notifications to arrive even when the App is closed (for example: an unknown device joins your home Wi-Fi while you are at work), you can enable cloud push. This adds a second delivery path on top of local notifications. It is off by default. Enabling it is a deliberate action: tapping the "New device alerts" toggle plus tapping "Install router agent" in Settings.
What gets uploaded, by whom, and to where
- The App sends our backend an APNs device token (an opaque identifier issued by Apple, scoped to this App on this device — not a tracking ID), your language preference (e.g.
en,zh), and a randomly generated device key + agent token. The agent token is the bearer credential the OpenWrt-side script will later use to authenticate. - The OpenWrt-side notification agent — installed onto your router only after you tap "Install router agent" — uses the agent token to send our backend a small JSON event when something you asked to be told about happens: a previously-unknown device joins your network; a device you chose to watch comes online or goes offline; a device exceeds the hourly traffic threshold you set; the internet connection comes back after an outage; or the router restarts. Each event carries only the event type, the device's
mac,ipand name (where it applies), your router label, and where relevant one number (data used in the hour, or outage length). No traffic content, no browsing history, no logs. - To deliver one router's alerts to every phone that subscribed to it, the backend also keeps a random router ID and router token, and which device keys are subscribed to it.
- The backend is a Cloudflare Worker we operate at openwrtpush.yzinf.com. It stores your registration in Cloudflare KV and uses Apple's APNs service to deliver the notification to your iPhone. No third party other than Cloudflare and Apple is involved, and we do not use any analytics SDK, ad SDK, or tracking SDK.
- Storage retention: registrations expire after 90 days of no re-registration. The backend also keeps a 30-minute deduplication cache so the same event isn't pushed repeatedly. Both are automatically purged.
- The notification body that Apple delivers to your phone contains the device's name and IP. We do not log notification deliveries on the backend.
How to disable / delete
- Disable in-app: Settings → Notifications → toggle "New device alerts" off. The App will call our backend to remove your registration immediately.
- Disable on the router: Settings → Notifications → "Install router agent" again writes the latest config; conversely, the agent can be removed via SSH with
/etc/init.d/openwrt-manager-notify stop && rm /usr/bin/openwrt-manager-notify.sh /etc/init.d/openwrt-manager-notify. - Even after disabling locally, you may email us to request deletion of any residual registration tied to your APNs token.
Purchases and Subscriptions
The App may offer a monthly auto-renewing subscription, a yearly auto-renewing subscription, and a lifetime non-consumable purchase for premium features. Product names, subscription lengths, prices, and renewal terms are shown in the App before purchase.
- Payments are processed by Apple. The App does not receive or store your name, full Apple ID, payment card number, or other payment credentials.
- The App uses Apple's StoreKit framework directly to retrieve products, validate signed transactions, restore purchases, and determine whether premium features are available.
- Purchase and subscription information is handled by Apple under Apple's privacy policy. StoreKit may provide the App with product identifiers, transaction status, purchase dates, expiration dates, and renewal status needed to unlock premium features.
- The App stores only a local cached premium-access status and legacy paid-version status for offline access. It does not upload purchase receipts or entitlement data to a developer server.
- This information is used only to provide and maintain purchase entitlements, restore purchases, and respond to purchase support requests. It is not used for advertising or tracking and is not sent to a third-party purchase service such as RevenueCat.
- Subscription cancellation and refund handling are managed through Apple. The related terms are described in our Terms of Use.
Network Communication
- The App's primary communication is with your OpenWrt router via the ubus HTTP/JSON-RPC API — directly on your local network, or at the remote address you entered.
- If HTTPS is available on your router, the App supports it to encrypt this traffic.
- When you check for firmware updates, the App reads the public list of OpenWrt releases from downloads.openwrt.org. Speed tests and package installs are run by your router itself, which then contacts speed.cloudflare.com or the OpenWrt package servers.
- When cloud push is enabled, the App communicates with openwrtpush.yzinf.com, our Cloudflare Worker.
- The App communicates directly with Apple's App Store through StoreKit to load products and maintain purchase entitlements. Apple services may be contacted even if you have not completed a purchase.
Remote Access
You can reach your router from outside your home through a public address, a tunnel you already run, or one of the remote-access methods the App can set up on your router at your request:
- Cloudflare Tunnel — the App installs
cloudflaredon your router with a tunnel token from your own Cloudflare account. Traffic to your router then passes through Cloudflare's network under your account and Cloudflare's privacy policy. If you protect it with Cloudflare Access, the service token you save is sent with each request. - Tailscale — the App installs Tailscale on your router and opens Tailscale's sign-in page so you add it to your own tailnet. Connections are end-to-end encrypted; Tailscale's coordination service is governed by Tailscale's privacy policy.
- WireGuard — the App configures a WireGuard server on your router. Your phone or other devices connect to it directly; no third-party service is involved. Peer keys and configs are created on your router and shown to you for import.
None of these routes traffic through servers we operate, and we receive no information about your remote connections. You can switch each method off, or remove it, from Tools → Remote Access.
Password Security
- Your router password is used solely to authenticate with your OpenWrt device.
- Saved passwords use the OS secure storage mechanism, encrypted at rest.
- We recommend saving passwords only on personal devices. Anyone with physical access to your unlocked device may be able to connect to your router through the App.
Children's Privacy
The App is not directed at children under 13. We do not knowingly collect any information from children.
Changes to This Policy
We may update this privacy policy from time to time. Any changes will be reflected on this page with an updated date.
Contact
If you have questions about this privacy policy, purchases, or subscriptions, please visit the Support page. For subscription terms, see the Terms of Use (EULA).
隐私政策
最后更新:2026 年 10 月 19 日
概述
OpenWrt Manager(以下称"本应用")是一款管理您自己的 OpenWrt 路由器的工具,可在局域网内或远程使用。我们致力于保护您的隐私。本政策说明本应用如何处理和存储数据。
本隐私政策应与我们的使用条款(EULA)一并阅读。对于 iOS 版本,Apple 标准最终用户许可协议也同时适用。
数据收集
本应用的路由器管理功能直接与您的路由器通信——在局域网内,或通过您自己配置的地址或远程访问方式远程连接(见远程访问)。您与路由器之间的通信不会经过我们运营的任何服务器。除路由器外,本应用只会连接下文说明的可选云端推送服务、Apple 购买服务,以及在您检查固件更新时连接 downloads.openwrt.org。
- 不包含任何分析或追踪 SDK(没有 Firebase、没有 Google Analytics、没有 Crashlytics)。
- 无需用户注册或创建账户。
- 我们不会出售个人数据,仅在提供您所使用的功能所必需时与服务提供商共享有限数据。
- 不读取任何广告标识符。
有两项可选功能——云端推送通知和OpenWrt 路由器侧通知代理——会向我们运营的后端上传少量、限定范围的数据。这些流程见下方云端推送(可选)章节。购买和订阅验证另见购买与订阅章节。
存储在您设备上的数据
以下数据仅存储在您的设备本地:
- 路由器地址和连接设置——存储在 SharedPreferences 中,用于快速重连。
- 路由器密码——如果您选择保存密码,密码会存储在系统安全存储中(iOS Keychain / Android Keystore)。密码仅用于直接发送给您的路由器,不会传输到其他任何地方。
- Cloudflare Access 服务令牌——如果您保存了令牌,名称和 Client ID 存储在 SharedPreferences 中,Client Secret 存储在系统安全存储中(iOS Keychain / Android Keystore)。令牌只会作为请求头发送给您选择使用它的路由器地址。
- 流量历史——按小时和按天的带宽统计数据存储在本地 SharedPreferences 中,用于图表展示。
- 应用偏好设置——主题模式、语言、设备备注名、分组及通知偏好。
- 已通知 MAC 列表——当启用"新设备告警"功能时,本应用会在本地保存已告警过的 MAC 地址列表,避免重复通知。
本地通知
- 本应用可以在新设备首次加入您的网络时发送本地通知。该功能默认关闭,可在「设置 → 通知」中开启。
- 第一次开启时,系统会请求通知权限。您可以随时在系统设置中撤销该权限。
- 本地通知完全在您的设备上生成——通过对比当前设备列表与本地保存的 MAC 地址。该模式下不会向我们的服务器或任何第三方发送通知内容或设备信息。
云端推送(可选)
如果您希望即使 App 已关闭也能收到推送(例如:陌生设备入网时您不在家),可以启用云端推送。这是叠加在本地通知之上的另一条投递路径。默认关闭。开启需要明确操作:点击「新设备告警」开关,然后点击「在路由器上安装 agent」。
上传哪些数据,谁上传,到哪里
- App 上传:Apple 颁发的 APNs 设备 token(限定本 App 在本设备上有效的不透明标识,非追踪 ID)、语言偏好(如
en、zh)、随机生成的 device key 和 agent token。Agent token 是后续路由器侧脚本用来鉴权的 bearer 凭据。 - 路由器侧 agent 上传(只在您点击「在路由器上安装 agent」之后才会装到路由器):当您要求提醒的事情发生时,用 agent token 鉴权,向后端发送一小段 JSON 事件:之前未见过的设备加入网络;您选择关注的设备上线或下线;某台设备一小时内的流量超过您设定的阈值;断网后网络恢复;路由器重启。每个事件只包含事件类型、相关设备的
mac、ip和名称(如适用)、您配置的路由器标签,以及必要时的一个数值(本小时用量或断网时长)。不上传任何流量内容、浏览记录或日志。 - 为了把一台路由器的提醒推送给所有订阅了它的手机,后端还会保存一个随机生成的路由器 ID 和路由器 token,以及订阅了这台路由器的 device key。
- 后端是我们在 Cloudflare 运营的 Worker,地址 openwrtpush.yzinf.com。注册信息存在 Cloudflare KV,推送通过 Apple APNs 服务下发到您的 iPhone。除了 Cloudflare 和 Apple,不涉及任何其他第三方,后端不引入任何分析、广告或追踪 SDK。
- 存储期:注册信息在 90 天内未续约会自动过期清理。后端另保留 30 分钟的去重缓存(防止同一事件反复推送),同样自动过期。
- Apple 投递到您手机上的通知正文包含设备名和 IP。后端不记录通知投递日志。
如何关闭 / 删除
- App 端关闭:设置 → 通知 → 关闭「新设备告警」。App 会立即调后端清除您的注册。
- 路由器端清除 agent:可通过 SSH 执行
/etc/init.d/openwrt-manager-notify stop && rm /usr/bin/openwrt-manager-notify.sh /etc/init.d/openwrt-manager-notify。 - App 关闭之后如果想确认后端没有残留,可以邮件联系我们要求清除与您 APNs token 关联的注册数据。
购买与订阅
本应用可能为高级功能提供按月自动续期订阅、按年自动续期订阅,以及一次性购买的终身版。产品名称、订阅周期、价格和续期条款会在购买前显示在应用内。
- 付款由 Apple 处理。本应用不会接收或存储您的姓名、完整 Apple ID、银行卡号或其他付款凭据。
- 本应用直接使用 Apple StoreKit 框架加载商品、验证已签名交易、恢复购买并确定高级功能是否可用。
- 购买和订阅信息由 Apple 根据其隐私政策处理。StoreKit 可能向本应用提供用于解锁高级功能所需的产品标识符、交易状态、购买日期、到期日期和续期状态。
- 本应用仅在本地缓存高级功能权限状态和历史付费版本状态,用于离线访问。本应用不会把购买收据或权益数据上传到开发者服务器。
- 这些信息仅用于提供和维护购买权益、恢复购买及处理购买支持请求,不用于广告或跟踪,也不会发送给 RevenueCat 等第三方购买服务。
- 订阅取消和退款通过 Apple 管理。相关条款见我们的使用条款。
网络通信
- 本应用主要的网络通信是与您的 OpenWrt 路由器通过 ubus HTTP/JSON-RPC API 通信——在局域网内直接连接,或连接您填写的远程地址。
- 如果您的路由器支持 HTTPS,本应用支持使用 HTTPS 加密这部分通信。
- 检查固件更新时,本应用会从 downloads.openwrt.org 读取公开的 OpenWrt 版本列表。测速和安装软件包由您的路由器自己执行,届时由路由器连接 speed.cloudflare.com 或 OpenWrt 软件源。
- 启用云端推送后,本应用会与我们运营的 Cloudflare Worker openwrtpush.yzinf.com 通信。
- 本应用通过 StoreKit 直接与 Apple App Store 通信,以加载商品并维护购买权益。即使您尚未完成购买,也可能连接 Apple 服务。
远程访问
您可以通过公网地址、您已在使用的隧道,或由本应用应您的要求在路由器上配置的远程访问方式,从外部连接您的路由器:
- Cloudflare Tunnel——本应用使用来自您自己 Cloudflare 账号的隧道令牌,在路由器上安装
cloudflared。之后访问路由器的流量会经过 Cloudflare 网络,受您的账号设置和 Cloudflare 隐私政策约束。如果您用 Cloudflare Access 保护它,您保存的服务令牌会随每个请求一起发送。 - Tailscale——本应用在路由器上安装 Tailscale,并打开 Tailscale 登录页,由您把路由器加入您自己的 tailnet。连接为端到端加密;Tailscale 协调服务受 Tailscale 隐私政策约束。
- WireGuard——本应用在路由器上配置 WireGuard 服务端,您的手机或其他设备直接连接它,不涉及任何第三方服务。客户端密钥和配置在路由器上生成,并展示给您导入。
以上方式都不会经过我们运营的服务器,我们也不会收到任何关于您远程连接的信息。每种方式都可以在「工具 → 远程访问」中关闭或移除。
密码安全
- 您的路由器密码仅用于连接 OpenWrt 设备进行身份验证。
- 已保存的密码使用系统安全存储机制,静态加密保存。
- 建议仅在个人设备上保存密码。任何能物理访问您已解锁设备的人,都可能通过本应用连接到您的路由器。
儿童隐私
本应用不面向 13 岁以下儿童。我们不会有意收集儿童的任何信息。
政策变更
我们可能会不时更新本隐私政策。任何变更将在此页面上更新日期并反映。
联系我们
如对本隐私政策、购买或订阅有疑问,请访问支持页面。订阅相关条款请见使用条款(EULA)。