Cross-platform React Native client for ACP (Agent Client Protocol) coding agents. This is a complete rewrite of Agmente (originally an iOS-only SwiftUI app) using React Native + Expo to target iOS, Android, and Web.
- Connect to ACP agents (Copilot CLI, Gemini CLI, Claude Code adapters, Qwen, Mistral Vibe, and others)
- Multi-server management – Save and switch between multiple agent endpoints
- Session management – Create, list, and switch between conversations
- Rich chat transcript – View messages with tool call details, thoughts, and streaming
- Persistent storage – Servers, sessions, and messages stored via AsyncStorage
- Cross-platform – Runs on iOS, Android, and Web
src/
├── acp/ # ACP protocol client layer
│ ├── models/ # JSON-RPC & ACP type definitions
│ ├── ACPClient.ts # WebSocket client
│ ├── ACPService.ts # High-level RPC service
│ ├── ACPMethods.ts # RPC method constants
│ ├── ACPMessageBuilder.ts# Request parameter builders
│ └── SessionUpdateHandler.ts # Notification parser
├── stores/
│ └── appStore.ts # Zustand state management
├── storage/
│ └── SessionStorage.ts # AsyncStorage persistence
├── screens/
│ ├── HomeScreen.tsx # Server list + session sidebar
│ ├── SessionDetailScreen.tsx # Chat transcript + composer
│ ├── AddServerScreen.tsx # Server configuration form
│ └── SettingsScreen.tsx # Developer mode + logs
├── components/
│ ├── ChatBubble.tsx # Message bubble with segments
│ ├── ConnectionBadge.tsx # Status indicator
│ └── MessageComposer.tsx # Text input + send/cancel
├── utils/
│ └── theme.ts # Colors, spacing, fonts
└── navigation.tsx # React Navigation stack
| Swift (Original) | React Native |
|---|---|
ACPClient package |
src/acp/ |
AppViewModel + ServerViewModel |
src/stores/appStore.ts (Zustand) |
| Core Data persistence | src/storage/SessionStorage.ts (AsyncStorage) |
| SwiftUI views | src/screens/ + src/components/ |
# Install dependencies
npm install
# Start development
npx expo start
# Run on specific platform
npm run ios
npm run android
npm run web# Start agent on your machine
npx -y @rebornix/stdio-to-ws --persist --grace-period 604800 "npx @google/gemini-cli --experimental-acp" --port 8765In the app:
- Tap + to add a server
- Set scheme:
ws, host:localhost:8765 - Save → Connect → New Session → Chat!
- Start agent on remote host and expose via
wss:// - Add server with
wss://scheme and your host - Optionally add bearer token or Cloudflare Access credentials
- Expo – Build tooling and development environment
- TypeScript – Type safety throughout
- React Navigation – Native stack navigation
- Zustand – Lightweight state management
- AsyncStorage – Persistent storage
MIT