Tunnels
Open a port on a machine, tap it on your phone.
An agent starts a dev server on the machine it is working on. You tap it on your phone and the page opens — a React app on the desktop, a notebook on a cloud box, a preview of the thing that was just built.
How it works
The page runs in your phone's browser and speaks directly to the machine
over an encrypted peer-to-peer data channel. A service worker on the page catches every request and
sends it down that channel; a small helper process beside the daemon answers it out of
localhost:PORT.
The hub only introduces the two ends — it exchanges the connection details and then steps out. Your traffic never flows through our servers, which is a design constraint, not a phase: video, large files and busy pages cost us nothing and are not throttled by us.
What it does and does not do
- Serves whatever is already listening on that port. Daktyl never starts your server for you — if nothing is listening you get one sentence saying so, naming the port.
- The tunnel is for you, the owner, viewing your own machine. Public share links are not V1.
- Open ports are listed per machine in the app, under the machine, and can be closed from there.
Direct peer-to-peer connections do not always land — a carrier network behind CGNAT
is the hard case. When it cannot connect you are told, rather than left with a spinner.