πŸ”₯ Agmente

Every AI coding agent. Every protocol. One app.
Copilot CLI. Gemini. Claude Code. Codex. Qwen. Vibe.
All from your phone.

Swift Kotlin React Native App Store License
πŸ“± App Store (iOS) πŸ€– Download APK ⭐ GitHub
Agmente app preview

πŸš€ Features

πŸ”Œ

Multi-Agent Support

Connect to Copilot CLI, Gemini CLI, Claude Code, OpenAI Codex, Qwen, Mistral Vibe β€” any ACP or Codex-compatible agent.

🧠

Protocol Auto-Detection

Automatically detects ACP vs Codex protocol after initialize. Zero configuration needed.

πŸ”§

Tool Call Visibility

See every file read, write, and terminal command your agent executes. Full transparency.

πŸ“‚

File Changes & Diffs

Inline diffs for every file the agent modifies. Review changes before they land.

πŸ“‹

Plan Mode

Review Codex plans before execution. Approve, reject, or iterate on the agent's approach.

πŸ’Ύ

Session Persistence

Resume conversations across app restarts. Local + server-side session storage.

πŸ”

Remote Access

Cloudflare Tunnel + Access tokens for secure wss:// connections to remote agents.

πŸ—οΈ

Three Platforms

iOS (SwiftUI), Android (Compose), React Native β€” the same experience everywhere.

⚑

Skills & Permissions

Select agent skills, toggle YOLO / Auto Edit / Plan / Default execution modes.

πŸ”Œ Supported Agents

AgentProtocolCommand
🟒 GitHub Copilot CLIACPcopilot --acp
πŸ”΅ Google Gemini CLIACPnpx @google/gemini-cli --experimental-acp
🟣 Claude CodeACPnpx @zed-industries/claude-code-acp
⚫ OpenAI CodexCodexcodex app-server --listen ws://...
🟠 QwenACPqwen --experimental-acp
πŸ”΄ Mistral VibeACPvibe-acp

πŸ“± Screenshots

Android session list
πŸ“‹ Session List β€” Connected & Initialized
Android chat view
πŸ’¬ Chat β€” Tool Calls & File Changes

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        πŸ“± Agmente App                       β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  iOS (Swift)  β”‚  β”‚Android (Kt)  β”‚  β”‚  React Native    β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚         β”‚                 β”‚                    β”‚             β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚              Protocol Auto-Detection                  β”‚  β”‚
β”‚  β”‚         (initialize β†’ check userAgent)                β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                 β”‚                  β”‚                         β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”‚
β”‚  β”‚    ACP Client       β”‚ β”‚    Codex Client            β”‚     β”‚
β”‚  β”‚  session/new        β”‚ β”‚  thread/start              β”‚     β”‚
β”‚  β”‚  session/prompt     β”‚ β”‚  turn/start                β”‚     β”‚
β”‚  β”‚  session/cancel     β”‚ β”‚  turn/interrupt            β”‚     β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚
β”‚             β”‚    WebSocket        β”‚    WebSocket             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
              β–Ό                     β–Ό
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚  ACP Agent      β”‚   β”‚  Codex Server   β”‚
    β”‚  (stdio-to-ws)  β”‚   β”‚  (app-server)   β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

⚑ Quick Start

# πŸ”“ Clone the repo
git clone https://github.com/friuns2/Agmente.git && cd Agmente

# 🍎 iOS β€” open in Xcode
open Agmente.xcodeproj

# πŸ€– Android β€” build APK
cd AgmenteAndroid && ./gradlew assembleDebug

# πŸ”Œ Start a local agent
npx -y @rebornix/stdio-to-ws --persist "npx @google/gemini-cli --experimental-acp" --port 8765

# πŸš€ Add ws://localhost:8765 in the app β†’ Connect β†’ Code from your phone!

πŸ› οΈ Tech Stack

🍎

SwiftUI

iOS native UI framework

πŸ€–

Jetpack Compose

Android native UI toolkit

βš›οΈ

React Native

Cross-platform mobile

πŸ”Œ

WebSocket

Real-time agent communication

πŸ“¦

Swift Package Manager

ACP SDK distribution

πŸ’‰

Hilt / Dagger

Android dependency injection