GDD (Giggly-Dazzling-Duckling)

AI-controlled browser farm — run N isolated Chromium instances with 36 MCP tools for device emulation, screenshots, network/geolocation simulation, and diagnostics. Cross-platform: Windows GUI + headed/headless on Linux/macOS.

GDD

GDD — Giggly-Dazzling-Duckling

AI-controlled browser farm on your machine
Simulate multiple real users across 22 device types — test your site like it's launch day.

Release Platforms MCP License

Claude Code Cursor


How It Works

You: Open 3 iPhones and a desktop, navigate to myapp.com, test the signup form on all devices

Claude Code creates 4 browsers with device emulation, navigates each to your app, fills in the form, takes screenshots, checks console for errors — all in parallel.

gdd_add_players(3, device="iPhone 15 Pro")    → players [1, 2, 3]
gdd_add_players(1, device="Desktop 1080p")    → player  [4]
gdd_navigate(1, "https://myapp.com")          → all 4 browsers open your app
gdd_tap(1, "#signup-btn")                     → taps signup on iPhone
gdd_screenshot(1)                             → captures the result
gdd_get_console(1, level="error")             → checks for JS errors

GDD runs N isolated Chromium instances, each with its own profile, cookies, device emulation, geolocation, and network conditions. It exposes 36 MCP tools via HTTP on localhost:9700.

GDD Video Wall — 3 devices testing simultaneously


Install

PlatformDownloadRun
Linuxgdd-linux-x64.tar.gzchmod +x GDD.Headless && ./GDD.Headless
macOS ARMgdd-macos-arm64.tar.gzbash Scripts/setup-macos.sh && ./GDD.Headless
macOS Intelgdd-macos-x64.tar.gzbash Scripts/setup-macos.sh && ./GDD.Headless
Windowsgdd-win-x64.tar.gz.\GDD.Headless.exe
Windows GUIgdd-windows-gui.tar.gzExtract, run GDD.exe (WebView2 required)

Self-contained binary, ~70 MB. No .NET installation needed. Chromium downloads automatically on first launch.

One-liner (Linux):

curl -sL https://github.com/Cap-of-tea/GDD/releases/latest/download/gdd-linux-x64.tar.gz | tar xz && chmod +x GDD.Headless && ./GDD.Headless

By default, browsers launch in headed mode (visible windows). Add --headless for CI/CD.


Connect to Your AI Client

Add to .mcp.json and restart your AI client:

{
  "mcpServers": {
    "gdd": {
      "url": "http://localhost:9700/mcp"
    }
  }
}

That's it. Start GDD, tell Claude or Cursor to test your app.

Config file locations
ClientProject configGlobal config
Claude Code<project>/.mcp.json~/.claude/.mcp.json
Cursor<project>/.cursor/mcp.json~/.cursor/mcp.json
VS Code / Windsurf / Antigravity<project>/.vscode/mcp.jsonIDE settings.json

Global and project configs are merged — servers from both are available simultaneously. Changes are picked up only when restarting the AI client session.

VS Code-based IDEs (Windsurf, Antigravity, Copilot)

VS Code-based IDEs use a different config format than Claude Code / Cursor.

Project config.vscode/mcp.json:

{
  "servers": {
    "gdd": {
      "type": "http",
      "url": "http://localhost:9700/mcp"
    }
  }
}

Global config — open via Cmd+Shift+P → "Open User Settings (JSON)":

{
  "mcp": {
    "servers": {
      "gdd": {
        "type": "http",
        "url": "http://localhost:9700/mcp"
      }
    }
  }
}

Global settings.json location: macOS — ~/Library/Application Support/<IDE>/User/settings.json, Linux — ~/.config/<IDE>/User/settings.json, Windows — %APPDATA%/<IDE>/User/settings.json. Replace <IDE> with your editor name (Code, Windsurf, Antigravity, etc.).

stdio-proxy alternative (.vscode/mcp.json):

{
  "servers": {
    "gdd": {
      "type": "stdio",
      "command": "bash",
      "args": ["/absolute/path/to/Scripts/mcp-proxy.sh"]
    }
  }
}
Permissions (Claude Code)

By default, Claude Code asks for confirmation on every MCP tool call. To allow GDD tools without prompts, add to ~/.claude/settings.json:

{
  "permissions": {
    "allow": [
      "mcp__gdd__*"
    ]
  }
}

This single wildcard covers all 36 GDD tools. Restart Claude Code after editing.

Auto-launch via stdio proxy (alternative)

Proxy scripts start GDD automatically when your AI client connects:

Windows:

{
  "mcpServers": {
    "gdd": {
      "command": "powershell",
      "args": ["-ExecutionPolicy", "Bypass", "-File", "C:/path/to/Scripts/mcp-proxy.ps1"]
    }
  }
}

Linux / macOS:

