agentgui 1.0.575 → 1.0.577

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,98 @@
1
+ # AgentGUI
2
+
3
+ Multi-agent GUI client for AI coding agents (Claude Code, Gemini CLI, OpenCode, Goose, etc.) with real-time streaming, WebSocket sync, and SQLite persistence.
4
+
5
+ ![Main Interface](docs/screenshot-main.png)
6
+
7
+ ## Features
8
+
9
+ - **Real-time Agent Execution** - Watch agents work with streaming output and tool calls
10
+ - **Multi-Agent Support** - Switch between Claude Code, Gemini CLI, OpenCode, Kilo, and more
11
+ - **Session Management** - Full conversation history with SQLite persistence
12
+ - **WebSocket Sync** - Live updates across multiple clients
13
+ - **Voice Integration** - Speech-to-text and text-to-speech support
14
+ - **Tool Management** - Install and update agent plugins from the UI
15
+ - **File Browser** - Explore and manage conversation files
16
+
17
+ ### Screenshots
18
+
19
+ | Main Interface | Chat View |
20
+ |----------------|-----------|
21
+ | ![Main](docs/screenshot-main.png) | ![Chat](docs/screenshot-chat.png) |
22
+
23
+ | Files Browser | Terminal View |
24
+ |---------------|---------------|
25
+ | ![Files](docs/screenshot-files.png) | ![Terminal](docs/screenshot-terminal.png) |
26
+
27
+ | Tools Management | Conversation |
28
+ |------------------|--------------|
29
+ | ![Tools](docs/screenshot-tools-popup.png) | ![Conversation](docs/screenshot-conversation.png) |
30
+
31
+ ## Quick Start
32
+
33
+ ```bash
34
+ npm install
35
+ npm run dev
36
+ ```
37
+
38
+ Server starts on `http://localhost:3000/gm/`
39
+
40
+ ## System Requirements
41
+
42
+ - Node.js 18+
43
+ - SQLite 3
44
+ - Modern browser (Chrome, Firefox, Safari, Edge)
45
+
46
+ ## Architecture
47
+
48
+ ```
49
+ server.js HTTP server + WebSocket + all API routes
50
+ database.js SQLite setup (WAL mode), schema, query functions
51
+ lib/claude-runner.js Agent framework - spawns CLI processes, parses stream-json output
52
+ lib/acp-manager.js ACP tool lifecycle - auto-starts HTTP servers, restart on crash
53
+ lib/speech.js Speech-to-text and text-to-speech via @huggingface/transformers
54
+ static/index.html Main HTML shell
55
+ static/app.js App initialization
56
+ static/js/client.js Main client logic
57
+ static/js/conversations.js Conversation management
58
+ static/js/streaming-renderer.js Renders Claude streaming events as HTML
59
+ static/js/websocket-manager.js WebSocket connection handling
60
+ ```
61
+
62
+ ### Key Details
63
+
64
+ - Agent discovery scans PATH for known CLI binaries at startup
65
+ - Database lives at `~/.gmgui/data.db`
66
+ - WebSocket endpoint at `/gm/sync`
67
+ - ACP tools (OpenCode, Kilo) auto-launch as HTTP servers on startup
68
+
69
+ ## REST API
70
+
71
+ All routes prefixed with `/gm`:
72
+
73
+ - `GET /api/conversations` - List conversations
74
+ - `POST /api/conversations` - Create conversation
75
+ - `GET /api/conversations/:id` - Get conversation with streaming status
76
+ - `POST /api/conversations/:id/messages` - Send message
77
+ - `GET /api/agents` - List discovered agents
78
+ - `GET /api/tools` - List detected tools with installation status
79
+ - `POST /api/tools/:id/install` - Install tool
80
+ - `POST /api/stt` - Speech-to-text
81
+ - `POST /api/tts` - Text-to-speech
82
+
83
+ ## Environment Variables
84
+
85
+ - `PORT` - Server port (default: 3000)
86
+ - `BASE_URL` - URL prefix (default: /gm)
87
+ - `STARTUP_CWD` - Working directory passed to agents
88
+
89
+ ## Development
90
+
91
+ ```bash
92
+ npm run dev # Start with watch mode
93
+ npm start # Production mode
94
+ ```
95
+
96
+ ## License
97
+
98
+ MIT
package/docs/index.html CHANGED
@@ -1,104 +1,260 @@
1
1
  <!DOCTYPE html>
2
2
  <html lang="en">
3
3
  <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>AgentGUI - Multi-Agent AI Client</title>
