Pre-launch — Gluecron is in final validation. Public signups and git hosting for non-owner users open after launch review.
CodeIssuesPull RequestsActionsSecurityInsightsSettings
✨ AI
More
claude/adoring-hopper-5x74bqclaude/affectionate-feynman-ykrf1hclaude/architecture-audit-design-wxprenclaude/build-status-update-3MXsfclaude/charming-meitner-mllb5rclaude/compare-gate-gluecron-s4mFQclaude/confident-faraday-tikcwbclaude/continue-work-XMTlIclaude/crontech-gluecron-deploy-7MIECclaude/crontech-platform-setup-SeKfwclaude/design-2026claude/ecstatic-ptolemy-jMdigclaude/enhance-github-integration-QNHdGclaude/fix-aa-loop-issue-PonMQclaude/fix-actions-and-processclaude/fix-desktop-errors-XqoW8claude/fix-red-workflowsclaude/fix-website-access-6FKJNclaude/gatetest-integration-hardeningclaude/github-audit-improvements-bDFr9claude/gluecron-launch-status-FoMRlclaude/hopeful-lamport-olfCTclaude/issue-to-pr-and-protectionsclaude/jolly-heisenberg-2sg1Qclaude/launch-preparation-QmTb6claude/new-session-xk1l7claude/plan-platform-architecture-kkN4yclaude/platform-analysis-roadmap-1nUGLclaude/platform-launch-assessment-8dWV8claude/polish-platform-release-AeDrUclaude/resume-previous-work-KzyLwclaude/review-crontech-handoff-qYEVqclaude/review-project-completeness-lHhS2claude/review-readme-docs-ulqPKclaude/serene-edison-rj87weclaude/setup-multi-repo-dev-BCwNQclaude/ship-fixes-and-tests-Jvz1cclaude/site-audit-competitive-pctlwgclaude/site-migration-vercel-XstpKclaude/standalone-product-repos-XHFTDcopilot/feat-smart-empty-states-keyboard-first-enhancementcopilot/feat-smart-morning-digest-review-context-restorecopilot/fix-and-process-workflowscopilot/update-ai-powered-code-reviewfeat/debt-mapfeat/push-policy-codeowners-hardeningfeat/smart-digest-contextfeat/stage-impactfeat/t1-secret-migrationfeat/u-polishfeat/w-self-hostfeat/w2-claude-configfix/agent-journey-orphan-sweepgatetest/auto-fix-1776586424172gatetest/auto-fix-1776586534814gatetest/auto-fix-1776590685143gatetest/auto-fix-1776590808199mainops/redeploy-retriggerstyle/dxt-cta-themeworktree-agent-a3377aad30d55da26worktree-agent-a7ef607b7ee1d6c74
migrate-to-gluecron.ps15.0 KB · 115 lines
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# =============================================================================
# Migrate gluecron to itself — Phase B
# Runs from Windows / PowerShell. Mirrors the GitHub repo onto gluecron.com,
# wires git remote, prints the Claude Code MCP config snippet.
# =============================================================================
#
# Prerequisites:
#   - gluecron.com responds 200 on /healthz
#   - ccantynz-alt account registered on gluecron.com (becomes site admin
#     automatically via SITE_ADMIN_USERNAME env var)
#   - You have a Personal Access Token at /settings/tokens on gluecron.com
#
# Run: .\scripts\migrate-to-gluecron.ps1
# =============================================================================

$ErrorActionPreference = "Stop"

$GLUECRON = "https://gluecron.com"
$GH_OWNER = "ccantynz-alt"
$GH_REPO  = "Gluecron.com"
$GLUECRON_OWNER = "ccantynz-alt"

Write-Host "==> Phase B: Migrate gluecron to itself" -ForegroundColor Cyan
Write-Host ""

# ─── 1. Verify gluecron.com is live ─────────────────────────────────────────
Write-Host "[1/5] Verifying gluecron.com is live..."
try {
  $health = Invoke-RestMethod -Uri "$GLUECRON/healthz" -TimeoutSec 10
  Write-Host "  ✓ gluecron.com /healthz responded" -ForegroundColor Green
} catch {
  Write-Host "  ✗ gluecron.com is not responding. Fix Phase A first." -ForegroundColor Red
  exit 1
}

# ─── 2. PAT prompt ──────────────────────────────────────────────────────────
Write-Host "[2/5] Personal Access Token..."
Write-Host "  Open in browser: $GLUECRON/settings/tokens" -ForegroundColor Yellow
Write-Host "  Generate a token with full scope, copy it, paste below." -ForegroundColor Yellow
$secureToken = Read-Host "  PAT" -AsSecureString
$ptr = [Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureToken)
$PAT = [Runtime.InteropServices.Marshal]::PtrToStringAuto($ptr)
[Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ptr) | Out-Null
if (-not $PAT -or $PAT.Length -lt 10) {
  Write-Host "  ✗ Empty / suspicious PAT, aborting." -ForegroundColor Red
  exit 1
}

# Verify PAT works
try {
  $me = Invoke-RestMethod -Uri "$GLUECRON/api/v2/me" -Headers @{ Authorization = "Bearer $PAT" } -TimeoutSec 10
  Write-Host "  ✓ Authenticated as: $($me.username)" -ForegroundColor Green
} catch {
  Write-Host "  ✗ PAT failed auth. Verify the token at $GLUECRON/settings/tokens." -ForegroundColor Red
  exit 1
}

# ─── 3. Trigger import from GitHub ──────────────────────────────────────────
Write-Host "[3/5] Importing $GH_OWNER/$GH_REPO from GitHub..."
$importBody = @{
  source = "github"
  owner  = $GH_OWNER
  repo   = $GH_REPO
} | ConvertTo-Json
try {
  $imported = Invoke-RestMethod -Method POST -Uri "$GLUECRON/import/github/repo" `
    -Headers @{ Authorization = "Bearer $PAT" } `
    -ContentType "application/json" `
    -Body $importBody -TimeoutSec 120
  Write-Host "  ✓ Repo mirrored to $GLUECRON/$GLUECRON_OWNER/$GH_REPO" -ForegroundColor Green
} catch {
  $resp = $_.Exception.Response
  if ($resp -and $resp.StatusCode -eq 409) {
    Write-Host "  ✓ Already imported (409 conflict is fine)" -ForegroundColor Yellow
  } else {
    Write-Host "  ✗ Import failed: $_" -ForegroundColor Red
    Write-Host "  You can also import manually at $GLUECRON/import"
    exit 1
  }
}

# ─── 4. Output git remote command ───────────────────────────────────────────
Write-Host "[4/5] Git remote setup..."
$remoteUrl = "$GLUECRON/$GLUECRON_OWNER/$GH_REPO.git"
Write-Host "  In a clone of the repo, run:" -ForegroundColor Yellow
Write-Host "    git remote add gluecron $remoteUrl"
Write-Host "    git push -u gluecron main"
Write-Host ""

# ─── 5. Output MCP config ───────────────────────────────────────────────────
Write-Host "[5/5] Claude Code / Cursor MCP config..."
Write-Host "  Add this to your Claude Desktop config (claude_desktop_config.json):" -ForegroundColor Yellow
Write-Host ""
$mcpConfig = @"
{
  "mcpServers": {
    "gluecron": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "$GLUECRON/mcp"],
      "env": {
        "GLUECRON_TOKEN": "$PAT"
      }
    }
  }
}
"@
Write-Host $mcpConfig -ForegroundColor White

Write-Host ""
Write-Host "==> Phase B foundation complete." -ForegroundColor Green
Write-Host "    Repo mirrored. From now on you can git push to either remote."
Write-Host "    Phase C (cut the GitHub cord) is unlocked when:"
Write-Host "      - You've pushed to gluecron with no errors for ~1 week"
Write-Host "      - You've moved active issues/PRs over"
Write-Host "      - The .gluecron/workflows/deploy.yml runs cleanly on push"