{
  "mcpServers": {
    "gdd": {
      "command": "bash",
      "args": ["/path/to/Scripts/mcp-proxy.sh"]
    }
  }
}

Add "--headless" to the args array for CI/CD.

Tip: On first launch, GDD downloads Chromium (~80 MB). If your AI client times out, run GDD manually first, then reconnect.

Autostart as service (macOS / Linux)

macOS (launchd):

bash Scripts/install-launchd.sh            # headed (default)
bash Scripts/install-launchd.sh --headless  # for CI/CD

Manage: launchctl list | grep gdd / bash Scripts/install-launchd.sh --uninstall

Linux (systemd):

mkdir -p ~/.config/systemd/user
cat > ~/.config/systemd/user/gdd.service << 'EOF'
[Unit]
Description=GDD Multi-Browser Testing Server
[Service]
ExecStart=/path/to/GDD.Headless
WorkingDirectory=/path/to/gdd-directory
Restart=on-failure
[Install]
WantedBy=default.target
EOF

systemctl --user daemon-reload
systemctl --user enable --now gdd
Direct HTTP (without AI client)
curl -X POST http://localhost:9700/mcp -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"gdd_add_players","arguments":{"count":1}}}'

GDD uses standard JSON-RPC 2.0 — works with curl, Python, Node.js, or any HTTP client.


Features

  • Multi-device — Run N isolated Chromium instances with 22 device presets (phones, tablets, desktops)
  • AI-native — 36 MCP tools for Claude Code, Cursor, or any MCP-compatible client
  • Cross-platform — Windows GUI with live video wall + headed/headless on Linux & macOS
  • Full interaction — Navigate, tap, type, swipe, scroll, hover, handle dialogs, take screenshots
  • Device emulation — Screen size, DPR, touch, user agent, geolocation, timezone, language
  • Network control — Simulate 4G, Fast 3G, Slow 3G, or offline per browser
  • Diagnostics — Console errors, network traffic, performance metrics, push notifications
  • Error beacon — Every tool response warns about JS errors across all browsers automatically
  • Self-updating — Built-in version check and one-command update

MCP Tools (36)

Player Management

ToolDescription
gdd_add_playersAdd N browser instances with optional device preset
gdd_remove_playerRemove a browser instance by player ID
gdd_list_windowsList all active browsers with current state

Navigation

ToolDescription
gdd_navigateNavigate to a URL
gdd_waitWait for a CSS selector to appear (with timeout)
gdd_reloadReload page (hard=true bypasses cache)
gdd_backNavigate back
gdd_forwardNavigate forward

Interaction

ToolDescription
gdd_tapTap element by CSS selector or coordinates
gdd_swipeSwipe gesture (up/down/left/right)
gdd_scrollScroll page or element
gdd_typeType text into input fields
gdd_hoverHover over element
gdd_selectSelect option from <select> dropdown
gdd_dialogHandle JS alert/confirm/prompt dialogs

Reading & Screenshots

ToolDescription
gdd_readRead text content of an element
gdd_read_allRead text from all matching elements
gdd_screenshotCapture JPEG screenshot at CSS pixel resolution

Emulation

ToolDescription
gdd_set_deviceSet device preset (22 devices: phones, tablets, desktops)
gdd_set_viewportSet custom viewport dimensions
gdd_set_locationSet geolocation, timezone, and locale
gdd_set_networkSet network conditions (4G, 3G, offline)
gdd_set_languageSet browser language

State & Diagnostics

ToolDescription
gdd_get_stateBrowser state: URL, title, device, auth status
gdd_get_consoleConsole output and uncaught exceptions
gdd_get_networkNetwork requests with timing and status
gdd_get_notificationsReceived push notifications
gdd_get_performancePerformance metrics (JS heap, DOM nodes, FPS)
gdd_clear_logsClear console and/or network logs

Auth & Execution

ToolDescription
gdd_quick_authAuto-register and login with generated credentials
gdd_execute_jsExecute JavaScript and return result

Browser Storage

ToolDescription
gdd_storageRead/write/clear localStorage/sessionStorage
gdd_cookiesRead or clear browser cookies

Help & Updates

ToolDescription
gdd_get_manualFull GDD manual for AI self-learning
gdd_check_updateCheck for newer versions
gdd_updateDownload and install update (restarts GDD)

Device Presets (22)

Phones (11)

DeviceResolutionScaleTouch
iPhone SE375 x 6672.0xYes
iPhone 14390 x 8443.0xYes
iPhone 15 Pro393 x 8523.0xYes
iPhone 15 Pro Max430 x 9323.0xYes
iPhone 16 Pro402 x 8743.0xYes
iPhone 16 Pro Max440 x 9563.0xYes
Pixel 9412 x 9152.625xYes
Pixel 9 Pro412 x 9152.625xYes
Galaxy S24360 x 7803.0xYes
Galaxy S24 Ultra412 x 9153.0xYes
OnePlus 12412 x 9153.5xYes

