Localdock 2 for macOS · Tap to Fix

Point at the bug. Your agent fixes it.

Open your local project on your phone or in any browser, tap what's broken, and it lands on your Mac with a screenshot, the failed request and the console — one click from Claude Code or Codex. When that request comes back 200, Localdock marks it fixed.

Download for macOS

$19 one time · single device · refunded if it doesn't fit

Works on your iPhone, over Wi-FiNothing to install on the phoneNo SDK, no code changesClaude Code & CodexmacOS 14+
the mac app

Every project, at a glance

Each dev server as a live picture of its page — and the bugs people sent you, waiting on the right.

The Localdock window: five projects shown as pictures of their pages — dashboard, storefront, docs, an API and a Postgres container — with who can open each, and two reports waiting in a rail on the right.
tap to fix

From a tap to a fix

Three steps. You do the first two with your thumb.

01

Tap the bug

Turn Tap to Fix on for a project and every page gets a small bug button — on your phone over Wi-Fi, or in any browser on your Mac, where ⌥⇧L works too. Tap the thing that's broken; tap again for what's behind it. No SDK and no code change: Localdock adds the button as the page passes through it.

02

Say what's wrong

A few words is plenty. A picture of the screen with your element marked, the requests that failed and the console errors around them are attached already — and you see that list before anything is sent. No cookies, no form values, no passwords.

03

Hand it over. Watch it close.

The report lands on your Mac with a notification. One click hands it to Claude Code or Codex, in your terminal, in that project's folder. When the request that failed comes back 200 from the same device, Localdock marks it fixed — nobody has to come back and tick a box.

A layout bug has no failing request to watch, so that one you mark fixed yourself.

how your phone gets there

Every project has an address your phone can open.

Each dev server gets a name — dashboard.localhost on this Mac, whatever port it landed on. Share it on your Wi-Fi and it's dashboard.local on your phone: click the QR button in the menu bar and point your camera at it. Testing with someone across town? A public HTTPS link with a secret key that expires in an hour. Tap to Fix works on all three.

  1. dashboard.localhostthis Mac
  2. dashboard.localyour phone, on your Wi-Fi
  3. quiet-lion-7f3a.localdock.linkanyone, anywhere
the console

See what the phone is saying.

You can't open devtools on an iPhone. While a project is open on a device, its console lines and requests stream to the Mac, live — and any error is one click from becoming a report. It lives in memory: quit Localdock and it's gone.

Your agent, your Mac

Localdock never starts an agent on its own. A report goes to one only when you press the button.

</>

Claude Code and Codex

Hand over writes the task into the project's .localdock folder and starts your agent in Terminal or iTerm. Pick one per project — a repo can set it in .localdock/config, but never the command.

✓

Reports stay on this Mac

Reports, screenshots and logs are kept on your Mac for 30 days and go nowhere else. What reaches your agent is exactly the report you hand over — Localdock sends nothing about your projects to us.

!

Read as evidence

Anyone who can open a shared page can send a report, so the task fences what they wrote: your agent reads it as evidence to examine, never as instructions to follow.

Inside Localdock

Real screens from the app, light and dark following your Mac.

A project's page in Localdock: the dashboard app rendered live, a ladder showing who can open it, the Tap to Fix switch, and today's reports.
A project. The live page, who can open it, and the Tap to Fix switch.
A report in Localdock: the screenshot from an iPhone, the element and the failed POST request, and a coral button to hand it over to Claude Code.
A report. The phone's screenshot, the failing request, one button to your agent.
Localdock settings for agents: choose Claude Code or Codex, the terminal to open, and the command each runs.
Agents. Claude Code or Codex, per project, with your own command.
The Localdock menu bar panel listing five projects, each with an open-link and a QR code button, and a waiting report at the top.
The menu bar. Every project, a link and a QR code for your phone.

And the port chaos is gone

Everything Localdock did before Tap to Fix is still here.

what your terminal used to say

One name, whatever the port

Bookmark dashboard.localhost, put it in your OAuth callback. When your framework hops to the next port, the name follows the newest server. How names work.

Everything listening, in the menu bar

Every dev server and where it came from, a link and a QR code per project, and the ones still running after you moved on — quit in one click.

Agents stop colliding

A built-in MCP server gives your agents three tools — list_ports, get_free_port, cleanup — so two sessions never fight over :3000. For AI coding agents.

Dmytro Virych

Hey, I'm Dmytro

Kharkiv · @dmytrovirych · 21 products shipped, building this one in public

I run three or four coding agents at once, most days. They start servers wherever there's a free port, so the URL in my browser was wrong about half the time — and the worst version of that is an agent deciding a busy port means my code is broken, and “fixing” something that worked fine.

So I stopped caring which port anything uses. Each project has a name now. The name always works.

Then the names reached my phone, and I started testing there. Every bug I found turned into the same chore: a screenshot, a description typed with my thumbs, and an agent that still had to guess which request had failed. Now I tap the bug, and the agent gets all of it — the picture, the request, the console.

It's one person's tool, priced like one: $19, once. If it doesn't fit your workflow, email me and I'll refund it.

— Dmytro

One price. No subscription.

Pay once, keep it.

Localdock app for macOS
$19one time · 1 device
  • ✓ Tap to Fix on your phone and in every browser
  • ✓ Hand over to Claude Code or Codex, marked fixed when it is
  • ✓ A name for every project — on your Wi-Fi or a public link
  • ✓ A live console from every device
  • ✓Licence key emailed the moment you pay, resendable any time
  • ✓ Every Localdock 2 update included
  • ✓ Runs offline, license check aside
