DEV Community

Jun Han
Jun Han

Posted on

ACP UI supports Web Client! Connect to any remote ACP agent from browser

Hey everyone — quick update on my side project, ACP UI.

A couple of days ago I shared that ACP UI had landed as native iOS and Android apps, so you could connect to any remote ACP agent right from your phone. Cool, but I figured… why stop there?

So I kept hacking, and now there's one more thing:

👉 ACP UI is now a web app

Just open this URL in any browser — desktop or mobile, doesn't matter:

https://acp-ui.github.io/

That's it. No install, no setup, no app store. Pop it open and you can connect to any remote ACP agent over WebSocket.

What you can do with it

  • Talk to any ACP-compatible agent — Copilot, Claude Code, Codex, Gemini, Qwen, Auggie, Qoder, OpenCode, OpenClaw, you name it
  • Run it from your laptop browser, your phone browser, or as a native desktop / iOS / Android app — same UI everywhere
  • Connect to remote agents over ws:// (LAN) or wss:// (anywhere, e.g. via Dev Tunnels)
  • Manage multiple sessions, switch between agent modes, pick models, see tool calls as they happen
  • Built-in Traffic Monitor so you can watch the raw ACP protocol go by — handy for debugging
  • A $/ping heartbeat keeps your WebSocket alive through NAT and proxy idle timeouts, so your session doesn't randomly drop after a minute

Where ACP UI runs today

  • 🌍 Webhttps://acp-ui.github.io/
  • 🖥️ Desktop — Windows, macOS (Apple Silicon + Intel), Linux (x64 + ARM64)
  • 📱 Mobile — Android (APK on Releases), iOS (build from source)

One client, six platforms. Same chat, same sessions, same agents.

Heads up: HTTPS pages need wss://

Since the hosted site is on https://, your browser won't let it open plain ws:// connections (mixed-content rule). Two options:

  • Easy: front your local agent with a wss:// URL — Microsoft Dev Tunnels gives you one for free.
  • LAN-only: clone the repo and run npm run preview:web locally, then ws://<LAN IP>:3000/ works fine.

Both flows are documented in the repo.

How did I pull this off?

One word: Tauri.

Same Vue frontend, swap the runtime — desktop gets a native shell with a system WebView, mobile gets WKWebView / Android WebView, web gets a plain browser tab. The ACP transport, the chat UI, the session management, all of it is reused as-is. The web build just throws away the local-subprocess code path and talks to remote agents over WebSocket only.

Try it / star it / break it

Issues, PRs, and stars all very welcome. Have fun connecting to your favorite agent from… literally anywhere.

Top comments (0)