Tablets (6)

DeviceResolutionScale
iPad Mini744 x 11332.0x
iPad Air820 x 11802.0x
iPad Pro 11"834 x 11942.0x
iPad Pro 13"1024 x 13662.0x
Galaxy Tab S9800 x 12802.0x
Pixel Tablet800 x 12802.0x

Desktops (5)

DeviceResolutionScale
Laptop HD1366 x 7681.0x
Laptop HiDPI1440 x 9002.0x
Desktop 1080p1920 x 10801.0x
Desktop 1440p2560 x 14401.0x
Desktop 4K3840 x 21602.0x

Architecture

Client (AI agent / curl / script)
         │ POST /mcp (JSON-RPC 2.0)
         ▼
    McpServer (:9700)
    Streamable HTTP + SSE
         │
         ▼
    McpToolRegistry (36 tools)
    Player · Navigation · Interaction · Read
    Emulation · Auth · State · Diagnostics
         │
         ▼
    IPlayerManager
    MainViewModel (WPF) / HeadlessPlayerManager
         │
         ▼
    IBrowserEngine Instances
    WebView2 (Win GUI)  |  Playwright (Headless/Headed)
    Each: own profile, CDP session, emulation

Three Modes

Windows GUIHeaded (default)Headless
BinaryGDD.exeGDD.HeadlessGDD.Headless --headless
EngineWebView2PlaywrightPlaywright
UIWPF video wallVisible Chromium windowsHTTP API only
PlatformsWindowsWindows, Linux, macOSWindows, Linux, macOS

Tech Stack

LayerTechnology
Runtime.NET 8.0 (self-contained)
UI (Windows)WPF + CommunityToolkit.Mvvm
Browser (GUI)Microsoft WebView2
Browser (Headless)Microsoft Playwright
ProtocolMCP (Model Context Protocol)
Browser ControlChrome DevTools Protocol (CDP)
LoggingSerilog
Project Structure
BrowserXn.sln
├── src/
│   ├── GDD.Core/              ← Shared library (net8.0)
│   │   ├── Abstractions/      ← IBrowserEngine, IPlayerManager, ...
│   │   ├── Mcp/               ← MCP server, tools, protocol
│   │   ├── Models/            ← Device, Location, Network presets
│   │   ├── Services/          ← CDP, Emulation, Monitoring services
│   │   └── Collections/       ← RingBuffer
│   ├── BrowserXn/             ← Windows GUI (WPF + WebView2)
│   │   ├── Engines/           ← WebView2ControlAdapter
│   │   ├── ViewModels/        ← MVVM (MainViewModel : IPlayerManager)
│   │   ├── Views/             ← XAML + VideoWallPanel
│   │   └── ...
│   └── GDD.Headless/          ← Cross-platform CLI (Playwright)
│       ├── Engines/           ← PlaywrightEngine
│       ├── Platform/          ← HeadlessPlayerManager
│       └── Scripts/           ← mcp-proxy.sh, mcp-proxy.ps1
└── .github/workflows/         ← CI/CD (5 platform targets + auto-release)

Configuration

appsettings.json next to the executable:

{
  "GDD": {
    "FrontendUrl": "about:blank",
    "BackendUrl": "http://localhost:8080/api/v1",
    "BotToken": "",
    "McpPort": 9700,
    "DataFolderRoot": ""
  }
}
KeyDescriptionDefault
FrontendUrlDefault URL for new browsersabout:blank
BackendUrlBackend API for auth servicehttp://localhost:8080/api/v1
BotTokenTelegram bot token (for TG testing)
McpPortMCP server port (auto-fallback +1..+9)9700
DataFolderRootBrowser profile storage root%LOCALAPPDATA%\GDD\Profiles (Win), ~/.local/share/GDD/Profiles (Linux/macOS)
HeadedVisible browser windowstrue (override with --headless)
Building from Source

Requires .NET 8 SDK.

# Windows GUI (requires Windows 10/11 + WebView2)
dotnet publish src/BrowserXn/BrowserXn.csproj -c Release -p:PublishSingleFile=true -o ./publish/win-gui

# Cross-platform headless
dotnet publish src/GDD.Headless/GDD.Headless.csproj -c Release -r linux-x64 --self-contained -o ./publish/linux-x64
dotnet publish src/GDD.Headless/GDD.Headless.csproj -c Release -r osx-arm64 --self-contained -o ./publish/osx-arm64
dotnet publish src/GDD.Headless/GDD.Headless.csproj -c Release -r win-x64 --self-contained -o ./publish/win-x64

Chromium installs automatically on first run.


Documentation

License

imVS©, free for personal use.

Source Available — Non-Commercial. Free for personal use, education, and research. Commercial use requires a paid license. See LICENSE for full terms.

Commercial licensing: [email protected]

Related Servers