Download for macOS

Secure checkout · prices in USD · VAT/sales tax added at checkout where it applies

Payment is processed by Creem, our merchant of record, who will appear on your statement and issue your invoice. Your licence key is emailed to the address you pay with.

what you are not paying for
  • · No monthly plan
  • · No account, no login
  • · No telemetry on your processes
  • · No seats, no team tier

Built by one person. If it does not fit your workflow, email me within 14 days and I'll refund it — how refunds work.

Questions

A small bug button on every page of a local project you switch it on for — on your phone over Wi-Fi, or in any browser on your Mac, where ⌥⇧L works too. Tap the thing that's broken, say what's wrong in a few words, and the report lands on your Mac with a screenshot, the requests that failed and the console errors around them, ready to hand to your coding agent.

No SDK, no package, no code change. With Tap to Fix on, Localdock adds one script tag to the project's HTML pages as they pass through on their way to the browser; switch it off and the pages are exactly what your server sent. If a page's Content-Security-Policy wouldn't allow the script, Localdock leaves that page alone and says so on the project, rather than rewriting your policy.

Claude Code and Codex. Hand over writes the report into the project's .localdock folder as a task and starts your agent in Terminal or iTerm, in that project. You pick the agent per project; a repo can suggest one in .localdock/config, but only you set the command that runs. Separately, the built-in MCP server — list_ports, get_free_port, cleanup — works with any MCP client, Cursor included. More: Localdock for AI coding agents.

Only when there is something to watch. If the report caught a failing request, Localdock marks it fixed when that same request comes back 2xx from the same project after you handed it over. A layout bug has no failing request, so you mark that one fixed with a click.

A picture of the page with your element marked, the element itself, the requests that failed, the recent console lines and your note — no cookies, no form values, no passwords. You see that list on the phone before you send it. Reports stay on your Mac for 30 days and never go to us; one reaches an agent only when you press Hand over, and then it goes to the agent you chose.

Anyone who can open a project you've shared, while Tap to Fix is on for it — that's the point when it's a client or a teammate. So reports are treated as untrusted: when you hand one over, what the sender wrote is fenced off, and your agent is told to read it as evidence to examine, never as instructions to follow.

Share the project on your Wi-Fi and it answers at dashboard.local on any device on the same network — click the QR button next to it in the menu bar and point your camera. It's off by default and switched on one project at a time; everything you didn't share is refused without revealing that it exists. Nothing to install on the phone.

Yes — move the project to "Internet" and you get a temporary HTTPS link anyone can open: a client, a colleague in another city, or a webhook provider like Stripe. Nothing to install, and they don't need an account or your Wi-Fi. The link carries a secret key, so anyone who reaches the address without it sees a page that names nothing. It expires after an hour and dies the moment you switch it off or quit. Tap to Fix works over it too.

No. The tunnel runs between your Mac and Cloudflare's network, so Cloudflare carries the traffic and terminates the TLS — we never see it. Our server's only involvement is handing your Mac a permanent address the first time you ever share, which needs your licence key and nothing else. It never learns your project names, your ports, or when a link is used.

For showing someone your own dev server from a Mac — yes, with a different shape: ngrok exposes a port, Localdock shares a project that already has a name, behind a key-gated link that expires in an hour, with nothing for the recipient to install — and they can tap a bug and send it to you. It's not a replacement for production ingress or always-on tunnels. The honest version, both directions: Localdock vs ngrok.

No setup at all. Any *.localhost name already resolves to your own machine — that's a web standard, handled by macOS and every browser. Localdock listens on port 80, reads the name you asked for, and forwards you to whatever port that project's server is on. No hosts file, no dnsmasq, no admin password.

From your project folders and container names, so most things are named correctly before you touch anything. Renaming is one click on the project's page in the Localdock window. A name another project already uses gets refused with a reason instead of silently stealing the address.

Yes. Localdock adds an address, it never takes one away. Your server keeps its port and keeps answering on it, so nothing in your setup has to change — and if Localdock isn't running, you simply lose the pretty name.

Yes. WebSockets, HMR, server-sent events and streaming pass through untouched. Localdock forwards raw TCP after reading the name; the one exception is Tap to Fix, which, while it's on for a project, adds its script tag to that project's HTML page loads and leaves everything else as your server sent it.

Then Localdock steps aside and serves on 7777 instead — your URLs become dashboard.localhost:7777, and settings tells you which port is live. Nothing breaks, and you can pick any port you like.

Nothing about your projects is ever sent to us — not names, ports, paths, reports or logs. The only call carrying anything about you is the licence check: licence key, an instance ID, your device name, nothing else. A project you share becomes reachable from your own network or through Cloudflare, which is the point; a report reaches a coding agent only when you hand it over.

The moment your payment clears you land on a download page with your licence key on it, and the same key is emailed to the address you paid with. Paste it into Localdock and you're done — no account, no waiting.

No subscription — $19 once, single device, every Localdock 2 update included, no account. The app is macOS 14 and later; the phones and browsers you test on can be anything.

Tap the bug. Let your agent fix it.

Turn it on for a project, open it on your phone, tap the bug. Download it in the next minute.

Download for macOS

$19 one time · single device · refunded if it doesn't fit