[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-2135":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":9,"totalLinesOfCode":9,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":9,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":28,"readmeContent":29,"aiSummary":30,"trendingCount":16,"starSnapshotCount":16,"syncStatus":31,"lastSyncTime":32,"discoverSource":33},2135,"acp-ui","formulahendry\u002Facp-ui","formulahendry","A modern, cross-platform client for the Agent Client Protocol (ACP) on desktop, mobile, and the web — connect to any ACP-compatible AI agent (Claude, Codex, Copilot, Qwen, Gemini, OpenCode, OpenClaw and more)",null,"https:\u002F\u002Fgithub.com\u002Fformulahendry\u002Facp-ui","Vue",328,34,5,6,0,11,19,84,33,4.63,false,"main",[25,26,27],"acp","agent-client-protocol","agentclientprotocol","2026-06-12 02:00:37","# ACP UI\r\n\r\n\u003Ca href=\"https:\u002F\u002Fapps.microsoft.com\u002Fdetail\u002F9P76NGS1VF2L?referrer=appbadge&mode=full\" target=\"_blank\"  rel=\"noopener noreferrer\">\r\n\t\u003Cimg src=\"https:\u002F\u002Fget.microsoft.com\u002Fimages\u002Fen-us%20dark.svg\" width=\"200\"\u002F>\r\n\u003C\u002Fa>\r\n\r\nA modern, cross-platform client for the [Agent Client Protocol (ACP)](https:\u002F\u002Fagentclientprotocol.com\u002F) on desktop, mobile, and the web. Connect to AI coding agents like GitHub Copilot, Claude Code, Gemini CLI, Qwen Code, Codex CLI, OpenCode, OpenClaw, and any ACP-compatible agent from a unified interface.\r\n\r\n![ACP UI Screenshot](assets\u002Fscreenshot.png)\r\n\r\n## 🌍 Try it in your browser\r\n\r\nNo install required — open **[https:\u002F\u002Facp-ui.github.io\u002F](https:\u002F\u002Facp-ui.github.io\u002F)** and connect to a remote ACP agent over WebSocket. The web build supports the same chat, sessions, permissions, and traffic-monitor features as the desktop and mobile apps; it only omits local stdio agents and host filesystem access (which require a local subprocess and aren't available in a browser tab).\r\n\r\n> Pages served over HTTPS can only open `wss:\u002F\u002F` URLs (browser mixed-content rule). For LAN `ws:\u002F\u002F` access, run the bundle locally (`npm run preview:web`) or use a `wss:\u002F\u002F` tunnel — see [Connecting from your phone or browser](#-connecting-from-your-phone-or-browser), the same setup works for the web build.\r\n\r\n## 📥 Installation\r\n\r\nDownload the latest release for your platform from [GitHub Releases](https:\u002F\u002Fgithub.com\u002Fformulahendry\u002Facp-ui\u002Freleases):\r\n\r\n| Platform | Download |\r\n|----------|----------|\r\n| **Web** | [https:\u002F\u002Facp-ui.github.io\u002F](https:\u002F\u002Facp-ui.github.io\u002F) — no install, opens in any modern browser |\r\n| **Windows** | [.msi installer](https:\u002F\u002Fgithub.com\u002Fformulahendry\u002Facp-ui\u002Freleases\u002Flatest) or [.exe (NSIS)](https:\u002F\u002Fgithub.com\u002Fformulahendry\u002Facp-ui\u002Freleases\u002Flatest) |\r\n| **macOS (Apple Silicon)** | [.dmg (ARM64)](https:\u002F\u002Fgithub.com\u002Fformulahendry\u002Facp-ui\u002Freleases\u002Flatest) |\r\n| **macOS (Intel)** | [.dmg (x64)](https:\u002F\u002Fgithub.com\u002Fformulahendry\u002Facp-ui\u002Freleases\u002Flatest) |\r\n| **Linux (x64)** | [.deb](https:\u002F\u002Fgithub.com\u002Fformulahendry\u002Facp-ui\u002Freleases\u002Flatest) or [.AppImage](https:\u002F\u002Fgithub.com\u002Fformulahendry\u002Facp-ui\u002Freleases\u002Flatest) or [.rpm](https:\u002F\u002Fgithub.com\u002Fformulahendry\u002Facp-ui\u002Freleases\u002Flatest) |\r\n| **Linux (ARM64)** | [.deb](https:\u002F\u002Fgithub.com\u002Fformulahendry\u002Facp-ui\u002Freleases\u002Flatest) or [.AppImage](https:\u002F\u002Fgithub.com\u002Fformulahendry\u002Facp-ui\u002Freleases\u002Flatest) or [.rpm](https:\u002F\u002Fgithub.com\u002Fformulahendry\u002Facp-ui\u002Freleases\u002Flatest) |\r\n| **Android** | [.apk](https:\u002F\u002Fgithub.com\u002Fformulahendry\u002Facp-ui\u002Freleases\u002Flatest) — sideload via \"Install unknown apps\" |\r\n| **iOS** | Build from source (see [Building for iOS](#building-for-ios)) — no prebuilt binary |\r\n\r\n> Mobile and web builds connect to remote agents over WebSocket. See [Connecting from your phone or browser](#-connecting-from-your-phone-or-browser) for how to expose a local agent so a phone or browser can reach it.\r\n\r\n## ✨ Features\r\n\r\n- **Multi-Agent Support** — Connect to any ACP-compatible agent\r\n- **Remote agents over WebSocket** — Talk to agents on another machine via `ws:\u002F\u002F` \u002F `wss:\u002F\u002F`\r\n- **Web app** — Run in any modern browser at [acp-ui.github.io](https:\u002F\u002Facp-ui.github.io\u002F) without installing anything\r\n- **Mobile** — Android APK shipped on Releases; iOS via local Xcode build\r\n- **Foreground reconnect** — On mobile and the web, automatically reattaches to your session when the app\u002Ftab regains focus\r\n- **Idle keep-alive** — Sends a JSON-RPC `$\u002Fping` heartbeat every 25 seconds so NAT\u002Fproxy idle timeouts don't drop your WebSocket\r\n- **Session Management** — Create, resume, and manage conversation sessions\r\n- **Rich Chat Interface** — Markdown rendering, syntax highlighting, tool call visualization\r\n- **Slash Commands** — Quick access to agent capabilities with `\u002Fcommand` syntax\r\n- **Permission Controls** — Approve or deny agent actions before execution\r\n- **Session Modes** — Switch between agent modes (ask, code, architect, etc.)\r\n- **Model Picker** — Select from available AI models (unstable API)\r\n- **Agent Thinking** — View the agent's reasoning process (collapsible)\r\n- **Environment Variables** — Configure per-agent environment variables (API keys, settings)\r\n- **Traffic Monitor** — Debug and inspect ACP protocol messages in real-time\r\n- **Hot-Reload Config** — Edit agent configurations without restarting (desktop)\r\n- **Cross-Platform** — Web (any modern browser), Windows, macOS (ARM\u002FIntel), Linux (x64\u002FARM64), Android, iOS\r\n\r\n## 🎯 Default Agents\r\n\r\nACP UI comes pre-configured with these agents:\r\n\r\n| Agent | Package |\r\n|-------|---------|\r\n| [GitHub Copilot](https:\u002F\u002Fgithub.com\u002Fgithub\u002Fcopilot-language-server-release?tab=readme-ov-file#agent-client-protocol-acp-preview) | `@github\u002Fcopilot-language-server` |\r\n| [Claude Code](https:\u002F\u002Fgithub.com\u002Fzed-industries\u002Fclaude-code-acp) | `@zed-industries\u002Fclaude-code-acp` |\r\n| [Gemini CLI](https:\u002F\u002Fgithub.com\u002Fgoogle-gemini\u002Fgemini-cli) | `@google\u002Fgemini-cli` |\r\n| [Qwen Code](https:\u002F\u002Fgithub.com\u002FQwenLM\u002Fqwen-code) | `@qwen-code\u002Fqwen-code` |\r\n| [Auggie CLI](https:\u002F\u002Fgithub.com\u002FAugmentCode\u002Fauggie) | `@augmentcode\u002Fauggie` |\r\n| [Qoder CLI](https:\u002F\u002Fgithub.com\u002Fqoder-ai\u002Fqodercli) | `@qoder-ai\u002Fqodercli` |\r\n| [Codex CLI](https:\u002F\u002Fgithub.com\u002Fzed-industries\u002Fcodex-acp) | `@zed-industries\u002Fcodex-acp` |\r\n| [OpenCode](https:\u002F\u002Fgithub.com\u002Fopencode-ai\u002Fopencode) | `opencode-ai` |\r\n| [OpenClaw](https:\u002F\u002Fgithub.com\u002Fnicobailon\u002Fopenclaw) | `openclaw` |\r\n\r\n## 🛠️ Configuration\r\n\r\nAgent configurations are stored in:\r\n\r\n| Platform | Path |\r\n|----------|------|\r\n| Windows | `%APPDATA%\\acp-ui\\agents.json` |\r\n| macOS | `~\u002FLibrary\u002FApplication Support\u002Facp-ui\u002Fagents.json` |\r\n| Linux | `~\u002F.config\u002Facp-ui\u002Fagents.json` |\r\n| Android | `\u002Fdata\u002Fdata\u002Fformulahendry.acp_ui\u002Ffiles\u002Fagents.json` (managed via Settings UI) |\r\n| iOS | App sandbox — managed via Settings UI |\r\n| Web | Browser `localStorage` (key `acp-ui:agents`) — managed via Settings UI |\r\n\r\n> On mobile and the web the config file isn't user-accessible — add and edit agents through the in-app **Settings** dialog. Stdio agents are filtered out of the list since they can't run in a browser or on a phone. Web-app config is per-browser per-origin: it doesn't sync across machines, and clearing site data wipes it.\r\n\r\n### Local stdio agents (desktop)\r\n\r\n### Example Configuration\r\n\r\n```json\r\n{\r\n  \"agents\": {\r\n    \"GitHub Copilot\": {\r\n      \"command\": \"npx\",\r\n      \"args\": [\"@github\u002Fcopilot-language-server@latest\", \"--acp\"],\r\n      \"env\": {}\r\n    },\r\n    \"Claude Code\": {\r\n      \"command\": \"npx\",\r\n      \"args\": [\"@zed-industries\u002Fclaude-code-acp@latest\"],\r\n      \"env\": {\r\n        \"ANTHROPIC_API_KEY\": \"sk-ant-...\"\r\n      }\r\n    },\r\n    \"Gemini CLI\": {\r\n      \"command\": \"npx\",\r\n      \"args\": [\"@google\u002Fgemini-cli@latest\", \"--experimental-acp\"],\r\n      \"env\": {}\r\n    },\r\n    \"Qwen Code\": {\r\n      \"command\": \"npx\",\r\n      \"args\": [\"@qwen-code\u002Fqwen-code@latest\", \"--acp\", \"--experimental-skills\"],\r\n      \"env\": {}\r\n    },\r\n    \"Auggie CLI\": {\r\n      \"command\": \"npx\",\r\n      \"args\": [\"@augmentcode\u002Fauggie@latest\", \"--acp\"],\r\n      \"env\": {\"AUGMENT_DISABLE_AUTO_UPDATE\": \"1\"}\r\n    },\r\n    \"Qoder CLI\": {\r\n      \"command\": \"npx\",\r\n      \"args\": [\"@qoder-ai\u002Fqodercli@latest\", \"--acp\"],\r\n      \"env\": {}\r\n    },\r\n    \"Codex CLI\": {\r\n      \"command\": \"npx\",\r\n      \"args\": [\"@zed-industries\u002Fcodex-acp@latest\"],\r\n      \"env\": {}\r\n    },\r\n    \"OpenCode\": {\r\n      \"command\": \"npx\",\r\n      \"args\": [\"opencode-ai@latest\", \"acp\"],\r\n      \"env\": {}\r\n    },\r\n    \"OpenClaw\": {\r\n      \"command\": \"npx\",\r\n      \"args\": [\"openclaw\", \"acp\"],\r\n      \"env\": {}\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n> **Note**: Environment variables are passed to the agent process on startup. Use these for API keys, custom settings, or overriding default behavior.\r\n\r\n### Remote agents over WebSocket\r\n\r\nFor agents running on another machine — or for connecting from a phone to an agent on your laptop — use the `websocket` transport instead of `command`:\r\n\r\n```json\r\n{\r\n  \"agents\": {\r\n    \"Copilot CLI (remote)\": {\r\n      \"transport\": \"websocket\",\r\n      \"url\": \"wss:\u002F\u002Facp.example.com\u002Fv1\",\r\n      \"headers\": { \"Authorization\": \"Bearer YOUR_TOKEN\" }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\nBoth `ws:\u002F\u002F` (cleartext, for LAN \u002F Dev Tunnels) and `wss:\u002F\u002F` (TLS) are accepted. `Authorization: Bearer \u003Ctoken>` is propagated as a WebSocket subprotocol because browser\u002FWebView WebSocket APIs cannot set custom HTTP headers.\r\n\r\n> **Note**: Filesystem RPCs (`fs\u002Fread_text_file`, `fs\u002Fwrite_text_file`) respond with JSON-RPC `-32601 Method not found` for remote agents. The agent operates on its own host's filesystem at the path you set as the working directory.\r\n\r\n## 🌐 Connecting from your phone or browser\r\n\r\nThe mobile and web builds can only talk to remote agents (no subprocess in a phone or browser sandbox), so you need to expose a local stdio agent over a network endpoint. The recommended bridge is [`@rebornix\u002Fstdio-to-ws`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@rebornix\u002Fstdio-to-ws), which speaks ACP-over-WebSocket on one end and stdio on the other. The same setup works for the web build at [acp-ui.github.io](https:\u002F\u002Facp-ui.github.io\u002F) — with one extra rule: the HTTPS page can only open `wss:\u002F\u002F` URLs (see [HTTPS pages must use `wss:\u002F\u002F`](#browser-only-https-pages-must-use-wss) below).\r\n\r\n### Same Wi-Fi (LAN)\r\n\r\nOn your computer:\r\n\r\n```sh\r\nnpx @rebornix\u002Fstdio-to-ws \"copilot --acp\" --port 3000 --persist --grace-period -1\r\n```\r\n\r\n- Allow inbound TCP 3000 in your OS firewall.\r\n  - Windows (one-time, elevated PowerShell):\r\n    ```powershell\r\n    New-NetFirewallRule -DisplayName \"stdio-to-ws\" -Direction Inbound -LocalPort 3000 -Protocol TCP -Action Allow -Profile Private\r\n    ```\r\n- Find your computer's LAN IP (`ipconfig` on Windows, `ifconfig`\u002F`ip a` on macOS \u002F Linux).\r\n- In ACP UI on the phone, add a websocket agent with URL `ws:\u002F\u002F\u003CLAN IP>:3000\u002F`.\r\n\r\n> **Android emulator** uses `ws:\u002F\u002F10.0.2.2:3000\u002F`. **USB-tethered phone** can use `ws:\u002F\u002Flocalhost:3000\u002F` after running `adb reverse tcp:3000 tcp:3000`.\r\n\r\n### From anywhere (Microsoft Dev Tunnels)\r\n\r\n`stdio-to-ws` exposes the agent on `localhost`; pair it with [Microsoft Dev Tunnels](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fazure\u002Fdeveloper\u002Fdev-tunnels\u002F) to get a `wss:\u002F\u002F` URL reachable from the public internet.\r\n\r\n```sh\r\n# Terminal 1 — wrap the agent as a WebSocket on port 3000.\r\nnpx @rebornix\u002Fstdio-to-ws \"copilot --acp\" --port 3000 --persist --grace-period -1\r\n\r\n# Terminal 2 — expose port 3000 publicly. First-run prompts for login.\r\ndevtunnel host -p 3000\r\n```\r\n\r\n`devtunnel host` prints a URL like:\r\n\r\n```\r\nhttps:\u002F\u002F\u003Cid>-3000.\u003Cregion>.devtunnels.ms\r\n```\r\n\r\nUse the **`wss:\u002F\u002F...devtunnels.ms\u002F`** form (replace `https` with `wss`) as the agent URL in ACP UI on the phone or in the [web app](https:\u002F\u002Facp-ui.github.io\u002F).\r\n\r\n#### Stable URL across restarts\r\n\r\nThe ad-hoc URL changes every run. To get a reusable one:\r\n\r\n```sh\r\n# One-time setup\r\ndevtunnel user login\r\ndevtunnel create my-acp -a\r\ndevtunnel port create my-acp -p 3000 --protocol https\r\n\r\n# Every session afterwards\r\ndevtunnel host my-acp\r\n```\r\n\r\nReference: [Dev Tunnels CLI commands](https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fazure\u002Fdeveloper\u002Fdev-tunnels\u002Fcli-commands).\r\n\r\n#### Browser-only: HTTPS pages must use `wss:\u002F\u002F`\r\n\r\nWhen you open ACP UI in a browser at [acp-ui.github.io](https:\u002F\u002Facp-ui.github.io\u002F), the page is served over HTTPS, and the browser blocks plain `ws:\u002F\u002F` connections (mixed-content rule). Two options:\r\n\r\n- **Easy:** front your bridge with a `wss:\u002F\u002F` URL (Dev Tunnels above gives you one for free).\r\n- **LAN-only:** serve the bundle locally instead of the hosted site:\r\n\r\n  ```sh\r\n  git clone https:\u002F\u002Fgithub.com\u002Fformulahendry\u002Facp-ui.git\r\n  cd acp-ui && npm install && npm run preview:web\r\n  ```\r\n\r\n  then open `http:\u002F\u002Flocalhost:4173\u002F` and add a `ws:\u002F\u002F\u003CLAN IP>:3000\u002F` agent as usual.\r\n\r\n#### Why `--persist --grace-period -1`?\r\n\r\nMobile OSes freeze backgrounded apps within seconds, dropping the WebSocket. `--persist` tells the bridge to keep the wrapped agent alive across disconnects, and `--grace-period -1` makes that timeout infinite. When ACP UI on the phone returns to the foreground, it transparently reattaches via `session\u002Fload` and your conversation resumes. Without persistence, you'd lose the running agent every time you switched apps.\r\n\r\n> **Tip**: a future `stdio-to-ws` release will integrate Dev Tunnels into the bridge itself (`--tunnel-name \u003Cname>`, currently only on its `dev` branch). Once published you'll be able to collapse the two terminals into one.\r\n\r\n## 📖 Usage\r\n\r\n1. **Select an Agent** — Choose from the dropdown in the sidebar (☰ on mobile \u002F narrow web).\r\n2. **Set Working Directory** — Pick a folder on desktop, or type an absolute path on mobile \u002F web. The path is interpreted on the **agent's host**, not your device.\r\n3. **Create Session** — Tap **New Session** to start chatting.\r\n4. **Use Slash Commands** — Type `\u002F` to see available commands.\r\n5. **Resume Sessions** — Tap a saved session in the sidebar to resume.\r\n\r\n## 🚀 Development\r\n\r\n### Prerequisites\r\n\r\n- [Node.js](https:\u002F\u002Fnodejs.org\u002F) 18+\r\n- [Rust](https:\u002F\u002Frustup.rs\u002F) 1.70+\r\n- Platform-specific build tools (see [Tauri Prerequisites](https:\u002F\u002Ftauri.app\u002Fstart\u002Fprerequisites\u002F))\r\n\r\n### Setup\r\n\r\n```bash\r\n# Clone the repository\r\ngit clone https:\u002F\u002Fgithub.com\u002Fformulahendry\u002Facp-ui.git\r\ncd acp-ui\r\n\r\n# Install dependencies\r\nnpm install\r\n\r\n# Run in development mode (Tauri desktop)\r\nnpm run tauri dev\r\n```\r\n\r\n### Build for Production\r\n\r\n```bash\r\nnpm run tauri build\r\n```\r\n\r\n### Building \u002F running the web app\r\n\r\nThe web app uses the same Vue 3 frontend, with the Tauri runtime swapped out for browser-native APIs (WebSocket, `localStorage`). It only supports remote agents over `ws:\u002F\u002F` \u002F `wss:\u002F\u002F`.\r\n\r\n```sh\r\n# Dev server with HMR (default port 5173)\r\nnpm run dev:web\r\n\r\n# Production build → dist-web\u002F\r\nnpm run build:web\r\n\r\n# Serve dist-web\u002F locally to verify the production bundle\r\nnpm run preview:web\r\n```\r\n\r\nThe live deployment at [acp-ui.github.io](https:\u002F\u002Facp-ui.github.io\u002F) is published from `dist-web\u002F` by [.github\u002Fworkflows\u002Fdeploy-web.yml](.github\u002Fworkflows\u002Fdeploy-web.yml) on every push to `main`.\r\n\r\n### Building for Android\r\n\r\nPrerequisites:\r\n\r\n- JDK 17 (Temurin recommended)\r\n- Android SDK platform 34, build-tools 34, NDK 26\r\n- Rust Android targets: `rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android`\r\n- Set `ANDROID_HOME` and `NDK_HOME` env vars\r\n\r\n```sh\r\n# `src-tauri\u002Fgen\u002Fandroid\u002F` is gitignored; this regenerates it.\r\nnpm run tauri android init\r\n\r\n# Allow plain ws:\u002F\u002F to LAN agents (the init template defaults this off via\r\n# a Gradle placeholder). Required for ACP UI's LAN-agent UX.\r\nsed -i 's|usesCleartextTraffic=\"\\${usesCleartextTraffic}\"|usesCleartextTraffic=\"true\"|' \\\r\n  src-tauri\u002Fgen\u002Fandroid\u002Fapp\u002Fsrc\u002Fmain\u002FAndroidManifest.xml\r\n\r\n# Debug-signed APK suitable for sideload.\r\nnpm run tauri android build -- --debug --apk\r\n# Output: src-tauri\u002Fgen\u002Fandroid\u002Fapp\u002Fbuild\u002Foutputs\u002Fapk\u002Funiversal\u002Fdebug\u002Fapp-universal-debug.apk\r\n```\r\n\r\nTo run on a device with hot-reload during development:\r\n\r\n```sh\r\nnpm run tauri android dev\r\n```\r\n\r\nIf the device can't reach the dev server, allow port `1420` through your firewall, or USB-tether the phone and run `adb reverse tcp:1420 tcp:1420` first.\r\n\r\n### Building for iOS\r\n\r\nPrerequisites:\r\n\r\n- macOS with Xcode 15+\r\n- An Apple Developer team for signing\r\n- Rust iOS targets: `rustup target add aarch64-apple-ios x86_64-apple-ios aarch64-apple-ios-sim`\r\n\r\n```sh\r\nnpm run tauri ios init\r\n```\r\n\r\nThen edit `src-tauri\u002Fgen\u002Fapple\u002F\u003Capp>_iOS\u002FInfo.plist` and add:\r\n\r\n```xml\r\n\u003Ckey>NSAppTransportSecurity\u003C\u002Fkey>\r\n\u003Cdict>\r\n  \u003Ckey>NSAllowsArbitraryLoads\u003C\u002Fkey>\u003Ctrue\u002F>\r\n\u003C\u002Fdict>\r\n\u003Ckey>NSLocalNetworkUsageDescription\u003C\u002Fkey>\r\n\u003Cstring>ACP UI connects to ACP agents you configure, including agents on your local network.\u003C\u002Fstring>\r\n```\r\n\r\nBuild and install via Xcode (`.xcworkspace`), or run on a connected device:\r\n\r\n```sh\r\nnpm run tauri ios dev\r\n```\r\n\r\niOS doesn't ship a binary today because it requires per-developer signing and an Apple Developer Program membership.\r\n\r\n## 🔗 Links\r\n\r\n- [Agent Client Protocol](https:\u002F\u002Fagentclientprotocol.com\u002F)\r\n- [Tauri Documentation](https:\u002F\u002Ftauri.app\u002F)\r\n\r\n## 📄 License\r\n\r\nMIT License\r\n","ACPUi 是一个现代化的跨平台客户端，支持桌面、移动和网页端通过Agent Client Protocol (ACP)连接到各种AI代理（如Claude, Codex, Copilot, Qwen, Gemini等）。其核心功能包括多代理支持，允许用户从统一界面接入任何ACP兼容的AI代理。技术上，ACPUi采用Vue构建，提供WebSocket连接以实现远程访问，并在不同平台上保持一致的聊天、会话管理及流量监控特性。适用于需要灵活接入多种AI辅助工具进行开发或研究的场景，无论是本地还是云端环境都能轻松使用。",2,"2026-06-11 02:48:21","trending"]