7
- <link rel="stylesheet" href="styles.css">
8
- <link rel="icon" type="image/x-icon" href="https://github.com/AnEntrypoint/agentgui/raw/main/agentgui.ico">
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>AgentGUI - Multi-Agent GUI Client</title>
7
+ <style>
8
+ * { margin: 0; padding: 0; box-sizing: border-box; }
9
+
10
+ body {
11
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
12
+ line-height: 1.6;
13
+ color: #333;
14
+ background: #f9fafb;
15
+ }
16
+
17
+ .hero {
18
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
19
+ color: white;
20
+ padding: 4rem 2rem;
21
+ text-align: center;
22
+ }
23
+
24
+ .hero h1 {
25
+ font-size: 3rem;
26
+ margin-bottom: 1rem;
27
+ font-weight: 700;
28
+ }
29
+
30
+ .hero p {
31
+ font-size: 1.25rem;
32
+ opacity: 0.9;
33
+ max-width: 600px;
34
+ margin: 0 auto 2rem;
35
+ }
36
+
37
+ .cta-button {
38
+ display: inline-block;
39
+ background: white;
40
+ color: #667eea;
41
+ padding: 1rem 2rem;
42
+ border-radius: 8px;
43
+ text-decoration: none;
44
+ font-weight: 600;
45
+ transition: transform 0.2s;
46
+ }
47
+
48
+ .cta-button:hover {
49
+ transform: translateY(-2px);
50
+ }
51
+
52
+ .container {
53
+ max-width: 1200px;
54
+ margin: 0 auto;
55
+ padding: 3rem 2rem;
56
+ }
57
+
58
+ .section-title {
59
+ font-size: 2rem;
60
+ text-align: center;
61
+ margin-bottom: 2rem;
62
+ color: #1f2937;
63
+ }
64
+
65
+ .features-grid {
66
+ display: grid;
67
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
68
+ gap: 2rem;
69
+ margin-bottom: 3rem;
70
+ }
71
+
72
+ .feature-card {
73
+ background: white;
74
+ padding: 2rem;
75
+ border-radius: 12px;
76
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.07);
77
+ transition: transform 0.2s;
78
+ }
79
+
80
+ .feature-card:hover {
81
+ transform: translateY(-4px);
82
+ }
83
+
84
+ .feature-icon {
85
+ font-size: 2.5rem;
86
+ margin-bottom: 1rem;
87
+ }
88
+
89
+ .feature-card h3 {
90
+ font-size: 1.25rem;
91
+ margin-bottom: 0.75rem;
92
+ color: #667eea;
93
+ }
94
+
95
+ .screenshots {
96
+ display: grid;
97
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
98
+ gap: 1.5rem;
99
+ margin: 2rem 0;
100
+ }
101
+
102
+ .screenshot-card {
103
+ background: white;
104
+ border-radius: 8px;
105
+ overflow: hidden;
106
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
107
+ }
108
+
109
+ .screenshot-card img {
110
+ width: 100%;
111
+ display: block;
112
+ }
113
+
114
+ .screenshot-card p {
115
+ padding: 1rem;
116
+ text-align: center;
117
+ font-weight: 600;
118
+ color: #667eea;
119
+ }
120
+
121
+ .code-block {
122
+ background: #1f2937;
123
+ color: #f9fafb;
124
+ padding: 1.5rem;
125
+ border-radius: 8px;
126
+ overflow-x: auto;
127
+ margin: 1.5rem 0;
128
+ }
129
+
130
+ .code-block code {
131
+ font-family: 'Monaco', 'Menlo', monospace;
132
+ font-size: 0.9rem;
133
+ }
134
+
135
+ footer {
136
+ background: #1f2937;
137
+ color: white;
138
+ text-align: center;
139
+ padding: 2rem;
140
+ margin-top: 4rem;
141
+ }
142
+
143
+ @media (max-width: 768px) {
144
+ .hero h1 { font-size: 2rem; }
145
+ .hero p { font-size: 1rem; }
146
+ .features-grid { grid-template-columns: 1fr; }
147
+ .screenshots { grid-template-columns: 1fr; }
148
+ }
149
+ </style>
9
150
  </head>
10
151
  <body>
11
- <div class="container">
12
- <header>
13
- <div class="logo">
14
- <svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
15
- <rect width="64" height="64" rx="12" fill="url(#gradient)"/>
16
- <path d="M32 16L44 32L32 48L20 32L32 16Z" stroke="white" stroke-width="3" fill="none"/>
17
- <circle cx="32" cy="32" r="8" fill="white"/>
18
- <defs>
19
- <linearGradient id="gradient" x1="0" y1="0" x2="64" y2="64">
20
- <stop offset="0%" stop-color="#6366f1"/>
21
- <stop offset="100%" stop-color="#8b5cf6"/>
22
- </linearGradient>
23
- </defs>
24
- </svg>
25
- </div>
26
- <h1>AgentGUI</h1>
27
- <p class="subtitle">Multi-agent ACP client with real-time communication</p>
28
- <div class="stats">
29
- <div class="stat-item">
30
- <span class="stat-value" id="weekly-downloads">Loading...</span>
31
- <span class="stat-label">Weekly Downloads</span>
32
- </div>
33
- </div>
34
- <div class="cta-buttons">
35
- <a href="https://github.com/AnEntrypoint/agentgui" target="_blank" class="btn btn-primary" id="star-btn">
36
- <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
37
- <path d="M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z"/>
38
- </svg>
39
- Star on GitHub
40
- </a>
41
- <a href="https://github.com/AnEntrypoint/agentgui#readme" target="_blank" class="btn btn-secondary">
42
- View Documentation
43
- </a>
44
- </div>
45
- </header>
152
+ <div class="hero">
153
+ <h1>AgentGUI</h1>
154
+ <p>Multi-agent GUI client for AI coding agents with real-time streaming, WebSocket sync, and SQLite persistence</p>
155
+ <a href="https://github.com/AnEntrypoint/agentgui" class="cta-button">View on GitHub</a>
156
+ </div>
46
157
 
