Privacy

Last updated 22 September 2026
Data Not Collected

The apps collect nothing and send nothing to us on their own. LeSearch AI has no analytics and no servers of ours in the data path. Your phone and watch talk straight to machines you own, over a network you already control. The exceptions worth knowing about — a problem report you choose to send, the optional account that goes with it, the daemon's optional heartbeat and push notifications passing through Apple — are each explained in full below.

Who this is

LeSearch AI is made by LeSearch AI (Arya Teja Rudraraju). Questions about any of this: aryayt55@gmail.com.

What the apps send, and to whom

When you pair a machine, the app stores that machine's address and the access token the machine itself minted. From then on the app makes HTTP requests directly to that machine — its stats, its agent sessions, its terminal output, and the commands you send back. Those requests go to your machine and nowhere else. They do not pass through any server we operate, because we do not operate one.

Nothing is uploaded to us: not your prompts, not your terminal output, not your hostnames, not your source code, not usage statistics, not crash counts, not an identifier for you or your device. In App Store terms, the label is “Data Not Collected” — and it is accurate.

The daemon's heartbeat

The meshd daemon you install separately on your machines may send one anonymized heartbeat per day: its version, its platform, its uptime in whole hours, coarse feature counters (how many times a class of feature was used, as a number), and a random install id. That is the whole list. It carries no commands, no keystrokes, no terminal or screen content, no hostnames, and no identifier tied to you as a person — the install id is a random string that tells us a daemon exists, not whose it is.

It exists so we can tell which versions and platforms are actually alive out there. If you would rather it sent nothing at all, turn it off with MESHD_TELEMETRY=off in the daemon's environment — the daemon works identically either way. The apps themselves never send a heartbeat.

The other exception: push notifications

If you turn on notifications, your device registers with Apple Push Notification service and gives that push token to your own machine, which stores it locally in ~/.mesh/. When an agent on that machine needs you, the machine signs a request to Apple's servers and Apple delivers the alert to your phone and watch.

This means the alert text — typically the machine name, the agent session name, and the line the agent is asking about — transits Apple's infrastructure, the same way every iOS push notification does. It is encrypted in transit and we never see it, but it is not end-to-end private from Apple. If that matters for what your agents work on, leave notifications off: the app still shows every waiting agent when you open it, and the watch complication still keeps its count.

What stays on your devices

Deleting the app deletes all of it. To revoke a phone's access from the other side, run mesh token rotate on the machine. That locks the app out of the machine and forgets every device registered to receive notifications from it, so a phone you have revoked stops receiving them too. Your own phone re-registers the next time you open the app and pair.

Report a problem (only when you tap Send)

Settings → Report a problem sends a report to us only when you tap “Send to LeSearch AI”. What leaves the phone is listed above that button and is exactly this: the kind (bug / idea / other), your title and note, the app version and build, the device model and iOS version, a contact e-mail if you typed one, a screenshot or screen recording if you picked one yourself, and — when the toggle is on — a diagnostic bundle (recent event titles, machine names and daemon versions, the last error the app saw) that the phone redacts first: anything shaped like a key or token is replaced by its kind before the bundle exists. Tokens, file contents and screen frames never leave the phone this way; the app cannot capture a screenshot by itself.

Reports land in a database we run (Supabase, project zmisjteztezaqfflwbgf) where the app may only ever add a row — it cannot read anyone's reports back. A worker turns each report into a public GitHub issue on LeSearch-AI/mesh labeled from-users, after redacting every string again. Your e-mail address is never copied into the issue; only a short hash of it is, so two reports from the same person can be matched. An attachment is linked by a URL that expires after seven days. To have a report deleted, mail the address above with the reference the app showed you.

Accounts are optional

There is nothing you must sign up for. Pairing is a code your own machine shows you; the trust lives between your devices and goes no further. Settings → Account lets you create an account with an e-mail and a password if you want us to be able to reply to your reports; it is used for nothing else. The session token is kept in the iOS Keychain. Sign out removes it; to delete the account, mail the address above.

What Apple collects on its own

App Store and TestFlight distribution is Apple's, not ours. Apple gives us aggregate installation counts, opt-in crash reports, and any feedback you deliberately send. We use crash reports to fix crashes and feedback to fix the thing you told us about. Apple's handling of that data is covered by Apple's privacy policy.

Children

This app is a developer tool and is not directed at children under 13.

Changes

If any of this ever changes — in particular if a hosted relay is ever added, which would be a real change to everything above — the change will be described here and called out in the app's release notes before it ships, not after.