New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

gg-deploy

Package Overview
Dependencies
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

gg-deploy

Free hosting deserves free tooling. Domain → GitHub Pages in 60 seconds.

latest
Source
npmnpm
Version
2.5.1
Version published
Maintainers
1
Created
Source

GG Deploy Banner

gg-deploy

Free hosting deserves free tooling. Domain → GitHub Pages in 60 seconds.

gg-deploy is my latest: domain deployment automated, built in a weekend, open source, free forever. It's not going to save the world, but it might save you an hour of DNS configuration.

One command. One click. One prompt. Works via CLI, desktop app, web UI, or AI assistant (MCP).

Quick Start

npx gg-deploy ui
# Opens http://localhost:3847

Or via CLI:

npx gg-deploy plan example.com user/repo    # Preview (safe)
npx gg-deploy apply example.com user/repo   # Deploy
npx gg-deploy status example.com user/repo  # Health check

Why I Built This

GitHub Pages is free. Domain registration is cheap. But connecting them? That's still 15 minutes of DNS googling, A-record guessing, and "did I break my email forwarding again?" anxiety.

I wanted deployment to be as fast as the hosting is free (for public repos). So I built gg-deploy over a weekend; a CLI for power users, web UI for everyone else, MCP for AI agents, and desktop apps because why not.

AGPL-licensed because good tools should stay free.

Screenshots

CLI

CLI Help CLI List CLI Push

Desktop App

Desktop Main Desktop Settings

Web UI

Web UI Main Web UI Settings

Desktop App

Download from GitHub Releases:

  • macOS: .dmg (Apple Silicon or Intel)
  • Windows: .msi installer
  • Linux: .AppImage or .deb

macOS First Run

The app isn't signed with an Apple certificate. On first launch:

Option 1: Right-click method

  • Right-click (or Control+click) on GG Deploy
  • Click "Open" from the menu
  • Click "Open" in the dialog

Option 2: Terminal (one command)

xattr -cr "/Applications/GG Deploy.app"

This is a one-time step—the app runs normally after.

Windows First Run

Click More infoRun anyway on the SmartScreen prompt.

Linux

Make executable and run:

chmod +x GG.Deploy_*.AppImage
./GG.Deploy_*.AppImage

Requirements

  • Node.js 18+ — Check with node --version
  • DNS Provider account — GoDaddy, Cloudflare, or Namecheap
  • GitHub account with a Personal Access Token
  • Domain managed by your DNS provider
  • GitHub repo with your site content (index.html or built site)

Provider Comparison

ProviderEase of SetupAPI AccessNotes
CloudflareEasyFree for allRecommended for new users
GoDaddyMediumRequires 10+ domainsProduction key required
NamecheapMediumRequires IP whitelistMust whitelist your IP

Setup

Credentials are saved once to ~/.gg-deploy/config.json and work across all projects.

npx gg-deploy ui

The setup wizard walks you through:

  • Creating a GoDaddy API key
  • Creating a GitHub token
  • Testing and saving credentials

Option 2: Manual Config

Create ~/.gg-deploy/config.json with your preferred DNS provider:

Cloudflare (Recommended):

{
  "dnsProvider": "cloudflare",
  "cloudflare": {
    "apiToken": "YOUR_CLOUDFLARE_TOKEN"
  },
  "github": {
    "token": "ghp_YOUR_TOKEN"
  }
}

GoDaddy:

{
  "dnsProvider": "godaddy",
  "godaddy": {
    "apiKey": "YOUR_KEY",
    "apiSecret": "YOUR_SECRET",
    "environment": "production"
  },
  "github": {
    "token": "ghp_YOUR_TOKEN"
  }
}

Namecheap:

{
  "dnsProvider": "namecheap",
  "namecheap": {
    "apiUser": "YOUR_USERNAME",
    "apiKey": "YOUR_API_KEY",
    "clientIP": "YOUR_IP_ADDRESS"
  },
  "github": {
    "token": "ghp_YOUR_TOKEN"
  }
}

Getting Credentials

Cloudflare API Token (Recommended):

GoDaddy API Key:

  • Go to https://developer.godaddy.com/keys
  • Click "Create New API Key"
  • Select Production (not OTE/Test)
  • Copy Key and Secret immediately (secret shown only once)
  • Note: Requires account with 10+ domains

