Free TestFlight beta · iPhone + Apple Watch

Your agent has been waiting forty minutes for you to say yes.

It ran for an hour, hit one question — can I force-push?, overwrite this file? — and has been sitting there ever since. Not working. Not failing. Waiting for a human who walked away. LeSearch Mesh puts that question on your wrist the second it lands, and puts your answer back in the real session. Three seconds instead of the rest of the afternoon.

Join the TestFlight → Read the source Free · no account · no server of ours between you and your Mac
you@your-mac
$ curl -fsSL https://mesh.lesearch.ai/install.sh | sh
✓ meshd installed · launchd · survives reboot
✓ run mesh pair to put it on your phone
$
The whole point

The whole loop, from blocked to moving.

This is the loop the app exists for. Everything else is in service of it.

01

An agent blocks

Claude Code, Codex, whatever you run — it hits a permission prompt in a tmux session on your Mac and stops dead. A hook fires the instant it does.

02

Your wrist buzzes

The machine, the session, and the actual question, in a notification you can act on. A question that would force-push or delete gets a red button naming the verb — everything else is a calm Continue.

studio · deploy-api run git push --force?
Force pushReplyStop
03

You answer

Tap Continue and Enter lands in the real session. Or dictate a reply and it gets typed in. The agent picks up where it stopped — you never got up.

studio · docs-site edit vite.config.ts?
ContinueReplyStop
Local-first, and it matters

There is no cloud in the middle.

The comparable tools relay your sessions through their servers. That is the easy way to build this, and it means your terminal output, your prompts and your source code pass through somebody else's machine.

Where your data goes
Phone → your machine, directly, over your own private network. We run no relay, so your terminal output and your code never reach us. The one thing that does is a daily count from the daemon — version, platform, uptime — which you can switch off. The exact payload.
What an account costs you
There is no account. No email, no OAuth, no team seat. Pairing is a code your own machine printed.
How access is gated
A per-machine bearer token, minted by that machine, plus whatever network you already trust — your Tailscale ACL or your LAN. Nothing is port-forwarded and nothing is exposed to the public internet.
If this project disappears
The daemon keeps running and the source stays public. It is your machine, your token, and a plain HTTP API you can curl.
What it looks like

Real screens, real data.

Captured against a live daemon — a fleet with one machine honestly offline, a build streaming into the phone terminal, and the crown-scrollable terminal on the wrist.

Machines list with live stats
Machines
Live terminal session on the phone
Live terminal
Remote control of each machine
Mac control
Crown-scrollable terminal on the watch
Wrist terminal
Machines on the watch
Fleet at a glance
On your wrist

Built watch-first, not watch-also.

Most tools in this space treat the watch as a notification mirror. Here it is the primary surface, and the phone is the thing that keeps it fed.

Complication

A count on your watch face

How many agents are waiting on you, all day, in every accessory family. When nothing is waiting it shows how much of your mesh is up — and it tells you when the reading has gone stale instead of quietly lying.

Notifications

Answerable, not just readable

Continue, Stop, or dictate a Reply straight from the notification. The reply is typed into the real session on the real machine — and once the task is done, the banner takes itself down.

Live Activity

Lock Screen and Dynamic Island

The one session that actually needs you, live on the Lock Screen and in the Smart Stack — with how much of your fleet is online next to it. Blocked always outranks merely busy.

Terminal

A real terminal, on a watch

Crown to scroll, auto-follow at the tail, a key bar for the characters a watch keyboard will not give you, and full VoiceOver.

Mac control

Mouse, keyboard, screen

Drive the Mac itself across multiple displays — trackpad-style pointer with pinch-to-zoom, sticky modifiers so ⌘⇧4 works, paste both ways, and a live screen view — when answering a question is not enough.

Machines

htop for everything you own

CPU, memory, disk, load and top processes for every paired machine. Wake a sleeping box over LAN from its neighbour. mesh status shows the whole fleet in one screen.

Setup

Three commands and an eight-character code.

There is no signup, no dashboard and no server of ours in the path. You install a small daemon on a machine you own, and your phone pairs with it directly. Or run mesh setup and let it walk you through permissions, pairing, and hooks.

1

Install the daemon on your Mac or Linux box

Bun + TypeScript, ~3 MB. Registers with launchd or systemd, so it comes back after a reboot. Read it before you run it — the installer is one shell script and the daemon source is public.

$ curl -fsSL https://mesh.lesearch.ai/install.sh | sh
2

Pair your phone

Prints a QR code and an eight-character code that is good for ten minutes and one use. Scan it with your iPhone's camera. The Mac hands back its own access token and every other machine it already knows about — a fleet of four takes one code.

$ mesh pair
3

Let your agents tell you when they need you

Registers a hook with Claude Code so a blocked agent reaches your wrist. Merges into your existing hooks, backs up your settings first, and is safe to run twice.

$ mesh hooks install
Questions

The honest answers.

What do I need?

An iPhone on iOS 26 or later and, to get the good part, an Apple Watch on watchOS 10 or later. At least one Mac or Linux machine to install the daemon on. The watch app is a companion to the iPhone app, so it installs from the Watch app on your phone, not from the watch itself.

Does it work when I am away from home?

Yes, if your phone and your machine are on the same private network — a Tailscale tailnet is what this was built against, and it is what we use. There is no hole-punching and no relay of ours, so if your phone cannot reach the machine, neither can the app.

Linux too?

Yes: the same installer, the same pairing, the same agent alerts, plus keyboard and mouse input through xdotool on X11. Screen capture is macOS-only today, and Wayland input is not supported yet.

Which agents does it watch?

Claude Code is wired up by mesh hooks install. Anything else can post to the daemon's /events endpoint with one curl call, which is how the hook itself works — so Codex, a CI job, or a shell script can all raise your wrist.

Is it open source?

Yes — all of it. The daemon, the mesh CLI, and the iOS + watchOS app live at LeSearch-AI/mesh, and the one-line installer at LeSearch-AI/mesh-install. The part that runs on your machine is a small dependency-free TypeScript codebase — about 3,000 lines you can read in a sitting.

How finished is this?

It is a beta that its author uses daily, and it will have rough edges you find before we do. Send them through TestFlight's feedback — screenshots come straight to us. The changelog and roadmap say exactly where it stands.

Nothing should wait on you for forty minutes.

Two minutes to set up. Free while it is in beta, and there is no account to create — pairing is a code your own machine prints.

Join the TestFlight → See the setup
iPhone · iOS 26+ Apple Watch · watchOS 10+ macOS or Linux daemon