47
- <section class="features">
48
- <h2>Features</h2>
49
- <div class="feature-grid">
50
- <div class="feature-card">
51
- <div class="feature-icon">⚡</div>
52
- <h3>Real-Time Streaming</h3>
53
- <p>Live WebSocket sync with instant updates across multiple agents</p>
54
- </div>
55
- <div class="feature-card">
56
- <div class="feature-icon">🤖</div>
57
- <h3>Multi-Agent Support</h3>
58
- <p>Use Claude Code, Gemini CLI, OpenCode, Goose, and more</p>
59
- </div>
60
- <div class="feature-card">
61
- <div class="feature-icon">💾</div>
62
- <h3>SQLite Persistence</h3>
63
- <p>All conversations and events safely stored locally</p>
64
- </div>
65
- <div class="feature-card">
66
- <div class="feature-icon">🎤</div>
67
- <h3>Voice Integration</h3>
68
- <p>Speech-to-text and text-to-speech with HuggingFace</p>
69
- </div>
70
- <div class="feature-card">
71
- <div class="feature-icon">🔧</div>
72
- <h3>Portable Executable</h3>
73
- <p>Windows build with bundled models, no installation needed</p>
74
- </div>
75
- <div class="feature-card">
76
- <div class="feature-icon">🌐</div>
77
- <h3>Web Interface</h3>
78
- <p>Modern browser-based UI accessible from any device</p>
79
- </div>
80
- </div>
81
- </section>
158
+ <div class="container">
159
+ <h2 class="section-title">Features</h2>
160
+ <div class="features-grid">
161
+ <div class="feature-card">
162
+ <div class="feature-icon">⚡</div>
163
+ <h3>Real-time Streaming</h3>
164
+ <p>Watch agents work with live output, tool calls, and file operations in real-time.</p>
165
+ </div>
166
+
167
+ <div class="feature-card">
168
+ <div class="feature-icon">🤖</div>
169
+ <h3>Multi-Agent Support</h3>
170
+ <p>Switch between Claude Code, Gemini CLI, OpenCode, Kilo, and more from one interface.</p>
171
+ </div>
172
+
173
+ <div class="feature-card">
174
+ <div class="feature-icon">💾</div>
175
+ <h3>Session Persistence</h3>
176
+ <p>Full conversation history with SQLite database and session management.</p>
177
+ </div>
178
+
179
+ <div class="feature-card">
180
+ <div class="feature-icon">🔄</div>
181
+ <h3>WebSocket Sync</h3>
182
+ <p>Live updates across multiple clients with automatic reconnection.</p>
183
+ </div>
184
+
185
+ <div class="feature-card">
186
+ <div class="feature-icon">🎤</div>
187
+ <h3>Voice Integration</h3>
188
+ <p>Speech-to-text and text-to-speech support powered by Transformers.js.</p>
189
+ </div>
190
+
191
+ <div class="feature-card">
192
+ <div class="feature-icon">🛠️</div>
193
+ <h3>Tool Management</h3>
194
+ <p>Install and update agent plugins directly from the UI.</p>
195
+ </div>
196
+ </div>
197
+
198
+ <h2 class="section-title">Screenshots</h2>
199
+ <div class="screenshots">
200
+ <div class="screenshot-card">
201
+ <img src="docs/screenshot-main.png" alt="Main Interface">
202
+ <p>Main Interface</p>
203
+ </div>
204
+ <div class="screenshot-card">
205
+ <img src="docs/screenshot-chat.png" alt="Chat View">
206
+ <p>Chat View</p>
207
+ </div>
208
+ <div class="screenshot-card">
209
+ <img src="docs/screenshot-files.png" alt="Files Browser">
210
+ <p>Files Browser</p>
211
+ </div>
212
+ <div class="screenshot-card">
213
+ <img src="docs/screenshot-terminal.png" alt="Terminal View">
214
+ <p>Terminal View</p>
215
+ </div>
216
+ <div class="screenshot-card">
217
+ <img src="docs/screenshot-tools-popup.png" alt="Tools Management">
218
+ <p>Tools Management</p>
219
+ </div>
220
+ <div class="screenshot-card">
221
+ <img src="docs/screenshot-conversation.png" alt="Conversation">
222
+ <p>Conversation</p>
223
+ </div>
224
+ </div>
225
+
226
+ <h2 class="section-title">Quick Start</h2>
227
+ <div class="code-block">
228
+ <code>npm install
229
+ npm run dev
82
230
 
83
- <section class="quick-start">
84
- <h2>Quick Start</h2>
85
- <div class="code-block">
86
- <code>npm install -g agentgui</code>
87
- <button class="copy-btn" onclick="copyCode(this)">Copy</button>
88
- </div>
89
- <p class="note">Then run <code>agentgui</code> and open <a href="http://localhost:3000/gm/">http://localhost:3000/gm/</a></p>
90
- </section>
231
+ # Server starts on http://localhost:3000/gm/</code>
232
+ </div>
233
+
234
+ <h2 class="section-title">System Requirements</h2>
235
+ <div class="feature-card" style="max-width: 600px; margin: 0 auto;">
236
+ <ul style="list-style-position: inside;">
237
+ <li>Node.js 18+</li>
238
+ <li>SQLite 3</li>
239
+ <li>Modern browser (Chrome, Firefox, Safari, Edge)</li>
240
+ </ul>
241
+ </div>
91
242
 
