GUI Application
The Core GUI (cmd/core-gui) is a Wails v3 desktop application that demonstrates the Core framework capabilities with integrated MCP support.
Features
- Angular frontend with Wails bindings
- MCP HTTP server for AI tool integration
- WebView automation capabilities
- Real-time WebSocket communication
- System tray support
- Multi-window management
Architecture
┌─────────────────────────────────────────┐
│ Angular Frontend │
│ (TypeScript + Wails Bindings) │
└─────────────────┬───────────────────────┘
│ IPC
┌─────────────────┴───────────────────────┐
│ Wails Runtime │
│ (Window, Events, Bindings) │
└─────────────────┬───────────────────────┘
│
┌─────────────────┴───────────────────────┐
│ MCP Bridge │
│ ┌─────────┬──────────┬─────────────┐ │
│ │ Display │ WebView │ WebSocket │ │
│ │ Service │ Service │ Hub │ │
│ └─────────┴──────────┴─────────────┘ │
└─────────────────────────────────────────┘
Running the GUI
Development Mode
Production Build
Directory Structure
cmd/core-gui/
├── main.go # Application entry point
├── mcp_bridge.go # MCP HTTP server and tool handler
├── claude_bridge.go # Claude MCP client (optional)
├── frontend/ # Angular application
│ ├── src/
│ │ ├── app/ # Angular components
│ │ └── lib/ # Shared utilities
│ └── bindings/ # Generated Wails bindings
└── public/ # Static assets
Services Integrated
The GUI integrates several Core services:
| Service | Purpose |
|---|---|
| Display | Window management, dialogs, tray |
| WebView | JavaScript execution, DOM interaction |
| MCP | AI tool protocol server |
| WebSocket | Real-time communication |
Configuration
The application uses the Config service for settings:
Frontend Bindings
Wails generates TypeScript bindings for Go services:
import { CreateWindow, ShowNotification } from '@bindings/display/service';
import { Translate, SetLanguage } from '@bindings/i18n/service';
// Create a new window
await CreateWindow({
name: "settings",
title: "Settings",
width: 800,
height: 600
});
// Show notification
await ShowNotification({
title: "Success",
message: "Operation completed!"
});
WebSocket Communication
Connect to the WebSocket endpoint for real-time updates:
const ws = new WebSocket('ws://localhost:9877/ws');
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log('Received:', data);
};
ws.send(JSON.stringify({
type: 'ping',
data: {}
}));
System Tray
The application includes system tray support:
// Set tray menu
display.SetTrayMenu([]display.TrayMenuItem{
{Label: "Open", ActionID: "open"},
{Label: "Settings", ActionID: "settings"},
{IsSeparator: true},
{Label: "Quit", ActionID: "quit"},
})
Building for Distribution
macOS
Windows
Linux
Environment Variables
| Variable | Description |
|---|---|
MCP_PORT |
MCP server port (default: 9877) |
DEBUG |
Enable debug logging |