Namecheap API:

GitHub Token:

Web Interface

Main Screen

ElementDescription
Domain fieldYour GoDaddy domain (e.g., example.com)
Repository fieldGitHub repo as username/repo
Deploy buttonStarts the deployment process
Status badgesShow GoDaddy/GitHub connection status
Settings gearOpens credential management

Status Indicators

ColorMeaning
Green (glowing)Connected and verified
Yellow (pulsing)Testing connection...
RedError (hover for details)
GrayNot tested yet

Hover over badges for detailed status. Click the refresh button to re-test connections.

Settings Screen

  • API Key / Secret / Token fields — Pre-filled with saved values (masked)
  • Eye icon — Click to reveal value for copying
  • Status indicators — Show live verification status
  • Test button — Re-verify API connections
  • Update Settings — Save changes

Deployment Flow

  • Enter domain and repo
  • Click Deploy
  • Watch real-time progress:
    • Verify domain ownership
    • Check repository access
    • Configure DNS records
    • Add CNAME file
    • Enable GitHub Pages
    • Provision SSL certificate
  • Get your live URL

CLI Commands

CommandDescriptionSafeGit Required
plan <domain> <repo>Preview changesYesNo
apply <domain> <repo>Execute deploymentNoNo
status <domain> <repo>Check healthYesNo
listShow all tracked deploymentsYesNo
push [domain] [message]Upload local file changesNoNo
forget <domain>Remove from trackingYesNo
uiLaunch web interfaceYesNo
mcp-serveStart MCP serverYesNo
updateCheck for updatesYesNo
describeOutput AI-friendly tool schemaYesNo

Add --output json for machine-readable output.

Git-Free File Updates

The push command uploads your local files directly to GitHub via API—no git knowledge required:

# From your project directory (auto-detects deployment)
gg-deploy push "Updated homepage"

# Or specify the domain explicitly
gg-deploy push myblog.com "Fixed typo in about page"

How it works:

  • Scans your local directory for changed files
  • Compares SHA hashes with GitHub
  • Uploads only changed files via GitHub Contents API
  • Files >1MB use Git Data API for reliability
  • Files >100MB are skipped (GitHub limit)

Respects .gitignore and .gg-ignore — node_modules, .env, and other patterns are automatically excluded.

Deployment Tracking

After apply succeeds, gg-deploy remembers your deployment:

# List all tracked deployments
gg-deploy list

# Output:
# ╭─ Tracked Deployments ─────────────────────────────────────╮
# │  myblog.com → user/blog                                   │
# │  └─ /Users/me/projects/myblog                             │
# │     Last activity: 2 hours ago                            │
# ╰───────────────────────────────────────────────────────────╯

To stop tracking (doesn't affect live site):

gg-deploy forget myblog.com

Note: forget only removes local tracking. Your DNS records and GitHub Pages remain active. See the output for cleanup instructions.

AI Agent Integration (MCP)

gg-deploy includes a full MCP (Model Context Protocol) server, enabling AI assistants to deploy and manage sites directly.

Compatible with:

  • Claude Desktop
  • Claude Code
  • Cursor
  • Windsurf
  • N8N (workflow automation)
  • Any MCP-compatible client

Setup

Claude Desktop / Claude Code — Add to config:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "gg-deploy": {
      "command": "npx",
      "args": ["-y", "gg-deploy", "mcp-serve"]
    }
  }
}

Cursor / Windsurf — Add to MCP settings with the same configuration.

N8N — Use the MCP node with command: npx -y gg-deploy mcp-serve

Available MCP Tools

ToolDescriptionSafe
deploy_site_planPreview deployment changesYes
deploy_site_applyExecute DNS + GitHub Pages deploymentNo
deploy_site_statusCheck deployment healthYes
list_deploymentsList all tracked deploymentsYes
push_changesUpload local file changesNo

Example Prompts

  • "Deploy myblog.com to user/repo"
  • "Check the status of example.com"
  • "What deployments do I have?"
  • "Push my latest changes to the blog"

AI Discovery

Run gg-deploy describe to get a comprehensive JSON schema with:

  • Command descriptions and intents
  • Example inputs and outputs
  • Safety indicators (safe/requires confirmation)
  • Recommended usage flows

Troubleshooting

Node.js Issues

