Multi-agent GUI client for AI coding agents with real-time streaming, WebSocket sync, and SQLite persistence.
| Agent | Protocol | Auto-installable |
|---|---|---|
| Claude Code | CLI | - |
| OpenCode | ACP | opencode-ai |
| Gemini CLI | ACP | @google/gemini-cli |
| Kilo Code | ACP | @kilocode/cli |
| Goose | ACP | - |
| OpenHands | ACP | - |
| Augment Code | ACP | - |
| Cline | ACP | - |
| Kimi CLI | ACP | - |
| Qwen Code | ACP | - |
| Codex CLI | ACP | - |
| Mistral Vibe | ACP | - |
| Kiro CLI | ACP | - |
| fast-agent | ACP | - |
Modern AI coding requires juggling multiple agents, each in their own terminal. AgentGUI solves this by providing a unified interface where you can:
- Compare agents side-by-side - Test the same prompt across Claude Code, Gemini CLI, OpenCode, and others
- Preserve context - Every conversation, file change, and terminal output is automatically saved
- Resume interrupted work - Pick up exactly where you left off, even after system restarts
- Work visually - See streaming responses, file changes, and tool calls in real-time instead of raw JSON
- π€ Multi-Agent Support - 14 agents: Claude Code, Gemini CLI, OpenCode, Kilo, Goose, OpenHands, Augment, Cline, Kimi, Qwen, Codex, Mistral Vibe, Kiro, fast-agent
- β‘ Real-Time Streaming - Watch agents work with live streaming output and tool calls via WebSocket
- πΎ Session Persistence - Full conversation history stored in SQLite with WAL mode
- π WebSocket Sync - Live updates across multiple clients with automatic reconnection
- π€ Voice Integration - Speech-to-text and text-to-speech powered by Hugging Face Transformers (no API keys)
- π οΈ Tool Management - Install and update agent plugins directly from the UI
- π File Browser - Drag-and-drop uploads, direct file editing, and context-aware operations
- π Developer Friendly - Hot reload, REST API, WebSocket endpoints, and extensible plugin system
| Main Interface | Chat View |
|---|---|
![]() |
![]() |
| Files Browser | Terminal View |
|---|---|
![]() |
![]() |
| Tools Management | Conversation |
|---|---|
![]() |
![]() |
npx agentguigit clone https://github.com/AnEntrypoint/agentgui.git
cd agentgui
npm install
npm run devServer starts on http://localhost:3000/gm/
- Node.js 18+ (LTS recommended)
- SQLite 3
- Modern browser (Chrome, Firefox, Safari, Edge)
- At least one supported AI coding agent installed (see table above)
- Optional: Python 3.9+ for text-to-speech on Windows
server.js HTTP server + WebSocket + all API routes
database.js SQLite setup (WAL mode), schema, query functions
lib/claude-runner.js Agent framework - spawns CLI processes, parses stream-json output
lib/acp-manager.js ACP tool lifecycle - auto-starts HTTP servers, restart on crash
lib/speech.js Speech-to-text and text-to-speech via @huggingface/transformers
static/index.html Main HTML shell
static/app.js App initialization
static/js/client.js Main client logic
static/js/conversations.js Conversation management
static/js/streaming-renderer.js Renders Claude streaming events as HTML
static/js/websocket-manager.js WebSocket connection handling
- Agent discovery scans PATH for known CLI binaries at startup
- Database lives at
~/.gmgui/data.db(WAL mode for concurrent access) - WebSocket endpoint at
/gm/syncfor real-time updates - ACP tools (OpenCode, Kilo) auto-launch as HTTP servers on startup with health checks
Multi-Agent Comparison: Run the same task through different agents to compare approaches, quality, and speed.
Long-Running Projects: Build complex features across multiple sessions without losing context or conversation history.
Team Collaboration: Share conversation URLs and working directories for pair programming with AI agents.
Agent Development: Test and debug custom agents with full visibility into streaming events and tool calls.
Offline Speech: Use local speech-to-text and text-to-speech without API costs or internet dependency.
All routes prefixed with /gm:
Conversations:
GET /api/conversations- List conversationsPOST /api/conversations- Create conversationGET /api/conversations/:id- Get conversation with streaming statusPOST /api/conversations/:id/messages- Send messageDELETE /api/conversations/:id- Delete conversation
Agents & Tools:
GET /api/agents- List discovered agentsGET /api/tools- List detected tools with installation statusPOST /api/tools/:id/install- Install toolPOST /api/tools/:id/update- Update tool
Speech:
POST /api/stt- Speech-to-text (raw audio input)POST /api/tts- Text-to-speech (returns audio)GET /api/speech-status- Check model download progress
WebSocket: /gm/sync - Subscribe to conversation/session updates with events like streaming_start, streaming_progress, streaming_complete
PORT- Server port (default: 3000)BASE_URL- URL prefix (default: /gm)STARTUP_CWD- Working directory passed to agentsHOT_RELOAD- Enable watch mode (default: true)
- Check if port 3000 is in use:
lsof -i :3000(macOS/Linux) ornetstat -ano | findstr :3000(Windows) - Try a different port:
PORT=4000 npm run dev
- Verify agent is installed:
which claude/where claude - Check PATH includes agent binary location
- Restart server after installing new agents
- Verify BASE_URL matches your deployment
- Check browser console for errors
- Ensure no firewall blocking WebSocket connections
- Check internet connection and firewall
- Verify
~/.gmgui/models/is writable - Monitor progress via
/api/speech-statusendpoint
npm run dev # Start with watch mode and hot reload
npm start # Production mode (no watch)
npm test # Run tests (if available)Hot reload is enabled by default. File changes trigger automatic restart without losing state.
Contributions welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- GitHub: https://github.com/AnEntrypoint/agentgui
- npm: https://www.npmjs.com/package/agentgui
- Documentation: https://anentrypoint.github.io/agentgui/
- Issues: https://github.com/AnEntrypoint/agentgui/issues
MIT Β© AnEntrypoint