92
- <footer>
93
- <p>Built with ❤️ by the AgentGUI team</p>
94
- <p class="footer-links">
95
- <a href="https://github.com/AnEntrypoint/agentgui">GitHub</a>
96
- <a href="https://github.com/AnEntrypoint/agentgui/issues">Issues</a>
97
- <a href="https://github.com/AnEntrypoint/agentgui#readme">Docs</a>
98
- </p>
99
- </footer>
243
+ <h2 class="section-title">Architecture</h2>
244
+ <div class="code-block">
245
+ <code>server.js HTTP server + WebSocket + API routes
246
+ database.js SQLite (WAL mode), schema, queries
247
+ lib/claude-runner.js Agent framework - CLI process spawner
248
+ lib/acp-manager.js ACP tool lifecycle management
249
+ lib/speech.js STT/TTS via @huggingface/transformers
250
+ static/js/client.js Main client logic
251
+ static/js/streaming-renderer.js Event rendering</code>
100
252
  </div>
253
+ </div>
101
254
 
102
- <script src="script.js"></script>
255
+ <footer>
256
+ <p>&copy; 2024 AgentGUI. MIT License.</p>
257
+ <p><a href="https://github.com/AnEntrypoint/agentgui" style="color: #667eea;">GitHub</a></p>
258
+ </footer>
103
259
  </body>