ProblemSolution
node: command not foundInstall Node.js from https://nodejs.org
unsupported engineUpgrade to Node.js 18+
EACCES permission deniedDon't use sudo. Fix npm permissions or use nvm

GoDaddy API Issues

ProblemSolution
401 UnauthorizedWrong API key/secret. Regenerate at developer.godaddy.com
403 ForbiddenAPI key is for OTE (test). Create a Production key
404 Not FoundDomain not in your GoDaddy account
422 InvalidDomain locked or has pending transfers
403 Access deniedAccount needs 10+ domains for API. Use Cloudflare instead
Red status dotHover for error. Usually auth issue

Cloudflare API Issues

ProblemSolution
401 UnauthorizedInvalid API token. Regenerate at dash.cloudflare.com
403 ForbiddenToken doesn't have Edit DNS permission. Create new token
Zone not foundDomain not in your Cloudflare account or wrong zone
Records not applyingEnsure proxied: false for GitHub Pages (handled automatically)

Namecheap API Issues

ProblemSolution
1011150 IP not whitelistedAdd your IP at ap.www.namecheap.com/settings/tools/apiaccess
500000 Rate limitedWait a few minutes, API has rate limits
Authentication failedCheck apiUser and apiKey are correct
Domain not foundDomain must be active in your Namecheap account
Records overwrittenNamecheap API replaces ALL records. Backup is created automatically

GitHub API Issues

ProblemSolution
401 Bad credentialsToken expired or invalid. Generate new one
403 ForbiddenToken missing repo scope. Regenerate with correct scope
404 Not FoundRepo doesn't exist or token can't access it
Private repo failsNeed GitHub Pro for private repo Pages

DNS Issues

ProblemSolution
Site not loadingWait 10-60 min for DNS propagation
Wrong IP showingClear DNS cache: sudo dscacheutil -flushcache (Mac)
SSL not workingGitHub needs DNS to resolve first. Check Pages settings

Config Issues

ProblemSolution
"Not configured"Check ~/.gg-deploy/config.json exists
Can't find configIt's in your home directory: ls -la ~/.gg-deploy/
Permission deniedRun chmod 600 ~/.gg-deploy/config.json

UI Issues

ProblemSolution
Port 3847 in useKill existing: lsof -i :3847 then kill <PID>
Blank pageClear browser cache or try incognito
Eye icon not workingClick reveals value if credentials are saved

Common Fixes

# Check if config exists
cat ~/.gg-deploy/config.json

# Verify Node version
node --version  # Should be 18+

# Test GoDaddy API manually
curl -H "Authorization: sso-key YOUR_KEY:YOUR_SECRET" \
  https://api.godaddy.com/v1/domains

# Test GitHub API manually
curl -H "Authorization: Bearer ghp_YOUR_TOKEN" \
  https://api.github.com/user

How It Works

  • DNS — Sets A records to GitHub IPs (185.199.108-111.153) + www CNAME
  • CNAME — Creates CNAME file in repo with your domain
  • Pages — Enables GitHub Pages on main branch
  • SSL — GitHub auto-provisions Let's Encrypt certificate

Total time: ~60 seconds. DNS propagation: 10-60 minutes.

Security

  • Credentials stored in ~/.gg-deploy/config.json (permission 600)
  • Never committed to git
  • Eye icon reveals values only locally
  • API calls made directly to GoDaddy/GitHub (no proxy)

Limitations

  • Supports GoDaddy, Cloudflare, and Namecheap (other providers coming)
  • GoDaddy requires 10+ domains for API access
  • Namecheap requires IP whitelist configuration
  • Public repos or GitHub Pro required for Pages
  • Only www subdomain supported
  • One domain per deployment

License

AGPL-3.0 — Free to use, modify, and distribute. Forks must remain open source.

About the Builder

Hola. I'm Abe Diaz. By day, I'm Sr. Manager of Disaster Relief at Amazon, leading a team that uses AI and logistics to deliver 26+ million relief items and response technology across 200+ disasters worldwide. On weekends, I build artisanal developer tools like this :-P

Other Open Source Projects

ProjectDescription
gemini-deep-researchCLI for Gemini's Deep Research Agent
aipm-resume-analyzerResume analysis against AI PM frameworks
project-kickoffScaffold AI production-ready projects

Keywords

cli

FAQs

Package last updated on 29 Dec 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts