agentarc
v0.6.4
Published
Multi-agent command center for AI coding agents — from your phone, tablet, or any browser.
Downloads
5,724
Readme
AgentArc
Multi-agent command center for GitHub Copilot AI coding agents — from your phone, tablet, or any browser.
© 2026 Northshore Press. Released under the MIT License.
Quick Start
# Check for and install any missing prerequisites (Node, Ollama, devtunnel)
npx agentarc setup
# Start the agent manager with remote access (tunnel + anonymous are on by default)
npx agentarcYou'll see:
🧠 Agent Manager
Config: ~/.agentarc/agents.json
Default model: deepseek-v4-flash:cloud
🟢 Manager running at http://localhost:3001
🌐 Tunnel: https://xxxx.usw2.devtunnels.ms:3001
☁️ Relay code: abc12345-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Paste this in the app, or scan the QR below:
abc12345-xxxx-xxxx-xxxx-xxxxxxxxxxxx|MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE...
(Permanent — same machine = same code forever)Connect from your phone
- Install the Android app — get it from Google Play, or sideload the APK from GitHub Releases
- Tap "+ Add Server" and scan the QR code shown in your terminal (or paste the full relay line)
- Add an agent — pick a project directory using the 📁 Browse button
- Start the agent and tap 💬 Chat
Or just open the tunnel URL in any browser.
What Is This?
AgentArc lets you manage and chat with multiple GitHub Copilot agents from your phone, tablet, or any browser. Each agent runs on a different project directory with its own model — start them, stop them, chat with them, all remotely.
Agents are powered by GitHub Copilot (via the Copilot CLI or Ollama's ollama launch copilot). You can use any model that Copilot supports, including:
- Cloud models:
deepseek-v4-flash:cloud,gpt-4o:cloud,claude-3.5-sonnet:cloud, etc. - Local models (via Ollama):
deepseek-coder-v2,codellama,qwen2.5-coder, etc.
┌──────────────┐ WebSocket ┌──────────────────┐ stdio JSON-RPC ┌──────────────────┐
│ Phone/Tablet│◄──────────────────►│ AgentArc Server │◄─────────────────────►│ Copilot Agents │
│ (WebView) │ (JSON-RPC) │ (Node.js) │ (child processes) │ (per project) │
└──────────────┘ └──────────────────┘ └──────────────────┘Features
- 🧠 Multi-agent management — add, start, stop, and remove Copilot agents per project
- 💬 Chat with streaming — full agent responses with markdown rendering
- 📱 Android app — native app with QR-based relay discovery
- 🔄 Persistent sessions — leave and rejoin chats without losing context
- 🌐 Remote access via Microsoft Dev Tunnel — reachable from anywhere
- 📁 Server directory browser — pick project folders from your phone
- 🎯 Per-agent model selection — each agent can use a different Copilot or Ollama model
- 🔧 Tool call visibility — see reads, edits, and executes in real-time
- 📋 Slash commands —
/model,/agent,/plan,/new,/clear,/help - 🌙 Dark theme — Catppuccin Mocha
Security
AgentArc uses a public relay (jsonblob.com) to help the Android app discover your server's tunnel URL. Here's how it works and what protects you:
Relay flow
YOUR COMPUTER JSONBLOB (public) YOUR PHONE
1. Generate ECDSA P-256 keypair
private key → ~/.agentarc/key.json
public key → in memory
2. Start devtunnel ─────────► Microsoft devtunnel
gets URL: xxxx.devtunnels.ms
3. Sign { tunnelUrl, lastUpdated }
with PRIVATE KEY
4. Write signed blob ──────► stores { tunnelUrl, lastUpdated,
signature }
5. Show QR in terminal
QR = relayId|PUBLIC KEY
┌─────────┐
│ scan QR │ ◄────── pins public key (out-of-band)
└─────────┘ never through the tamperable blob
6. Read blob ◄────────────────── { tunnelUrl, signature }
7. Verify signature
using PINNED public key
✓ valid? → load tunnelUrl in WebView
✗ invalid? → "Relay tampered" — refuse to loadWhat this protects against
| Attack | Outcome |
|---|---|
| Attacker overwrites tunnelUrl with their own server | Refused — signature doesn't match pinned key |
| Attacker overwrites tunnelUrl with their own devtunnel | Refused — same reason; different keypair |
| Attacker removes the signature | Refused — missing signature with pinned key present |
| Attacker forges a valid signature | Infeasible — requires your private key (stored only on your machine) |
| Attacker guesses your relay code (UUID, 122 bits) | Infeasible — brute-force would take billions of years |
Additional protections
- Keep-alive: the server re-writes the signed tunnel URL every 10 minutes, so a tampered blob self-heals within that window.
- Staleness check: the app rejects blobs older than 15 minutes (server crashed without clearing the relay).
- Host restriction: the WebView only loads
*.devtunnels.msURLs — even if signature verification were bypassed, an attacker's non-MS host would be blocked. - Private key: stored in
~/.agentarc/key.jsonon your machine. Never transmitted. If you lose it (machine wipe), delete the server entry in the app and re-scan the QR to re-pair.
First-use trust
The only trust window is the first QR scan. The public key reaches your phone through the QR in your terminal (out-of-band), not through the tamperable relay blob. An attacker would need to control your terminal display to substitute the QR — a much higher bar than overwriting a public jsonblob.
Prerequisites
npx agentarc setup checks for and guides you through installing everything you need:
| Requirement | Why | Auto-install |
|---|---|---|
| Node.js ≥ 22.14 | Runs the server | Manual (https://nodejs.org/) |
| Ollama | Default launcher — runs Copilot agents locally (ollama launch copilot) | macOS/Linux auto; Windows manual |
| Dev Tunnels CLI | Remote access from your phone (--tunnel) | All OSes auto |
| GitHub Copilot CLI | Optional launcher (--launcher copilot) — use Copilot's own CLI instead of Ollama | Manual |
Works on macOS, Linux, and Windows.
# Check everything (default — includes tunnel + copilot checks)
npx agentarc setup
# Skip the devtunnel check (if you won't use --tunnel)
npx agentarc setup --skip-tunnel-check
# Skip the copilot CLI check (if you only use the ollama launcher)
npx agentarc setup --skip-copilot-checkCLI Reference
npx agentarc [options]| Flag | Description | Default |
|---|---|---|
| --port <n> | Port for the manager server | 3000 |
| --model <name> | Default model for new agents | deepseek-v4-flash:cloud |
| --config <path> | Path to agent config file | ~/.agentarc/agents.json |
| --no-tunnel | Don't start a devtunnel (local-only mode) | tunnel on |
| --tunnel-id <name> | Use a pre-created devtunnel | — |
| --no-allow-anonymous | Require GitHub auth on the tunnel | anonymous on |
| --open | Open dashboard in browser | off |
| --verbose | Enable debug logging | off |
Slash Commands
| Command | Description |
|---|---|
| /model <name> | Switch AI model |
| /agent | Default agent mode |
| /plan | Plan mode |
| /new | Start a fresh session (erases history) |
| /clear | Clear conversation display |
| /help | Show available commands |
Android App
The Android app (android/) is a native WebView wrapper that discovers your server via a relay code — no IP or hostname to type. It supports multiple saved servers, auto-reconnect, and the Catppuccin Mocha theme.
Build the APK:
cd android
.\build-apk.batSideload the APK
Prefer not to use Google Play? Grab the latest APK from GitHub Releases:
| Option | Link | |---|---| | 📦 Latest APK | https://github.com/tsikerdekis/AgentArc/releases/download/android-latest/AgentArc.apk | | 🔄 All releases | https://github.com/tsikerdekis/AgentArc/releases/tag/android-latest |
To install: download the APK on your Android device, enable Install unknown apps for your browser, and open the downloaded file.
Architecture
┌─────────────────────────────────────────────────────┐
│ AgentArc Server │
│ ┌─────────────┐ ┌──────────────┐ ┌───────────┐ │
│ │ REST API │ │ WebSocket │ │ Agent │ │
│ │ /api/agents│ │ /ws?agentId │ │ Manager │ │
│ │ /api/browse│ │ │ │ │ │
│ │ /api/info │ │ │ │ │ │
│ └─────────────┘ └──────────────┘ └───────────┘ │
└─────────────────────────────────────────────────────┘
│ │
▼ ▼
Static Files Bridge Processes
(Web UI) (one per agent — Copilot CLI via Ollama or direct)- REST API — manage agents (CRUD), browse server filesystem, get server info
- WebSocket proxy — routes chat messages to the correct agent's bridge process
- Agent Manager — persists agent configs, manages lifecycle (start/stop)
- Bridge — spawns a Copilot agent per project via
ollama launch copilot(default) orcopilot --acp --stdio(direct), relays JSON-RPC messages
Credits
AgentArc is a fork of Copilot Uplink by Matt Kotsenas. The original project provided the core bridge server, ACP protocol handling, and PWA client. This fork extends it with multi-agent management, an Android companion app, persistent sessions, mobile-first UI, and per-agent model configuration.
License
MIT — see LICENSE. The entire project (source, npm package, and Android app) is released under the MIT License.