104
- </html>
260
+ </html>
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/index.html ADDED
@@ -0,0 +1,250 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <meta name="description" content="AgentGUI - Multi-agent GUI client for AI coding agents with real-time streaming">
7
+ <title>AgentGUI - Multi-Agent AI Coding Platform</title>
8
+ <style>
9
+ * { margin: 0; padding: 0; box-sizing: border-box; }
10
+ body {
11
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
12
+ line-height: 1.6;
13
+ color: #333;
14
+ background: #f5f5f5;
15
+ }
16
+ .hero {
17
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
18
+ color: white;
19
+ padding: 80px 20px;
20
+ text-align: center;
21
+ }
22
+ .hero h1 {
23
+ font-size: 3rem;
24
+ margin-bottom: 20px;
25
+ font-weight: 700;
26
+ }
27
+ .hero p {
28
+ font-size: 1.25rem;
29
+ margin-bottom: 30px;
30
+ opacity: 0.95;
31
+ }
32
+ .cta-button {
33
+ display: inline-block;
34
+ padding: 15px 40px;
35
+ background: white;
36
+ color: #667eea;
37
+ text-decoration: none;
38
+ border-radius: 8px;
39
+ font-weight: 600;
40
+ font-size: 1.1rem;
41
+ transition: transform 0.2s;
42
+ }
43
+ .cta-button:hover {
44
+ transform: translateY(-2px);
45
+ box-shadow: 0 10px 20px rgba(0,0,0,0.2);
46
+ }
47
+ .container {
48
+ max-width: 1200px;
49
+ margin: 0 auto;
50
+ padding: 60px 20px;
51
+ }
52
+ .features {
53
+ display: grid;
54
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
55
+ gap: 30px;
56
+ margin: 60px 0;
57
+ }
58
+ .feature-card {
59
+ background: white;
60
+ padding: 30px;
61
+ border-radius: 12px;
62
+ box-shadow: 0 2px 10px rgba(0,0,0,0.1);
63
+ transition: transform 0.2s;
64
+ }
65
+ .feature-card:hover {
66
+ transform: translateY(-5px);
67
+ box-shadow: 0 5px 20px rgba(0,0,0,0.15);
68
+ }
69
+ .feature-icon {
70
+ font-size: 2.5rem;
71
+ margin-bottom: 15px;
72
+ }
73
+ .feature-card h3 {
74
+ color: #667eea;
75
+ margin-bottom: 10px;
76
+ font-size: 1.5rem;
77
+ }
78
+ .screenshots {
79
+ background: white;
80
+ padding: 60px 20px;
81
+ margin: 40px 0;
82
+ }
83
+ .screenshot-grid {
84
+ display: grid;
85
+ grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
86
+ gap: 30px;
87
+ max-width: 1200px;
88
+ margin: 0 auto;
89
+ }
90
+ .screenshot-card {
91
+ border-radius: 8px;
92
+ overflow: hidden;
93
+ box-shadow: 0 4px 15px rgba(0,0,0,0.1);
94
+ }
95
+ .screenshot-card img {
96
+ width: 100%;
97
+ display: block;
98
+ }
99
+ .screenshot-caption {
100
+ padding: 15px;
101
+ background: #f9f9f9;
102
+ text-align: center;
103
+ font-weight: 600;
104
+ color: #555;
105
+ }
106
+ .code-block {
107
+ background: #2d2d2d;
108
+ color: #f8f8f2;
109
+ padding: 20px;
110
+ border-radius: 8px;
111
+ font-family: 'Courier New', monospace;
112
+ margin: 20px 0;
113
+ overflow-x: auto;
114
+ }
115
+ .section-title {
116
+ text-align: center;
117
+ font-size: 2.5rem;
118
+ color: #333;
119
+ margin-bottom: 40px;
120
+ }
121
+ footer {
122
+ background: #2d2d2d;
123
+ color: white;
124
+ text-align: center;
125
+ padding: 40px 20px;
126
+ margin-top: 60px;
127
+ }
128
+ footer a {
129
+ color: #667eea;
130
+ text-decoration: none;
131
+ }
132
+ footer a:hover {
133
+ text-decoration: underline;
134
+ }
135
+ @media (max-width: 768px) {
136
+ .hero h1 { font-size: 2rem; }
137
+ .hero p { font-size: 1rem; }
138
+ .screenshot-grid { grid-template-columns: 1fr; }
139
+ }
140
+ </style>
141
+ </head>
142
+ <body>
143
+ <div class="hero">
144
+ <h1>🤖 AgentGUI</h1>
145
+ <p>Multi-agent GUI client for AI coding agents with real-time streaming</p>
146
+ <a href="#quickstart" class="cta-button">Get Started</a>
147
+ </div>
148
+
149
+ <div class="container">
150
+ <h2 class="section-title">✨ Features</h2>
151
+ <div class="features">
152
+ <div class="feature-card">
153
+ <div class="feature-icon">🤖</div>
154
+ <h3>Multi-Agent Support</h3>
155
+ <p>Works with Claude Code, Gemini CLI, OpenCode, Goose, Kilo, Codex, and more. Auto-discovers installed tools.</p>
156
+ </div>
157
+ <div class="feature-card">
158
+ <div class="feature-icon">📡</div>
159
+ <h3>Real-Time Streaming</h3>
160
+ <p>Live execution visualization with WebSocket sync. Watch your AI agents work in real-time.</p>
161
+ </div>
162
+ <div class="feature-card">
163
+ <div class="feature-icon">💾</div>
164
+ <h3>Persistent Storage</h3>
165
+ <p>SQLite-based conversation and session history. Never lose your work or chat history.</p>
166
+ </div>
167
+ <div class="feature-card">
168
+ <div class="feature-icon">🎤</div>
169
+ <h3>Voice I/O</h3>
170
+ <p>Built-in speech-to-text and text-to-speech powered by HuggingFace transformers.</p>
171
+ </div>
172
+ <div class="feature-card">
173
+ <div class="feature-icon">📁</div>
174
+ <h3>File Browser</h3>
175
+ <p>Integrated file system explorer with drag-drop upload and syntax highlighting.</p>
176
+ </div>
177
+ <div class="feature-card">
178
+ <div class="feature-icon">🔧</div>
179
+ <h3>Tool Manager</h3>
180
+ <p>Install and update agent plugins directly from the UI. One-click setup.</p>
181
+ </div>
182
+ </div>
183
+ </div>
184
+
185
+ <div class="screenshots">
186
+ <h2 class="section-title">📸 Screenshots</h2>
187
+ <div class="screenshot-grid">
188
+ <div class="screenshot-card">
189
+ <img src="docs/screenshot-main.png" alt="Main Interface" loading="lazy">
190
+ <div class="screenshot-caption">Main Interface</div>
191
+ </div>
192
+ <div class="screenshot-card">
193
+ <img src="docs/screenshot-chat.png" alt="Chat View" loading="lazy">
194
+ <div class="screenshot-caption">Chat & Conversation View</div>
195
+ </div>
196
+ <div class="screenshot-card">
197
+ <img src="docs/screenshot-files.png" alt="Files Browser" loading="lazy">
198
+ <div class="screenshot-caption">File System Browser</div>
199
+ </div>
200
+ <div class="screenshot-card">
201
+ <img src="docs/screenshot-terminal.png" alt="Terminal" loading="lazy">
202
+ <div class="screenshot-caption">Terminal & Execution Output</div>
203
+ </div>
204
+ </div>
205
+ </div>
206
+
207
+ <div class="container" id="quickstart">
208
+ <h2 class="section-title">🚀 Quick Start</h2>
209
+ <div class="code-block">
210
+ # Install globally<br>
211
+ npm install -g agentgui<br>
212
+ <br>
213
+ # Run the server<br>
214
+ agentgui<br>
215
+ <br>
216
+ # Or use npx<br>
217
+ npx agentgui
218
+ </div>
219
+ <p style="text-align: center; margin-top: 20px; font-size: 1.1rem;">
220
+ Server starts on <strong>http://localhost:3000</strong> and redirects to <strong>/gm/</strong>
221
+ </p>
222
+ </div>
223
+
224
+ <div class="container">
225
+ <h2 class="section-title">🏗️ Architecture</h2>
226
+ <div class="features">
227
+ <div class="feature-card">
228
+ <h3>Agent Framework</h3>
229
+ <p>Spawns CLI processes, parses stream-json output, manages lifecycle</p>
230
+ </div>
231
+ <div class="feature-card">
232
+ <h3>SQLite Storage</h3>
233
+ <p>WAL mode, schema with conversations, messages, events, sessions</p>
234
+ </div>
235
+ <div class="feature-card">
236
+ <h3>WebSocket Sync</h3>
237
+ <p>Real-time bi-directional sync with subscribe/unsubscribe pattern</p>
238
+ </div>
239
+ <div class="feature-card">
240
+ <h3>ACP Protocol</h3>
241
+ <p>Auto-starts OpenCode/Kilo HTTP servers, health checks, crash recovery</p>
242
+ </div>
243
+ </div>
244
+ </div>
245
+
246
+ <footer>
247
+ <p>&copy; 2024 AgentGUI | <a href="https://github.com/AnEntrypoint/agentgui">GitHub</a> | <a href="https://www.npmjs.com/package/agentgui">npm</a> | MIT License</p>
248
+ </footer>
249
+ </body>
250
+ </html>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentgui",
3
- "version": "1.0.575",
3
+ "version": "1.0.577",
4
4
  "description": "Multi-agent ACP client with real-time communication",
5
5
  "type": "module",
6
6
  "main": "server.js",
package/readme.md CHANGED
@@ -1,92 +1,297 @@
1
1
  # AgentGUI
2
2
 
3
- [![GitHub Pages](https://img.shields.io/badge/GitHub_Pages-Enabled-blue?logo=github)](https://anentrypoint.github.io/agentgui/)
3
+ <div align="center">
4
+
5
+ ![AgentGUI Main Interface](docs/screenshot-main.png)
6
+
7
+ **Multi-agent GUI for AI coding assistants**
8
+
9
+ [![GitHub Pages](https://img.shields.io/badge/GitHub_Pages-Live-blue?logo=github)](https://anentrypoint.github.io/agentgui/)
10
+ [![npm](https://img.shields.io/npm/v/agentgui?color=brightgreen)](https://www.npmjs.com/package/agentgui)
4
11
  [![Weekly Downloads](https://img.shields.io/npm/dw/agentgui?color=brightgreen)](https://www.npmjs.com/package/agentgui)
12
+ [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
13
+
14
+ [Quick Start](#quick-start) • [Features](#features) • [Screenshots](#screenshots) • [Architecture](#architecture) • [Documentation](https://anentrypoint.github.io/agentgui/)
15
+
16
+ </div>
17
+
18
+ ---
19
+
20
+ ## Overview
21
+
22
+ AgentGUI provides a unified web interface for AI coding agents. Connect to any CLI-based agent (Claude Code, Gemini CLI, OpenCode, Goose, Kilo, Codex, and more) and interact through a real-time streaming interface with SQLite persistence, file management, and speech capabilities.
23
+
24
+ ## Quick Start
25
+
26
+ ### One-Line Install
27
+
28
+ ```bash
29
+ npx agentgui
30
+ ```
31
+
32
+ The server starts at `http://localhost:3000/gm/`
33
+
34
+ ### Manual Installation
35
+
36
+ ```bash
37
+ git clone https://github.com/AnEntrypoint/agentgui.git
38
+ cd agentgui
39
+ npm install
40
+ npm run dev
41
+ ```
42
+
43
+ ### System Requirements
44
+
45
+ - **Node.js** 18+ (LTS recommended)
46
+ - **npm** or **bun**
47
+ - **AI Coding Agents**: Claude Code, Gemini CLI, OpenCode, Goose, Kilo, or Codex
48
+ - **Optional**: Python 3.9+ for text-to-speech on Windows
49
+
50
+ ## Features
51
+
52
+ ### 🤖 Multi-Agent Support
53
+ Auto-discovers and connects to all installed AI coding agents:
54
+ - Claude Code (`@anthropic-ai/claude-code`)
55
+ - Gemini CLI (`@google/gemini-cli`)
56
+ - OpenCode (`opencode-ai`)
57
+ - Goose (`goose-ai`)
58
+ - Kilo (`@kilocode/cli`)
59
+ - Codex and other CLI-based agents
60
+
61
+ ### ⚡ Real-Time Streaming
62
+ - WebSocket-based streaming for instant agent responses
63
+ - Live execution visualization with syntax highlighting
64
+ - Progress indicators for long-running operations
65
+ - Concurrent agent sessions
66
+
67
+ ### 💾 Persistent Storage
68
+ - SQLite database (`~/.gmgui/data.db`) in WAL mode
69
+ - Conversation history with full context
70
+ - Session management and resumption
71
+ - Message threading and organization
72
+
73
+ ### 📁 File Management
74
+ - Integrated file browser for agent working directories
75
+ - Drag-and-drop file uploads
76
+ - Direct file editing and viewing
77
+ - Context-aware file operations
78
+
79
+ ### 🎤 Speech Capabilities
80
+ - Speech-to-text via Hugging Face Whisper
81
+ - Text-to-speech with multiple voice options
82
+ - Automatic model downloading (~470MB)
83
+ - No API keys required
84
+
85
+ ### 🔧 Developer Experience
86
+ - Hot reload during development
87
+ - Extensible agent framework
88
+ - REST API + WebSocket endpoints
89
+ - Plugin system for custom agents
90
+
91
+ ## Screenshots
92
+
93
+ ### Main Interface
94
+ ![Main Interface](docs/screenshot-main.png)
95
+
96
+ ### Chat & Conversation Views
97
+ ![Chat View](docs/screenshot-chat.png)
98
+
99
+ ![Conversation History](docs/screenshot-conversation.png)
100
+
101
+ ### File Browser
102
+ ![File Browser](docs/screenshot-files.png)
103
+
104
+ ### Terminal Execution
105
+ ![Terminal View](docs/screenshot-terminal.png)
106
+
107
+ ### Tools Management
108
+ ![Tools Popup](docs/screenshot-tools-popup.png)
109
+
110
+ ## Architecture
111
+
112
+ ```
113
+ ┌─────────────────────────────────────────────────────────────────┐
114
+ │ Browser Client │
115
+ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────────┐ │
116
+ │ │ UI Layer │ │ WebSocket │ │ Streaming Renderer │ │
117
+ │ │ Components │ │ Manager │ │ (Event Processor) │ │
118
+ │ └──────────────┘ └──────────────┘ └──────────────────────────┘ │
119
+ └─────────────────────────────────────────────────────────────────┘
120
+
121
+ ┌─────────▼─────────┐
122
+ │ HTTP + WS │
123
+ │ Server │
124
+ │ (server.js) │
125
+ └─────────┬─────────┘
126
+
127
+ ┌─────────────────────┼─────────────────────┐
128
+ │ │ │
129
+ ┌───────▼────────┐ ┌─────────▼─────────┐ ┌───────▼────────┐
130
+ │ SQLite DB │ │ Agent Runner │ │ Speech │
131
+ │ (database.js) │ │ (claude-runner.js)│ │ (speech.js) │
132
+ └────────────────┘ └─────────┬─────────┘ └────────────────┘
133
+
134
+ ┌─────────▼─────────┐
135
+ │ Agent CLI Tools │
136
+ │ (spawned procs) │
137
+ └───────────────────┘
138
+ ```
139
+
140
+ ### Key Components
141
+
142
+ | Component | Purpose | Location |
143
+ |-----------|---------|----------|
144
+ | **HTTP Server** | REST API, static files, routing | `server.js` |
145
+ | **Database** | SQLite persistence (WAL mode) | `database.js` |
146
+ | **Agent Runner** | CLI spawning, stream parsing | `lib/claude-runner.js` |
147
+ | **Speech Engine** | STT/TTS via transformers | `lib/speech.js` |
148
+ | **Client Core** | Main browser logic | `static/js/client.js` |
149
+ | **WebSocket Manager** | Real-time communication | `static/js/websocket-manager.js` |
150
+ | **Streaming Renderer** | Event-based UI updates | `static/js/streaming-renderer.js` |
151
+ | **CLI Entry** | `npx agentgui` handler | `bin/gmgui.cjs` |
152
+
153
+ ## Configuration
154
+
155
+ Environment variables:
156
+
157
+ | Variable | Default | Description |
158
+ |----------|---------|-------------|
159
+ | `PORT` | `3000` | Server port |
160
+ | `BASE_URL` | `/gm` | URL prefix for all routes |
161
+ | `STARTUP_CWD` | Current dir | Working directory for agents |
162
+ | `HOT_RELOAD` | `true` | Enable watch mode |
163
+
164
+ ## REST API
165
+
166
+ All routes prefixed with `BASE_URL` (default `/gm`):
167
+
168
+ ### Conversations
169
+ - `GET /api/conversations` - List all conversations
170
+ - `POST /api/conversations` - Create new conversation
171
+ - `GET /api/conversations/:id` - Get conversation details
172
+ - `DELETE /api/conversations/:id` - Delete conversation
173
+
174
+ ### Messages & Streaming
175
+ - `POST /api/conversations/:id/messages` - Send message to agent
176
+ - `POST /api/conversations/:id/stream` - Start streaming execution
177
+ - `GET /api/conversations/:id/chunks` - Get stream chunks
178
+
179
+ ### Agents & Tools
180
+ - `GET /api/agents` - List discovered agents
181
+ - `GET /api/tools` - List available tools
182
+ - `POST /api/tools/:id/install` - Install tool
183
+ - `POST /api/tools/:id/update` - Update tool
184
+
185
+ ### Speech
186
+ - `POST /api/stt` - Speech-to-text (raw audio)
187
+ - `POST /api/tts` - Text-to-speech (returns audio)
188
+ - `GET /api/speech-status` - Model download status
189
+
190
+ ### WebSocket
191
+ - Endpoint: `BASE_URL + /sync`
192
+ - Events: `streaming_start`, `streaming_progress`, `streaming_complete`, `streaming_error`
193
+ - Subscribe: `{ type: "subscribe", sessionId }` or `{ type: "subscribe", conversationId }`
194
+
195
+ ## Text-to-Speech Setup (Windows)
196
+
197
+ AgentGUI automatically configures text-to-speech on first use:
198
+
199
+ 1. Detects Python 3.9+ installation
200
+ 2. Creates virtual environment at `~/.gmgui/pocket-venv`
201
+ 3. Installs `pocket-tts` via pip
202
+ 4. Caches setup for subsequent requests
203
+
204
+ **Requirements**: Python 3.9+, ~200MB disk space, internet connection
205
+
206
+ **Troubleshooting**:
207
+ - **Python not found**: Install from [python.org](https://www.python.org) with "Add Python to PATH"
208
+ - **Setup fails**: Check write access to `~/.gmgui/`
209
+ - **Manual cleanup**: Delete `%USERPROFILE%\.gmgui\pocket-venv` and retry
210
+
211
+ ## Development
212
+
213
+ ### Running in Dev Mode
214
+
215
+ ```bash
216
+ npm run dev
217
+ ```
218
+
219
+ Server auto-reloads on file changes.
220
+
221
+ ### Project Structure
222
+
223
+ ```
224
+ agentgui/
225
+ ├── server.js # Main server (HTTP + WebSocket + API)
226
+ ├── database.js # SQLite schema and queries
227
+ ├── lib/
228
+ │ ├── claude-runner.js # Agent execution framework
229
+ │ ├── acp-manager.js # ACP tool lifecycle
230
+ │ ├── speech.js # STT/TTS processing
231
+ │ └── tool-manager.js # Tool installation/updates
232
+ ├── static/
233
+ │ ├── index.html # Main app shell
234
+ │ ├── js/
235
+ │ │ ├── client.js # Core client logic
236
+ │ │ ├── websocket-manager.js
237
+ │ │ ├── streaming-renderer.js
238
+ │ │ └── ...
239
+ │ └── templates/ # HTML event templates
240
+ └── bin/
241
+ └── gmgui.cjs # CLI entry point
242
+ ```
243
+
244
+ ### Adding Custom Agents
245
+
246
+ 1. Add agent descriptor to `lib/agent-descriptors.js`
247
+ 2. Implement CLI detection logic
248
+ 3. Configure spawn parameters
249
+ 4. Add to agent discovery scan
250
+
251
+ ## Troubleshooting
252
+
253
+ ### Server Won't Start
254
+ - Check if port 3000 is already in use: `lsof -i :3000` (macOS/Linux) or `netstat -ano | findstr :3000` (Windows)
255
+ - Try a different port: `PORT=4000 npm run dev`
256
+
257
+ ### Agent Not Detected
258
+ - Verify agent is installed globally: `which claude` / `where claude`
259
+ - Check PATH includes agent binary location
260
+ - Restart server after installing new agents
261
+
262
+ ### WebSocket Connection Fails
263
+ - Verify BASE_URL matches your deployment
264
+ - Check browser console for connection errors
265
+ - Ensure no proxy/firewall blocking WebSocket
266
+
267
+ ### Speech Models Not Downloading
268
+ - Check internet connection
269
+ - Verify `~/.gmgui/models/` is writable
270
+ - Monitor download via `/api/speech-status`
271
+
272
+ ## Contributing
273
+
274
+ Contributions welcome! Please:
275
+
276
+ 1. Fork the repository
277
+ 2. Create a feature branch (`git checkout -b feature/amazing-feature`)
278
+ 3. Commit changes (`git commit -m 'Add amazing feature'`)
279
+ 4. Push to branch (`git push origin feature/amazing-feature`)
280
+ 5. Open a Pull Request
281
+
282
+ ## License
283
+
284
+ MIT © [AnEntrypoint](https://github.com/AnEntrypoint)
285
+
286
+ ## Links
287
+
288
+ - **GitHub**: https://github.com/AnEntrypoint/agentgui
289
+ - **npm**: https://www.npmjs.com/package/agentgui
290
+ - **Documentation**: https://anentrypoint.github.io/agentgui/
291
+ - **Issues**: https://github.com/AnEntrypoint/agentgui/issues
292
+
293
+ ---
5
294
 
6
- A multi-agent GUI for AI coding assistants. Connects to CLI-based agents (Claude Code, Gemini CLI, OpenCode, Goose, and others) and provides a web interface with real-time streaming output.
7
-
8
- ## Quick Start
9
-
10
-
11
- ```bash
12
- npx agentgui
13
- ```
14
-
15
- Or install and run manually:
16
-
17
- ```bash
18
- git clone https://github.com/AnEntrypoint/agentgui.git
19
- cd agentgui
20
- npm install
21
- npm run dev
22
- ```
23
-
24
- Open `http://localhost:3000` in your browser.
25
-
26
- ## 📊 Project Stats
27
-
28
- Check out our **[GitHub Pages site](https://anentrypoint.github.io/agentgui/)** for:
29
-
30
- - 📈 Live weekly download statistics
31
- - ⭐ Star the project button
32
- - ✨ Feature highlights
33
- - 🚀 Quick start guide
34
-
35
- The site automatically updates on every push to main with the latest npm download data.
36
-
37
- ## What It Does
38
-
39
- - Auto-discovers AI coding agents installed on your system (Claude Code, Gemini CLI, OpenCode, Goose, Codex, Kiro, etc.)
40
- - Runs agents with streaming JSON output and displays results in real-time via WebSocket
41
- - Manages conversations with SQLite persistence
42
- - Supports concurrent agent sessions
43
- - Provides file browsing and upload for agent working directories
44
- - Includes speech-to-text and text-to-speech
45
-
46
- ## Architecture
47
-
48
- - `server.js` - HTTP server, REST API, WebSocket endpoint, static file serving
49
- - `database.js` - SQLite database (WAL mode) at `~/.gmgui/data.db`
50
- - `lib/claude-runner.js` - Agent runner framework, spawns CLI processes and parses streaming output
51
- - `lib/speech.js` - Speech processing via Hugging Face transformers
52
- - `static/` - Browser client with streaming renderer, WebSocket manager, and HTML templates
53
- - `bin/gmgui.cjs` - CLI entry point for `npx agentgui`
54
-
55
- ## Text-to-Speech on Windows
56
-
57
- On Windows, AgentGUI automatically sets up pocket-tts (text-to-speech) on your first TTS request. No manual setup required.
58
-
59
- ### What Happens
60
- 1. Server detects Python 3.9+ installation
61
- 2. Creates virtual environment at `~/.gmgui/pocket-venv`
62
- 3. Installs pocket-tts via pip
63
- 4. All subsequent TTS requests use cached installation
64
-
65
- ### Requirements
66
- - Python 3.9+ (check with `python --version`)
67
- - ~200 MB free disk space
68
- - Internet connection for first setup
69
-
70
- ### Troubleshooting
71
- - **Python not found**: Download from https://www.python.org and ensure "Add Python to PATH" is checked
72
- - **Setup fails**: Check that you have write access to your home directory (~/.gmgui/)
73
- - **Manual cleanup**: Delete `%USERPROFILE%\.gmgui\pocket-venv` and try again
74
-
75
- For manual setup or detailed troubleshooting, see the setup instructions in the code or check `/api/speech-status` endpoint for error details.
76
-
77
- ## Configuration
78
-
79
- | Variable | Default | Description |
80
- |----------|---------|-------------|
81
- | `PORT` | 3000 | Server port |
82
- | `BASE_URL` | /gm | URL prefix |
83
- | `HOT_RELOAD` | true | Watch mode for development |
84
-
85
- ## License
86
-
87
- MIT
88
-
89
- ## Repository
90
-
91
- https://github.com/AnEntrypoint/agentgui
92
-
295
+ <div align="center">
296
+ Made with ❤️ by the AgentGUI team
297
+ </div>